generated from coulomb/repo-seed
45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
import uuid
|
|
from typing import Literal
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from api.services.reconciliation import ReconciliationClass
|
|
|
|
|
|
TargetType = Literal["workstream", "task"]
|
|
|
|
|
|
class StateChangeRequest(BaseModel):
|
|
target_type: TargetType
|
|
target_id: uuid.UUID
|
|
target_status: str
|
|
actor: str = "dashboard"
|
|
intent: str | None = None
|
|
expected_current_status: str | None = None
|
|
file_backed: bool | None = None
|
|
archived_file: bool | None = None
|
|
task_linked: bool | None = None
|
|
tasks_terminal: bool | None = None
|
|
blocking_reason: str | None = None
|
|
apply: bool = False
|
|
|
|
|
|
class StateChangeResponse(BaseModel):
|
|
target_type: TargetType
|
|
target_id: uuid.UUID
|
|
actor: str
|
|
intent: str | None = None
|
|
current_status: str
|
|
target_status: str
|
|
file_backed: bool
|
|
archived_file: bool
|
|
task_linked: bool | None = None
|
|
tasks_terminal: bool | None = None
|
|
reconciliation_class: ReconciliationClass
|
|
reason: str
|
|
follow_up: str
|
|
write_through_result: Literal["not_attempted", "applied", "not_applicable"] = "not_attempted"
|
|
workplan_path: str | None = None
|
|
reconciliation_record_id: uuid.UUID | None = None
|
|
conflict: bool = False
|