BE-PR-008: add Proposal Accept tracking fields (source_proposal_id, source_essential_id)

- Add source_proposal_id and source_essential_id FK columns to Task model
- Populate tracking fields during Proposal Accept task generation
- Add generated_tasks relationship on Proposal model for reverse lookup
- Expose source_proposal_id/source_essential_id in TaskResponse schema
- Add GeneratedTaskBrief schema and include generated_tasks in ProposalDetailResponse
- Proposal detail endpoint now returns generated story tasks with status
This commit is contained in:
zhi
2026-03-30 10:46:20 +00:00
parent cb0be05246
commit c84884fe64
4 changed files with 58 additions and 1 deletions

View File

@@ -93,6 +93,9 @@ class TaskResponse(TaskBase):
resolution_summary: Optional[str] = None
positions: Optional[str] = None
pending_matters: Optional[str] = None
# BE-PR-008: Proposal Accept tracking
source_proposal_id: Optional[int] = None
source_essential_id: Optional[int] = None
created_at: datetime
updated_at: Optional[datetime] = None
@@ -344,10 +347,22 @@ class EssentialResponse(EssentialBase):
from_attributes = True
class GeneratedTaskBrief(BaseModel):
"""Brief info about a story task generated from Proposal Accept."""
task_id: int
task_code: Optional[str] = None
task_type: str
task_subtype: Optional[str] = None
title: str
status: Optional[str] = None
source_essential_id: Optional[int] = None
class ProposalDetailResponse(ProposalResponse):
"""Extended Proposal response that embeds its Essential list."""
"""Extended Proposal response that embeds its Essential list and generated tasks."""
essentials: List[EssentialResponse] = []
generated_tasks: List[GeneratedTaskBrief] = []
class Config:
from_attributes = True