diff --git a/backend/alembic/versions/f6a7b8c9d0e1_add_task_remark.py b/backend/alembic/versions/f6a7b8c9d0e1_add_task_remark.py
new file mode 100644
index 0000000..d8d8092
--- /dev/null
+++ b/backend/alembic/versions/f6a7b8c9d0e1_add_task_remark.py
@@ -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")
diff --git a/backend/app/models/task.py b/backend/app/models/task.py
index 63f5997..ff919d6 100644
--- a/backend/app/models/task.py
+++ b/backend/app/models/task.py
@@ -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")
diff --git a/backend/app/schemas/task.py b/backend/app/schemas/task.py
index e94318e..a0e11c8 100644
--- a/backend/app/schemas/task.py
+++ b/backend/app/schemas/task.py
@@ -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
diff --git a/track-uniapp/src/pages/scan/components/TaskTreeNode.vue b/track-uniapp/src/pages/scan/components/TaskTreeNode.vue
index d471bbe..04ca546 100644
--- a/track-uniapp/src/pages/scan/components/TaskTreeNode.vue
+++ b/track-uniapp/src/pages/scan/components/TaskTreeNode.vue
@@ -15,6 +15,12 @@
负责人: {{ task.assignee_id }}
驳回: {{ task.reject_reason }}
+
+
+
{{ statusLabel(task.status) }}
@@ -172,6 +178,15 @@ export default {
.tnode-meta { margin-top: 2px; font-size: 11px; color: #9ca3af; display: flex; gap: 8px; flex-wrap: wrap; }
.reject-reason { color: #ef4444; }
+/* 任务初始描述(常驻,区别于动态记录) */
+.task-initial-remark {
+ margin-top: 10rpx; padding: 12rpx 16rpx;
+ background: linear-gradient(135deg, #fefce8, #fef9c3);
+ border-left: 6rpx solid #eab308; border-radius: 8rpx;
+}
+.remark-label { font-size: 22rpx; font-weight: 700; color: #a16207; }
+.remark-text { font-size: 26rpx; color: #713f12; line-height: 1.5; word-break: break-all; }
+
/* 进度记录 */
.records-area { background-color: #f9f9f9; padding: 0; border-radius: 10rpx; margin-top: 16rpx; margin-bottom: 6rpx; overflow: hidden; }
.records-bar {