From e7bfdc261bed5113951645a35a9ddc834d9b3467 Mon Sep 17 00:00:00 2001 From: duxingchen Date: Wed, 12 Aug 2026 17:11:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20TaskRecord=E4=B9=9F=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E4=BB=A3=E5=8A=9E=E5=AE=A1=E8=AE=A1?= =?UTF-8?q?=E6=A0=87=E8=AE=B0=20=E2=80=94=20=E7=9C=8B=E6=9D=BF=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E5=8A=A8=E6=80=81=E5=8F=AF=E8=A7=81=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增 _admin_proxy_note() 辅助函数 receive/transfer 的 TaskRecord.remark 自动拼接 [管理员xx代办] 这样看板\最新动态\列就能显示管理员代操作记录 --- backend/app/services/task_service.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/backend/app/services/task_service.py b/backend/app/services/task_service.py index c7cd2a2..eaf2535 100644 --- a/backend/app/services/task_service.py +++ b/backend/app/services/task_service.py @@ -217,6 +217,13 @@ async def _check_all_critical_children_completed( return len(incomplete) == 0, incomplete +def _admin_proxy_note(operator_id: str | None, task_assignee_id: str | None) -> str: + """检测管理员代办 → 返回审计标记后缀""" + if operator_id and task_assignee_id and operator_id != task_assignee_id: + return f" [管理员 {operator_id} 代办]" + return "" + + async def _create_task_log( db: AsyncSession, task_id: uuid.UUID, @@ -226,16 +233,12 @@ async def _create_task_log( task_assignee_id: str | None = None, ) -> TaskLog: """创建任务操作日志。自动检测管理员代办并拼接审计标记。""" - final_remark = remark or "" - # 管理员代办检测:操作人 ≠ 任务负责人 → 拼接审计追述 - if operator_id and task_assignee_id and operator_id != task_assignee_id: - proxy_note = f" [管理员 {operator_id} 代办操作]" - final_remark = (final_remark + proxy_note).strip() + final_remark = (remark or "") + _admin_proxy_note(operator_id, task_assignee_id) log = TaskLog( task_id=task_id, operator_id=operator_id, action_type=action_type, - remark=final_remark or None, + remark=final_remark.strip() or None, ) db.add(log) return log @@ -558,7 +561,9 @@ async def receive_task( remark=remark or f"操作员确认接收任务「{task.task_name}」", task_assignee_id=task.assignee_id, ) - db.add(TaskRecord(task_id=task.id, remark=remark or f"[接收] 操作员已确认接收", images="[]")) + db.add(TaskRecord(task_id=task.id, + remark=(remark or f"[接收] 操作员已确认接收") + _admin_proxy_note(operator_id, task.assignee_id), + images="[]")) # 接收时同步产品位置到接收人 + 宏观状态同步 product_result = await db.execute(select(Product).where(Product.id == task.product_id)) @@ -760,7 +765,9 @@ async def transfer_task( remark=request.note or f"完成任务「{task.task_name}」,转交至下一道工序", task_assignee_id=task.assignee_id, ) - db.add(TaskRecord(task_id=task.id, remark=request.note or f"[完工转交] 移交下一工序", images="[]")) + db.add(TaskRecord(task_id=task.id, + remark=(request.note or f"[完工转交] 移交下一工序") + _admin_proxy_note(operator_id, task.assignee_id), + images="[]")) # --- 动作 2:解析下家 & 裂变 --- # 兼容新旧格式