Files
data-engine/.codebuddy/memory/2026-06-01.md
2026-06-11 13:06:54 +08:00

54 lines
2.9 KiB
Markdown
Raw 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.
# 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 JSONbody_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: OAUTH2access_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 分页 + hasMoreAPI 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