from __future__ import annotations from .enums import ArticleWorkflowStatus ARTICLE_WORKFLOW_STATUSES: tuple[ArticleWorkflowStatus, ...] = ( ArticleWorkflowStatus.ARTICLE_BRIEF_CREATED, ArticleWorkflowStatus.BOUNDARY_QUESTIONS_GENERATED, ArticleWorkflowStatus.BOUNDARY_ANSWERS_SUBMITTED, ArticleWorkflowStatus.PLAN_GENERATED, ArticleWorkflowStatus.PLAN_REVIEW_REQUIRED, ArticleWorkflowStatus.PLAN_REVISION_REQUIRED, ArticleWorkflowStatus.RESEARCH_RUNNING, ArticleWorkflowStatus.EVIDENCE_MATRIX_READY, ArticleWorkflowStatus.PARALLEL_PRODUCTION_RUNNING, ArticleWorkflowStatus.DRAFT_ASSEMBLED, ArticleWorkflowStatus.SEO_AND_LANGUAGE_REVIEW_READY, ArticleWorkflowStatus.FINAL_REVIEW_REQUIRED, ArticleWorkflowStatus.FINAL_REVISION_REQUIRED, ArticleWorkflowStatus.PUBLISH_DRY_RUN_REQUIRED, ArticleWorkflowStatus.PUBLISH_COMMIT_READY, ArticleWorkflowStatus.PUBLISH_COMMIT_CREATED, ) ARTICLE_WORKFLOW_TRANSITIONS: dict[ ArticleWorkflowStatus, tuple[ArticleWorkflowStatus, ...] ] = { ArticleWorkflowStatus.ARTICLE_BRIEF_CREATED: ( ArticleWorkflowStatus.BOUNDARY_QUESTIONS_GENERATED, ), ArticleWorkflowStatus.BOUNDARY_QUESTIONS_GENERATED: ( ArticleWorkflowStatus.BOUNDARY_ANSWERS_SUBMITTED, ), ArticleWorkflowStatus.BOUNDARY_ANSWERS_SUBMITTED: ( ArticleWorkflowStatus.PLAN_GENERATED, ), ArticleWorkflowStatus.PLAN_GENERATED: ( ArticleWorkflowStatus.PLAN_REVIEW_REQUIRED, ), ArticleWorkflowStatus.PLAN_REVIEW_REQUIRED: ( ArticleWorkflowStatus.PLAN_REVISION_REQUIRED, ArticleWorkflowStatus.RESEARCH_RUNNING, ), ArticleWorkflowStatus.PLAN_REVISION_REQUIRED: ( ArticleWorkflowStatus.PLAN_GENERATED, ), ArticleWorkflowStatus.RESEARCH_RUNNING: ( ArticleWorkflowStatus.EVIDENCE_MATRIX_READY, ), ArticleWorkflowStatus.EVIDENCE_MATRIX_READY: ( ArticleWorkflowStatus.PARALLEL_PRODUCTION_RUNNING, ), ArticleWorkflowStatus.PARALLEL_PRODUCTION_RUNNING: ( ArticleWorkflowStatus.DRAFT_ASSEMBLED, ), ArticleWorkflowStatus.DRAFT_ASSEMBLED: ( ArticleWorkflowStatus.SEO_AND_LANGUAGE_REVIEW_READY, ), ArticleWorkflowStatus.SEO_AND_LANGUAGE_REVIEW_READY: ( ArticleWorkflowStatus.FINAL_REVIEW_REQUIRED, ), ArticleWorkflowStatus.FINAL_REVIEW_REQUIRED: ( ArticleWorkflowStatus.FINAL_REVISION_REQUIRED, ArticleWorkflowStatus.PUBLISH_DRY_RUN_REQUIRED, ), ArticleWorkflowStatus.FINAL_REVISION_REQUIRED: ( ArticleWorkflowStatus.DRAFT_ASSEMBLED, ), ArticleWorkflowStatus.PUBLISH_DRY_RUN_REQUIRED: ( ArticleWorkflowStatus.PUBLISH_COMMIT_READY, ), ArticleWorkflowStatus.PUBLISH_COMMIT_READY: ( ArticleWorkflowStatus.PUBLISH_COMMIT_CREATED, ), ArticleWorkflowStatus.PUBLISH_COMMIT_CREATED: (), } def next_workflow_statuses( status: ArticleWorkflowStatus, ) -> tuple[ArticleWorkflowStatus, ...]: return ARTICLE_WORKFLOW_TRANSITIONS[status]