Files
data-engine/.codebuddy/memory/2026-06-03.md

37 lines
2.2 KiB
Markdown
Raw Normal View History

2026-06-11 13:06:54 +08:00
# 2026-06-03 工作记录
## 钉钉智能薪酬平台对接
- 新增 `dingtalk_salary` 平台 + 2个接口到 `sql/seed_data_dingtalk_salary.sql`
- 新认证类型 `APP_SIGNATURE`app-id + signature 头部认证
- 签名算法MD5(body_string + app_secret).toUpperCase()
### 接口明细
1. **salary_dept_list**`POST /oapi/salary/dept/list`,无入参,单次拉取全量部门
2. **salary_statistics**`POST /oapi/salary/statistics/dept`prefetch 自 salary_dept_listrow_inject statisticsMonth
### 代码改动
- `api_client.go`: `applyAuthHeader` 扩展支持 `APP_SIGNATURE` 认证,新增 `applyAppSignatureAuth` + `computeBodySignature`
- `platform_manager.go`: 新增 `APP_SIGNATURE` case从 auth_config 提取 app_id/app_secret
- `dynamic_sync.go`:
- `toFloat64` 扩展支持 string→float64适配 salary API 返回 code: "200" 字符串)
- `buildReqBody`/`buildPrefetchParams` skip list 新增 `row_inject`
- 新增 `injectRowFields` 函数:将请求参数注入响应行
- `injectRowFields` 调用于 syncWithPrefetch 中3处 row 注入点
## 新增钉钉智能薪酬人力成本报表接口 (2026-06-03 第二阶段)
### 新增接口
3. **salary_statistic_report**`POST /oapi/salary/statistic/report/data`无分页single_record获取指定月份的人力成本报表
- 入参:`calBizId`(格式 yyyyMM"M",如 "202606M",为空默认当月)
- 出参:`data.calBizId` + `data.sumStatisticsData`(成本项数组 JSONB
- 表:`dingtalk_salary_statistic_report`conflict_key: `calBizId`
4. **salary_statistic_report_group**`POST /oapi/salary/statistic/report/groupData`无分页single_record
- 入参:`calBizId` + `salaryGroupName`(必填),使用 `row_inject` 注入 salaryGroupName
- 表:`dingtalk_salary_statistic_report_group`conflict_keys: `calBizId` + `salaryGroupName`
### 代码改动
- `dynamic_sync.go`:修复主同步路径(非 prefetch`injectRowFields` 未调用的问题
- 在 5 处 savePage 调用前添加 injectRowFields初始页、游标分页循环、hasMore 分页、普通分页(有/无 response_config
- 使 `row_inject` 在单记录single_record非 prefetch 接口中也能生效