54 lines
2.9 KiB
Markdown
54 lines
2.9 KiB
Markdown
# 2026-06-01 工作记录
|
||
|
||
## 快手代发订单详情新增
|
||
- 新增 `open.dropshipping.order.merchant.detail` 到 `seed_data_kuaishou.sql`
|
||
- 第19个接口,POST、prefetch 自 dropshipping_order_list、single_record
|
||
|
||
## 快手接口全面审查
|
||
发现 prefetch 相关7个接口存在3个严重Bug:
|
||
1. Prefetch 阶段业务参数未包入 param JSON(body_wrapper_field 未生效)
|
||
2. Prefetch 阶段 `parseResp(nil config)` 无法解析 data.items/data.cpsOrderList 等路径
|
||
3. Prefetch 循环未处理游标分页(固定页码递增)
|
||
|
||
## Bug 修复(dynamic_sync.go)
|
||
1. `syncWithPrefetch` 改用 `buildReqBody(prefetchIface)` 构建请求,body_wrapper_field 正确包装
|
||
2. 改用 `parseRespExt(resp.Body, prefetchIface.ResponseConfig)` 解析响应
|
||
3. 支持游标分页的 prefetch 循环(cursor/pcursor)
|
||
4. `buildPrefetchParams` 增加过滤 body_wrapper_field/exclude_from_wrapper/cursor_pagination/time_field_mode
|
||
5. 新增 `collectPrefetchEntities` 辅助函数
|
||
6. 修复并发阶段 `inQuery` 变量缺失的问题
|
||
|
||
## 同步调度并发锁修复
|
||
1. `SyncByConfig` 新增 `syncRunningMap` 内存锁(sync.Map.LoadOrStore),防止同一接口并发执行
|
||
2. 调度器从 `time.NewTicker` 改为 `for { run(); time.Sleep(interval) }`,前一次完成后才开始计时
|
||
|
||
## MEMORY.md 更新
|
||
- response_config 增加 `single_record` 字段说明
|
||
- prefetch 流程补充游标分页、参数构建、响应解析的详细说明
|
||
- 新增「并发保护」章节,记录内存锁和调度器时序
|
||
- 调度器章节补充 for+sleep 模式说明
|
||
|
||
## 钉钉平台新增
|
||
- 创建 `seed_data_dingtalk.sql`:钉钉开放平台 + 部门列表接口
|
||
- auth_type: OAUTH2,access_token 在 URL 查询参数中
|
||
- 部门列表:POST + parameters_location=query + recursive 递归遍历,响应 `result` 为数组
|
||
- 表名:`dingtalk_department`,冲突键:dept_id
|
||
|
||
## 递归遍历支持
|
||
- 新增 `RecursiveConfig` + `parseRecursiveConfig` + `syncRecursive` 函数
|
||
- `syncRecursive`:BFS 队列遍历,先查根级 → 对每个子部门递归查下级,防重复 + 最大深度限制
|
||
- `buildReqBody` / `buildPrefetchParams` 增加过滤 `recursive` / `max_recursive_depth`
|
||
|
||
## 钉钉智能人事平台
|
||
- 新建 `seed_data_dingtalk_hrm.sql`:钉钉智能人事专用平台
|
||
- auth_type: OAUTH2 + Header 认证(`x-acs-dingtalk-access-token`),独立于 oapi 平台
|
||
- 企业职位列表 `position_list`:POST + cursor 分页 + hasMore,API base `api.dingtalk.com`
|
||
|
||
## 钉钉角色列表 + 引擎增强
|
||
- `parseRespExt` 增加 `has_more_field` 支持 + 数字游标(float64→string)
|
||
- `syncWithPrefetch` 支持递归预取来源(BFS)
|
||
- `buildReqBody` 增加 `pagination_mode: "offset"` 支持(计算 offset = (page-1)*pageSize)
|
||
- `syncSingleAPI` 增加 hasMore 驱动的分页循环(钉钉 offset/size + hasMore)
|
||
- 新增 `hasMoreCheck` 辅助函数
|
||
- 新增 `seed_data_dingtalk.sql` 角色列表接口:偏移分页 + hasMore
|