返回 Bug 清单
BUG-1362project-02高已修复frontend-integration
钉钉旧版 oapi topapi/processinstance/get 对 DDBizSuite 模板不返回表单填写值
发现:2026-10-13验证:2026-10-13置信度:70%
症状
审批详情拉取成功 errcode=0, 但 formComponentValues 只有 DDBizSuite 模板元数据 (30 个字段定义), operation_records 只有操作历史, 实际填写金额/类型/日期全部拿不到, parser 报 "缺少必填字段金额"
根因
钉钉新版 OA 审批模板 (费用报销/差旅费报销) 使用 DDBizSuite 组件, 旧版 oapi.dingtalk.com/topapi/processinstance/get 只返回模板结构 (props.label/bizAlias), 不返回用户填写的实际表单值. 必须换新版 v1 workflow API: api.dingtalk.com/v1.0/workflow/processInstances
修复方案
1. fetcher 换 v1 workflow API (GET /v1.0/workflow/processInstances?processInstanceId=xxx, token 用 POST /v1.0/oauth2/accessToken 获取, header=x-acs-dingtalk-access-token)
2. v1 API 返回完整 formComponentValues, 每个组件带 value, TableField 的 value 是 JSON 字符串需反序列化 + 扁平化 rowValue
3. parser 加 _flatten_components() 递归展开 TableField 子字段, 同时兼容旧版普通模板 (直接读 value)
错误签名
formComponentValues 有 DDBizSuite 但 value 是模板元数据 JSON 不含实际填写值技术信息
来源项目
project-02
涉及文件
bk_backend/dingtalk_spike/approval_fetcher.py, bk_backend/dingtalk_spike/approval_parser.py, scripts/dingtalk_spike_demo.py
标签
project-02, mcp-reported, source-agent