坐席端审批线降级跳转 + 回调最终一致回写 (Phase 0 T01+T02) #3
Reference in New Issue
Block a user
Delete Branch "feat/agent-approval-degrade-jump"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
摘要
实现 Phase 0 审批线(T01 + T02),将审批动作降级为"前端跳转企微审批深链 + 后端 sys_approval_change 回调回写",达成服务台与企微最终一致。
依据:
改动清单(8 files)
前端(T01)
后端(T02)
测试(新增)
文档
关联键
本地待办 id = "approval:{sp_no}",description.sp_no 同值;企微回调必带 sp_no(webhook 中即 approval_id),无需中间映射表。
部署契约须知(重要)
PRD/设计写回调地址 /api/approval/callback,后端实际注册 /approval/callback(无 /api)。原因:app/main.py:918 注释表明 nginx location /api/ 已 strip 前缀,后端故意不加。
→ 企微侧回填回调 URL 必须带 /api(如 https:///api/approval/callback,由 nginx strip 后到达后端 /approval/callback)。全站审批端点(jump/submit 等)均无 /api 前缀,一致。
已知设计行为(非缺陷)
QA 回归
严过关独立回归(FakeRedis,无需真实 Redis/企微):51 passed / 0 failed。首轮 12 处失败全为测试代码自身 Bug(已自修:pydantic frozen Settings 替身;新版 Starlette 路由 path 枚举);修复后全绿。前端改动文件 vue-tsc --noEmit 干净(全仓 105 处存量 type-check 错误 0 处落在本次改动文件)。无源码缺陷。
工单线(T03+)未启动
受 U-1.2(ITSM 读链路断裂——ITSMService.get_todo_list() 无条件 return [],坐席待办工单数恒为 0)+ U-1.1(写接口缺失——itsm_service.py 全文件仅只读)双重外部阻塞。需向 ITSM 平台方索取
列表 API + 操作类 API + app_id/secret 写权限 + 测试账号。该项另行立项,不在本次 PR 范围。风险
提交
9292f41763d9f8d6d4efe00435af41a28c623549 — feat(agent/backend): 坐席端审批线降级跳转 + 回调最终一致回写
实现 Phase 0 审批线 T01+T02(依据 PRD-REQ-坐席-011 + U-1 技术验证结论)。 前端(T01): - TaskDetailView.handleAction 移除 mock toast,审批类仅 console.info - ApprovalDetail 通过/拒绝/转交 + 打开按钮接线为企微审批深链真实跳转(<a target="_blank">) - useWebSocket 新增 todo_status_changed 实时刷新分支 后端(T02): - approval.py 新增 writeback_approval_todo_status 主入口 + /approval/callback 接线 - approval_webhook.py 新增 _writeback_agent_todo 复用回调→WS 推送通道 - 以 approval:{sp_no} 为关联键,缓存就地改写 + 7天快照 + WS 推送,最终一致 测试:src/backend/tests/test_approval_todo_writeback.py(51 例全绿) 文档:PRD-REQ-坐席-011 v0.1、技术验证-U-1 v1.0