feat: 统一顺运宝日期同步并记录历史 (#59)

This commit is contained in:
chengma
2026-08-09 18:22:58 +08:00
parent ea7932db63
commit 05a54b044d
18 changed files with 934 additions and 144 deletions
+11
View File
@@ -97,6 +97,7 @@ SQLite 同一时刻只允许一个写事务,连接放太开会互相抢锁、
| v5 | 顺运宝货运单同步(工单 #46):新增 `syb_session`(会话缓存)、`syb_sync_state`(同步进度)两张表;`syb_orders` 增加可空的 `product_spec`(规格原文)。三条都是新增,v1–v4 一个字节没改。 |
| v6(#50) | Admin 网页登录:新增 `users` 和 `web_sessions`,只在迁移末尾追加,未改写 v1–v5。 |
| v7(#54) | 客户端负责人:新增 `client_user_assignments` 和当前归属唯一索引,保留绑定、转交、解绑历史;未改写 v1–v6。 |
| v8(#59) | 顺运宝同步记录:新增 `syb_sync_runs` 和开始时间倒序索引;未改写 v1–v7。 |
**v3 为什么丢弃旧 `sku_mappings` 数据(见 #20):** 新主键需要 `pdd_option_key`,
这是 Go 的 `service.OptionKey()` 用 `json.Marshal` 算出来的规范化键,SQL 语句
@@ -498,6 +499,16 @@ CREATE TABLE syb_sync_state (
- `[必须]` 只有一次同步**全部成功**才更新 `last_synced_at`;中途失败不更新,
否则下次同步会跳过这段区间,漏掉的单永远补不回来。
### 5.2 `syb_sync_runs` 同步记录(v8)
每次从页面发起同步时,先写一条 `running` 记录,再启动后台任务。记录保存操作
账号、日期范围、开始/完成时间、结果统计、是否推进覆盖游标以及必要的失败原因。
状态只能是 `running`、`succeeded`、`failed`、`interrupted`;Admin 启动时把上次
进程遗留的 `running` 记录改成 `interrupted`。
`[必须]` 本表不保存顺运宝 Cookie、token、密码、验证码、收件信息或原始响应。
失败原因最多保留 500 个字符,并在页面输出时由模板转义。
## 6. `sku_mappings` 规格映射
"蝦皮的这个规格 = 拼多多的那个规格",**匹配一次,以后复用**。