fix: 端点层operator_id兜底current_user.username — 管理员代办检测生效

根因: 移动端不传?operator_id=参数, 后端收到None
      _admin_proxy_note(None, assignee) → 不触发标记

修复: 6个端点(receive/reject/transfer/end/recall/spawn)
      operator_id or current_user.get(username) 兜底
This commit is contained in:
2026-08-12 17:19:56 +08:00
parent 828aee5161
commit eba0c3be98

View File

@ -125,7 +125,8 @@ async def end_task_endpoint(
用于工人认为工序已完结、无需转交下一人的场景。
"""
return await task_service.end_task(
db, uuid.UUID(task_id), operator_id,
db, uuid.UUID(task_id),
operator_id or current_user.get("username", "") or None,
operator_role=current_user.get("role"),
)
@ -146,7 +147,8 @@ async def recall_task_endpoint(
适用场景:转交后发现选错人,在对方接收前撤回。
"""
return await task_service.recall_task(
db, uuid.UUID(task_id), operator_id,
db, uuid.UUID(task_id),
operator_id or current_user.get("username", "") or None,
operator_role=current_user.get("role"),
)
@ -173,7 +175,9 @@ async def spawn_subtask_endpoint(
**派发协助分支:在当前任务下创建并行子任务,父任务状态保持不变。**
用于 WIP 期间工人需要其他人协助协同的场景。
"""
return await task_service.spawn_subtask(db, uuid.UUID(task_id), data, operator_id)
return await task_service.spawn_subtask(
db, uuid.UUID(task_id), data,
operator_id or current_user.get("username", "") or None)
# ============================================================
@ -196,7 +200,9 @@ async def receive_task_endpoint(
动作:状态改为 WIP记录 received_at更新 task_name同步产品宏观状态。
"""
return await task_service.receive_task(
db, uuid.UUID(task_id), operator_id, remark, task_name,
db, uuid.UUID(task_id),
operator_id or current_user.get("username", "") or None,
remark, task_name,
operator_role=current_user.get("role"),
)
@ -222,7 +228,8 @@ async def reject_task_endpoint(
3. 为该负责人新建返工任务is_rework=True, status=PENDING
"""
return await task_service.reject_task(
db, uuid.UUID(task_id), request, operator_id,
db, uuid.UUID(task_id), request,
operator_id or current_user.get("username", "") or None,
operator_role=current_user.get("role"),
)
@ -256,7 +263,8 @@ async def transfer_task_endpoint(
- 否则 → 顶层同级转交。
"""
return await task_service.transfer_task(
db, uuid.UUID(task_id), request, operator_id,
db, uuid.UUID(task_id), request,
operator_id or current_user.get("username", "") or None,
operator_role=current_user.get("role"),
)