from __future__ import annotations from .shared import BaseModel, Field, Literal, Optional class PMOProcessTextRequest(BaseModel): message_text: str = Field(..., min_length=1, max_length=4000) sender: Optional[str] = Field(default=None, max_length=120) source_message_id: Optional[str] = Field(default=None, max_length=128) project_id: Optional[int] = Field(default=None) class PMOCadenceRunRequest(BaseModel): cadence_type: str = Field(..., min_length=1, max_length=32) project_id: Optional[int] = Field(default=None) class PMOResumeWorkItemRequest(BaseModel): action: Literal["continue", "commit", "refresh", "cancel"] = Field(default="continue") project_id: Optional[int] = Field(default=None) source_message_id: Optional[str] = Field(default=None, max_length=128) class PMOWorkItemDecisionRequest(BaseModel): action: Literal["approve", "reject"] = Field(..., description="审批动作:approve=继续执行,reject=标记失效") project_id: Optional[int] = Field(default=None) source_message_id: Optional[str] = Field(default=None, max_length=128) reason: Optional[str] = Field(default=None, max_length=500) class PMODraftDecisionRequest(BaseModel): action: Literal["confirm", "revise", "cancel"] = Field(..., description="草稿动作:confirm/revise/cancel") revision_note: Optional[str] = Field(default=None, max_length=500) source_message_id: Optional[str] = Field(default=None, max_length=128) draft_version: Optional[int] = Field(default=None, ge=1)