Files

42 lines
2.4 KiB
Markdown
Raw Permalink 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.
# 企业微信接入契约
## 元数据
- Owner企业微信审批维护人
- 实现:`internal/infrastructure/wecom/`
- 官方来源:企业微信开发者中心对应接口页;仓库仅保留当前调用交集
- 核验日期2026-08-07
## 当前实际使用范围
系统使用 access_token、部门与成员简表、审批模板详情、审批提交、审批详情/列表、临时素材上传,以及加密回调后的权威状态同步。未在代码调用链出现的企业微信接口不视为系统能力。
## 端点与方法
- `GET /cgi-bin/gettoken`
- `GET /cgi-bin/department/list`
- `GET /cgi-bin/user/simplelist`
- `POST /cgi-bin/oa/gettemplatedetail`
- `POST /cgi-bin/oa/applyevent`
- `POST /cgi-bin/oa/getapprovaldetail`
- `POST /cgi-bin/oa/getapprovalinfo`
- `POST /cgi-bin/media/upload`
基础地址来自 `wecom.base_url`HTTP 超时来自 `wecom.timeout`,未配置时为 10 秒。CorpID 与应用 Secret 用于换取 access_token审批控件 ID、类型和选项 Key 必须来自当前模板详情,不能由本系统猜测。
## 回调、终态与补偿
回调入口校验企业微信签名并进行 AES 解密,再按审批单号获取权威详情。回调并非唯一事实来源:审批列表/详情查询用于轮询补偿。提交 Consumer 区分 `SafeToRetry`:附件准备、取 token、构造请求或调用前的安全失败可释放实例等待重试已无法确认是否提交成功的结果不得盲目重复创建审批。
业务以本地审批实例和企业微信审批单号去重,终态只推进一次;`errcode/errmsg` 保存到集成日志并映射项目错误,不能直接暴露凭证或底层报文。
## 安全与验证
Secret、access_token、回调 AES Key、成员敏感字段、审批正文与附件 URL 必须脱敏。可信 IP、应用可见范围、模板、回调 URL 和素材权限属于部署侧人工配置。
可复现静态证据:`internal/infrastructure/wecom/token_provider.go``directory_client.go``template_client.go``approval_submission_client.go``approval_detail_client.go``approval_info_client.go``approval_attachment_uploader.go``approval_submission_consumer.go`。真实验收需测试企业覆盖提交、加密回调、漏回调补偿、重复事件和未知提交结果;本次不访问真实企业。
官方参考:<https://developer.work.weixin.qq.com/document/path/91902>
端点、模板字段、认证、回调加密或补偿语义变化时更新本文。