feat: switch backend indexing to code-first identifiers
This commit is contained in:
@@ -43,9 +43,7 @@ class TaskBase(BaseModel):
|
||||
|
||||
|
||||
class TaskCreate(TaskBase):
|
||||
project_id: Optional[int] = None
|
||||
project_code: Optional[str] = None
|
||||
milestone_id: Optional[int] = None
|
||||
milestone_code: Optional[str] = None
|
||||
reporter_id: Optional[int] = None
|
||||
assignee_id: Optional[int] = None
|
||||
@@ -75,15 +73,12 @@ class TaskUpdate(BaseModel):
|
||||
|
||||
|
||||
class TaskResponse(TaskBase):
|
||||
id: int
|
||||
status: TaskStatusEnum
|
||||
task_code: Optional[str] = None
|
||||
code: Optional[str] = None
|
||||
type: Optional[str] = None
|
||||
due_date: Optional[datetime] = None
|
||||
project_id: int
|
||||
project_code: Optional[str] = None
|
||||
milestone_id: int
|
||||
milestone_code: Optional[str] = None
|
||||
reporter_id: int
|
||||
assignee_id: Optional[int] = None
|
||||
@@ -94,8 +89,8 @@ class TaskResponse(TaskBase):
|
||||
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
|
||||
source_proposal_code: Optional[str] = None
|
||||
source_essential_code: Optional[str] = None
|
||||
created_at: datetime
|
||||
updated_at: Optional[datetime] = None
|
||||
|
||||
@@ -259,9 +254,9 @@ class MilestoneUpdate(BaseModel):
|
||||
|
||||
|
||||
class MilestoneResponse(MilestoneBase):
|
||||
id: int
|
||||
milestone_code: Optional[str] = None
|
||||
project_id: int
|
||||
code: Optional[str] = None
|
||||
project_code: Optional[str] = None
|
||||
created_by_id: Optional[int] = None
|
||||
started_at: Optional[datetime] = None
|
||||
created_at: datetime
|
||||
@@ -285,7 +280,7 @@ class ProposalBase(BaseModel):
|
||||
|
||||
|
||||
class ProposalCreate(ProposalBase):
|
||||
project_id: Optional[int] = None
|
||||
pass
|
||||
|
||||
|
||||
class ProposalUpdate(BaseModel):
|
||||
@@ -294,11 +289,10 @@ class ProposalUpdate(BaseModel):
|
||||
|
||||
|
||||
class ProposalResponse(ProposalBase):
|
||||
id: int
|
||||
proposal_code: Optional[str] = None # preferred name
|
||||
propose_code: Optional[str] = None # backward compat alias (same value)
|
||||
status: ProposalStatusEnum
|
||||
project_id: int
|
||||
project_code: Optional[str] = None
|
||||
created_by_id: Optional[int] = None
|
||||
created_by_username: Optional[str] = None
|
||||
feat_task_id: Optional[str] = None # DEPRECATED (BE-PR-010): legacy field, read-only. Use generated_tasks instead.
|
||||
@@ -340,9 +334,8 @@ class EssentialUpdate(BaseModel):
|
||||
|
||||
|
||||
class EssentialResponse(EssentialBase):
|
||||
id: int
|
||||
essential_code: str
|
||||
proposal_id: int
|
||||
proposal_code: Optional[str] = None
|
||||
created_by_id: Optional[int] = None
|
||||
created_at: datetime
|
||||
updated_at: Optional[datetime] = None
|
||||
@@ -353,13 +346,12 @@ class EssentialResponse(EssentialBase):
|
||||
|
||||
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
|
||||
source_essential_code: Optional[str] = None
|
||||
|
||||
|
||||
class ProposalDetailResponse(ProposalResponse):
|
||||
@@ -374,12 +366,10 @@ class ProposalDetailResponse(ProposalResponse):
|
||||
|
||||
class GeneratedTaskSummary(BaseModel):
|
||||
"""Brief summary of a task generated from a Proposal Essential."""
|
||||
task_id: int
|
||||
task_code: str
|
||||
task_type: str
|
||||
task_subtype: str
|
||||
title: str
|
||||
essential_id: int
|
||||
essential_code: str
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user