32 lines
1.5 KiB
Python
32 lines
1.5 KiB
Python
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)
|