Files
wecom_it_smart_desk/docs/sequence-diagram.mermaid
T
Simon bea288e414 feat: 2026-07-11 全量更新 - 代办集成+会议室预定+知识迭代修复+UI统一+Bug修复
== 已部署上线 (9项) ==
- 代办事项真实数据源集成 (企微审批API 8bug修复链)
- H5/坐席端 Logo样式统一+绿色背景
- 视频引导页修复 (localStorage key v2)
- 坐席端 v9 Vue版本修复 (ElMessage._context)
- 截图按钮 v10 修复 (getDisplayMedia user gesture)
- 扫码样式恢复+H5扫码登录跳转修复
- H5截图快捷键提示

== 代码完成待部署 (3项) ==
- 知识迭代3Bug修复 (#8 POST端点/#7 MERGE幂等/#6 过期检查)
- 会议室预定-小鱼易联终端 (40文件, 40/40测试通过)
- IT资产升级审批推送 (asset_service.py)

== 需求文档 (2项) ==
- 坐席端AI辅助消息框-PRD (4项新功能确认)
- 坐席端布局优化建议 v2.0 (7天计划)

== 新增文档 ==
- 日报-2026-07-11.md
- 知识迭代Bug修复报告-20260711.md
- 会议室预定-部署指南.md
- CHANGELOG.md 更新

== 测试 ==
- test_todo_integration.py: 40/40
- test_meetingroom.py: 40/40
- test_bugfix_ki_suggestions.py: 21/21
2026-07-11 23:13:10 +08:00

100 lines
3.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 代办事项时序图
## 1. 代办列表查询流程
```mermaid
sequenceDiagram
participant FE as 前端 TodoPanel
participant API as GET /api/todo-items
participant Agg as TodoAggregatorService
participant Cache as Redis Cache
participant Appr as ApprovalTodoService
participant Wecom as 企微审批API
participant ITSM as ITSMService
participant ITSM_API as ITSM OpenAPI
FE->>API: GET /api/todo-items?type=approval
API->>Agg: get_todo_list(agent_userid, type="approval")
Agg->>Cache: GET todo:cache:{userid}:approval
alt 缓存命中
Cache-->>Agg: cached_data
Agg-->>API: {items, total, cached:true}
else 缓存未命中
Agg->>Agg: asyncio.gather(approval_svc, itsm_svc, return_exceptions=True)
par 并行查询审批
Agg->>Appr: get_todo_list()
Appr->>Wecom: getapprovaldata(sp_status=1, templates=18)
Wecom-->>Appr: sp_no_list
Appr->>Appr: asyncio.gather(getapprovaldetail × N)
loop 每个sp_no并发获取详情
Appr->>Wecom: getapprovaldetail(sp_no)
Wecom-->>Appr: approval_detail
end
Appr->>Appr: _filter_by_current_approver(details)
Appr->>Appr: _map_to_todo_item(detail)
Appr-->>Agg: List[TodoItemData]
and 并行查询工单
Agg->>ITSM: get_todo_list()
Note over ITSM: ITSM列表API待实现<br/>当前返回空列表+日志告警
ITSM-->>Agg: List[TodoItemData] (空)
end
Agg->>Agg: merge + sort by priority
Agg->>Cache: SET todo:cache:{userid}:approval TTL=45s
Agg-->>API: {items, total, cached:false}
end
API-->>FE: {code:0, data:{items, total}}
```
## 2. 代办详情查询流程
```mermaid
sequenceDiagram
participant FE as 前端 TaskDetailView
participant API as GET /api/todo-items/{id}
participant Agg as TodoAggregatorService
participant Appr as ApprovalTodoService
participant ITSM as ITSMService
participant Wecom as 企微审批API
participant ITSM_API as ITSM OpenAPI
FE->>API: GET /api/todo-items/approval:{sp_no}
API->>Agg: get_todo_detail(agent_userid, item_id, todo_type="approval")
alt type == "approval"
Agg->>Appr: get_todo_detail(sp_no)
Appr->>Wecom: getapprovaldetail(sp_no)
Wecom-->>Appr: approval_detail
Appr->>Appr: _map_to_todo_item(detail)
Appr-->>Agg: TodoItemData
else type == "ticket"
Agg->>ITSM: get_todo_detail(workitem_id)
ITSM->>ITSM_API: POST /openapi/v1/process/workitem/detail
ITSM_API-->>ITSM: {code:20000, data:{workitem_detail}}
ITSM->>ITSM: _map_to_todo_item(detail)
ITSM-->>Agg: TodoItemData
end
Agg-->>API: TodoItemData
API-->>FE: {code:0, data:{item}}
```
## 3. ITSM 签名认证流程
```mermaid
sequenceDiagram
participant Svc as ITSMService
participant Signer as ITSMSigner
participant API as ITSM OpenAPI
Svc->>Svc: timestamp = str(int(time.time()*1000))
Svc->>Signer: compute_signature(app_id, timestamp, app_secret, biz_data)
Signer->>Signer: sign_params = {appId, timestamp, appSecret, bizData}
Signer->>Signer: sort by key ASC
Signer->>Signer: concat all values → canonicalized_str
Signer->>Signer: quote_plus(canonicalized_str)
Signer->>Signer: sha1(q2).hexdigest().upper()
Signer-->>Svc: sign_str
Svc->>API: POST url, headers={appId, timestamp, sign}, json=body
API-->>Svc: {code:20000, data:{...}}
```