全栈: Task模型+remark字段 + 前端任务卡片初始说明展示区

This commit is contained in:
2026-08-05 15:22:50 +08:00
parent 3b02c87067
commit 22f7bb2f79
4 changed files with 42 additions and 0 deletions

View File

@ -0,0 +1,23 @@
"""add_task_remark
Revision ID: f6a7b8c9d0e1
Revises: e5f6a7b8c9d0
Create Date: 2026-08-05
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
revision: str = "f6a7b8c9d0e1"
down_revision: Union[str, None] = "e5f6a7b8c9d0"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
op.add_column("tasks", sa.Column("remark", sa.String(2000), nullable=True, comment="任务初始描述/交接备注"))
def downgrade() -> None:
op.drop_column("tasks", "remark")

View File

@ -69,6 +69,9 @@ class Task(Base):
is_rework: Mapped[bool] = mapped_column(
Boolean, default=False, comment="是否为返工任务",
)
remark: Mapped[str | None] = mapped_column(
String(2000), nullable=True, comment="任务初始描述/交接备注",
)
# ---- 关系 ----
product: Mapped["Product"] = relationship("Product", lazy="selectin")

View File

@ -102,6 +102,7 @@ class TaskSummaryResponse(BaseModel):
status: str
notify_parent_on_complete: bool
is_rework: bool = False
remark: str | None = None
reject_reason: str | None = None
received_at: datetime | None = None
completed_at: datetime | None = None