37 lines
2.2 KiB
Markdown
37 lines
2.2 KiB
Markdown
# 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_list,row_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 接口中也能生效
|