docs: 新增顺运宝接口契约;config.yaml 加入 gitignore

从 4 份 HAR 抓包和示例脚本还原 docs/admin/08-顺运宝接口.md。
全部结论标了出处,只有单一样本支撑的都标了 [待定]。

抓包验出三件和现有假设不符的事:

1. 登录响应的 JWT 从不参与请求,认证全靠 Cookie。示例脚本里
   self.token 只用于算缓存有效期,没进过任何请求头。Go 侧存 Cookie
   即可,token 都不用存。

2. _capture_refreshed_token 是死代码——它从响应头 X-Requested-With
   读刷新后的 JWT,而 4 份 HAR 共 18 个响应里带该头的是 0 个。
   会话就是 24 小时硬上限,没有滚动续期,不要移植这段逻辑。

3. 金额单位在同一个响应里不统一:amtOrder 在列表接口是分(61200
   对应 612.0),escrowAmount 却不是(505 对应 505.0)。不能假设
   "列表接口的金额都是分",逐字段确认。这条只有一个样本,已标 [待定]。

还推翻了「货运单规格能直接对上蝦皮商品規格ID」这个前提:顺运宝给的
productId 是 11 位商品ID,蝦皮規格ID 是 12 位。但 productSpec 的格式
与蝦皮报表完全一致,可直接复用 #38 的 ParseSpec,匹配走
"productId 定位商品 → 解析规格 → 在该商品的 SKU 里比对"。

admin/config.yaml 含明文密码且此前没有任何 gitignore 规则挡它,
一次目录级 git add 就会进历史。已加规则,并补 config.example.yaml
作为模板(不含真实凭据,进 git)。

已确认历史提交中从未出现过该凭据。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
chengma
2026-08-09 10:59:00 +08:00
co-authored by Claude Opus 5
parent 5fd71981e0
commit 512ccf34d6
4 changed files with 439 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
# Admin 本机配置模板
#
# 用法:把本文件复制成 admin/config.yaml,填入真实账号密码。
#
# Windows: copy admin\config.example.yaml admin\config.yaml
# Linux: cp admin/config.example.yaml admin/config.yaml
#
# `[必须]` config.yaml 已在 .gitignore 里,绝不能提交进 Git——
# 密码一旦进了 git 历史就很难清干净。
# `[必须]` 打包发给别人时也不要带上 config.yaml。
#
# 接口细节见 docs/admin/08-顺运宝接口.md。
syb:
# 顺运宝 ERP 地址。一般不用改,域名变了才改。
base_url: https://www.shunyunbaoerp.com
username: 你的顺运宝账号
# `[必须]` 密码要加引号。纯数字密码不加引号会被 YAML 解析成整数,
# 反序列化到 string 字段会直接报错,前导 0 也会丢。
password: "你的密码"
# 列表接口每页条数。抓包里网页用的就是 20。
page_size: 20
# 单次同步的条数上限,超过就报错而不是硬拉。
# 防止日期范围手滑填成一整年,把整库拉下来。
max_matches: 500
# 首次同步的起始日期。之后按「上次同步时间」增量拉,不再用这个值。
sync_from: "2026-07-01"