Task 002: add shared domain contracts

This commit is contained in:
2026-05-21 17:45:00 +03:00
parent d42f0c4392
commit a0ae06adfa
31 changed files with 4043 additions and 27 deletions
@@ -0,0 +1,83 @@
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]