[MVP] Admin 档口入库码回写 #224

Open
opened 2026-08-14 15:25:52 +08:00 by ila · 1 comment
Owner

背景

线下档口提供的 Excel 中包含日期、订单号、档口及货号、颜色尺码和档口入库码。目前回写流程位于独立 Python 项目,Admin 尚无可追踪、可恢复的操作入口。用户已确认该能力不能放在顺运宝模块内,需要在“客户端列表”之后增加独立一级 Tab“档口入库码”。

目标

在 Admin 内完成最小闭环:导入 Excel → 形成单表记录 → 匹配本地顺运宝货运单商品 → 操作员确认 → 回写档口入库码到顺运宝商品明细的快递单号位置,并能查看每行结果和异常。

非目标

  • 不保存 Excel 原文件或文件哈希,导入完成后删除临时文件。
  • 不拆分批次表、尝试记录表,不建设复杂审批流或多版本导入历史。
  • 不嵌入或调用原 Python 项目,不增加 Redis。
  • 不改变现有采购、下单和付款行为。

已确认总体方案

  • 页面:新增独立一级 Tab“档口入库码”,导航位置紧跟“客户端列表”,不归入顺运宝页面。
  • 数据:仅使用一张业�����表���业�������键为“日������� + 订单号 + 档口及货号 + 标准化颜色尺码”,同一日期的档口入库码保持唯一。
  • 流程:Excel 仅作为导入载体;记录入库后先匹配,再由用户选择可回写记录并确认回写。
  • 匹配���先通过本地 syb_orders 找到货运单和商品标识,再批量获取顺运宝最新详情;仅允许匹配采购平台和采购单号均为空的目标。歧义记录标记为需人工处理,不猜测。
  • 回写:写入前重新读取并核验远端状态;已有旧快递单号时按顺运宝接口要求先删后写;超时或结果未知时进入“需核对”,不能盲目重试。
  • 恢复:同一张表记录待匹配、可回写、处理中、已回写、已存在、已跳过、失败、需核对等状态;程序重启后残留“处理中”的记录转为“需核对”。

阶段与单元任务

阶段 1:原型确认

  • #225 Admin:设计档口入库码独立 Tab 交互原型(用户已确认)

阶段 2:数据导入与确定性匹配

  • #231 Admin:档口入库码单表迁移与 Excel 幂等导入(已实现,待验收)
  • #232 Admin:档口入库码确定性匹配与顺运宝回写规划(已实现,待验收)
  • #233 Admin:实现档口入库码独立页面与列表交互(已实现,待验收)

阶段 3:安全回写与集成验收

  • #234 Admin:档口入库码安全回写、核验与异常恢复(已实现,待验收)
  • #224 MVP 集成验收:导入、匹配、回写和恢复的代码回归已通过,待用户验收与真实环境验证

依赖、风险与回退

  • 依赖现��� Admin 顺运宝登录会话和远端详情接口。
  • 颜色尺码或档口信息不唯一时可能误匹配,因此只能进入跳过/需人工处理状态,禁止自动选一个。
  • 删除旧值后写入失败可能造成远端暂时为空;必须重新查询决定“已成功、可重试或需核对”,不直接重复写。
  • 生产运行时固定 MySQL 8.4,迁移追加 schema v23;历史 SQLite 只读迁移工具不扩展该业务表。代码回退时保留新增表,避免丢失审计数据。

MVP 验收标准

  • 独立“档口入库码”Tab 位于“客户端列表”之后,刷新和切换页面行为与其他 Admin 模块一致。

  • 合法 Excel 可导入单表,重复业务键幂等更新,临时文件不会留存。

  • 只对唯一且满足安全条件的顺运宝商品生成可回写结果,歧义和不满���条件的记录有明确原因。

  • ���������户能选择可回写记���并确认���逐条看到成功、失败或需核对结果。

  • 回写前重新核验、回写后再次读取验证,未知结果不会自动重复写入。

  • 固定 Go 1.23.0 的接口和页面自动化测试通过;MySQL 8.4 _test 首次建库、重复迁移和 v22 升级待执行。

  • #235 Admin:档口入库码支持勾选部分记录匹配(已实现,待验收)

  • #236 Admin:档口入库码匹配在会话过期时自动登录(已实现,待验收)

阶段 4:导入日期与软删除修复(2026-08-15)

  • #237 Admin:档口入库码导入使用 Excel 生成日期(已实现,待验收)
  • #238 Admin:档口入库码所有状态支持软删除与重复导入恢复(已实现,待验收)

阶段 5:工具栏可用性优化(2026-08-15)

  • #239 Admin:压缩档口入库码筛选工具栏并调整控件顺序(已实现,待验收)

阶段 6:多件商品入库码聚合回写(2026-08-15)

  • #240 Admin:同一顺运宝商品多件入库码合并回写

阶段 7:远端货运单查询修正(2026-08-15)

  • #245 Admin:档口入库码按货运单号直查顺运宝(已实现,待验收)

已确认方案修正

档口入库码匹配不再依赖本地 syb_orders。对勾选记录的货运单号去重后,���用顺���宝 t_stock.allcode 直接查询货运单 ID,再读取最新商品明细并执行现有确定性匹配和安全门禁。本修正覆盖此前“先匹配本地顺运宝货运单”的方案描述;远端查询结果不写入 SYB 数据模块,也不受店铺入库过滤影响。

阶段 8:后台批量安全回写(2026-08-15)

  • #246 Admin:档口入库码后台批量回写与进度反馈(已实现,待验收)

已确认方案补充

回写提交不再受 20 条选择上限约束;选中记录在现有业务表中进入同一后台批次,页面立即返回。Admin 后台仍按最多 20 条一组读取并逐条执行现有“写前核验、最多一次写入、写后核对”门禁。页面通过现有业务表聚合显示批次进度。进程异常时,尚未开始的排队记录恢复为可回写,已经进入远端写入阶段的记录转为待人工核对;不新增批次表,也不在重启后自动重放真实远端写入。

阶段 9:多件入库码按件分明细回写修正(2026-08-17)

  • #250 Admin:多件档口入库码按件创建顺运宝明细回写

已确认方案修正

真实操作 HAR 证明顺运宝不能在一个 innerExpCode 中使用逗号连接多个单件码。#240 的本地业务键聚合继续保留,但远端“完整聚合字符串只写一次”的方案由 #250 替代:原商���明细承载一件,其���每���创建数量 1、价格 0 的占位明细并分别写码。执行过程继续使用现有单表,在表内增加 JSON 检查点;远端创建或写码结果未知时只允许重新读取核对,不自动重发。

阶段 10:原始 SKU 确定性匹配兼容(2026-08-17)

  • #259 Admin:档口入库码使用原始 SKU 辅助确定性匹配

已确认方案补充

Excel“原始 SKU”作为高优先级、可审计的确定性匹配证据:订单和规格候选确定后,原始 SKU 与顺运宝 sku 或 ariationSku 唯一精确相等时允许命中;没有唯一命中时继续使用现有档口及货号规则。两套证据指向不同候选或出现重复候选时必须停止自动选择。业务键、页面档口字段、只读匹配和远端安全门禁保持不变。

阶段 11:写码参数 Integer 溢出修复(2026-08-19)

  • #278 Admin:修复档口入库码回写 t 参数溢出 Integer

阶段 12:多个现成相同明细逐件匹配兼容(2026-08-22)

  • #289 Admin:兼容多个相同顺运宝明细的档口入库码逐件匹配(已实现,待验收)

���确���方案补充

当 Excel 同业务键聚合出多个单件码,而顺运宝已经以多条数量 1 的相同商品明细表达这些件数时,不再一律按“原始 SKU 候选重复”阻断。只有候选数量、总件数���单件码数完全一致,且全部候选的规格、原始 SKU/档口身份、安全状态一致时,才按稳定明细 ID 与 Excel 码顺序形成逐件规划;规划必须持久化并在写前复读全部明细。其他重复候选仍保持保守阻断,未知结果不自动重试。

2026-08-22 生产发布

  • #290 Admin:部署多个相同顺运宝明细逐件匹配修复到生产(已完成,待验收;依赖 #289)
## 背景 线下档口提供的 Excel 中包含日期、订单号、档口及货号、颜色尺码和档口入库码。目前回写流程位于独立 Python 项目,Admin 尚无可追踪、可恢复的操作入口。用户已确认该能力不能放在顺运宝模块内,需要在“客户端列表”之后增加独立一级 Tab“档口入库码”。 ## 目标 在 Admin 内完成最小闭环:导入 Excel → 形成单表记录 → 匹配本地顺运宝货运单商品 → 操作员确认 → 回写档口入库码到顺运宝商品明细的快递单号位置,并能查看每行结果和异常。 ## 非目标 - 不保存 Excel 原文件或文件哈希,导入完成后删除临时文件。 - 不拆分批次表、尝试记录表,不建设复杂审批流或多版本导入历史。 - 不嵌入或调用原 Python 项目,不增加 Redis。 - 不改变现有采购、下单和付款行为。 ## 已确认总体方案 - 页面:新增独立一级 Tab“档口入库码”,导航位置紧跟“客户端列表”,不归入顺运宝页面。 - 数据:仅使用一张业�����表���业�������键为“日������� + 订单号 + 档口及货号 + 标准化颜色尺码”,同一日期的档口入库码保持唯一。 - 流程:Excel 仅作为导入载体;记录入库后先匹配,再由用户选择可回写记录并确认回写。 - 匹配���先通过本地 `syb_orders` 找到货运单和商品标识,再批量获取顺运宝最新详情;仅允许匹配采购平台和采购单号均为空的目标。歧义记录标记为需人工处理,不猜测。 - 回写:写入前重新读取并核验远端状态;已有旧快递单号时按顺运宝接口要求先删后写;超时或结果未知时进入“需核对”,不能盲目重试。 - 恢复:同一张表记录待匹配、可回写、处理中、已回写、已存在、已跳过、失败、需核对等状态;程序重启后残留“处理中”的记录转为“需核对”。 ## 阶段与单元任务 ### 阶段 1:原型确认 - [x] #225 Admin:设计档口入库码独立 Tab 交互原型(用户已确认) ### 阶段 2:数据导入与确定性匹配 - [ ] #231 Admin:档口入库码单表迁移与 Excel 幂等导入(已实现,待验收) - [ ] #232 Admin:档口入库码确定性匹配与顺运宝回写规划(已实现,待验收) - [ ] #233 Admin:实现档口入库码独立页面与列表交互(已实现,待验收) ### 阶段 3:安全回写与集成验收 - [ ] #234 Admin:档口入库码安全回写、核验与异常恢复(已实现,待验收) - [ ] #224 MVP 集成验收:导入、匹配、回写和恢复的代码回归已通过,待用户验收与真实环境验证 ## 依赖、风险与回退 - 依赖现��� Admin 顺运宝登录会话和远端详情接口。 - 颜色尺码或档口信息不唯一时可能误匹配,因此只能进入跳过/需人工处理状态,禁止自动选一个。 - 删除旧值后写入失败可能造成远端暂时为空;必须重新查询决定“已成功、可重试或需核对”,不直接重复写。 - 生产运行时固定 MySQL 8.4,迁移追加 schema v23;历史 SQLite 只读迁移工具不扩展该业务表。代码回退时保留新增表,避免丢失审计数据。 ## MVP 验收标准 - [ ] 独立“档口入库码”Tab 位于“客户端列表”之后,刷新和切换页面行为与其他 Admin 模块一致。 - [ ] 合法 Excel 可导入单表,重复业务键幂等更新,临时文件不会留存。 - [ ] 只对唯一且满足安全条件的顺运宝商品生成可回写结果,歧义和不满���条件的记录有明确原因。 - [ ] ���������户能选择可回写记���并确认���逐条看到成功、失败或需核对结果。 - [ ] 回写前重新核验、回写后再次读取验证,未知结果不会自动重复写入。 - [ ] 固定 Go 1.23.0 的接口和页面自动化测试通过;MySQL 8.4 `_test` 首次建库、重复迁移和 v22 升级待执行。 - [ ] #235 Admin:档口入库码支持勾选部分记录匹配(已实现,待验收) - [ ] #236 Admin:档口入库码匹配在会话过期时自动登录(已实现,待验收) ### 阶段 4:导入日期与软删除修复(2026-08-15) - [ ] #237 Admin:档口入库码导入使用 Excel 生成日期(已实现,待验收) - [ ] #238 Admin:档口入库码所有状态支持软删除与重复导入恢复(已实现,待验收) ### 阶段 5:工具栏可用性优化(2026-08-15) - [ ] #239 Admin:压缩档口入库码筛选工具栏并调整控件顺序(已实现,待验收) ### 阶段 6:多件商品入库码聚合回写(2026-08-15) - [ ] #240 Admin:同一顺运宝商品多件入库码合并回写 ### 阶段 7:远端货运单查询修正(2026-08-15) - [ ] #245 Admin:档口入库码按货运单号直查顺运宝(已实现,待验收) #### 已确认方案修正 档口入库码匹配不再依赖本地 `syb_orders`。对勾选记录的货运单号去重后,���用顺���宝 `t_stock.allcode` 直接查询货运单 ID,再读取最新商品明细并执行现有确定性匹配和安全门禁。本修正覆盖此前“先匹配本地顺运宝货运单”的方案描述;远端查询结果不写入 SYB 数据模块,也不受店铺入库过滤影响。 ### 阶段 8:后台批量安全回写(2026-08-15) - [ ] #246 Admin:档口入库码后台批量回写与进度反馈(已实现,待验收) #### 已确认方案补充 回写提交不再受 20 条选择上限约束;选中记录在现有业务表中进入同一后台批次,页面立即返回。Admin 后台仍按最多 20 条一组读取并逐条执行现有“写前核验、最多一次写入、写后核对”门禁。页面通过现有业务表聚合显示批次进度。进程异常时,尚未开始的排队记录恢复为可回写,已经进入远端写入阶段的记录转为待人工核对;不新增批次表,也不在重启后自动重放真实远端写入。 ### 阶段 9:多件入库码按件分明细回写修正(2026-08-17) - [ ] #250 Admin:多件档口入库码按件创建顺运宝明细回写 #### 已确认方案修正 真实操作 HAR 证明顺运宝不能在一个 `innerExpCode` 中使用逗号连接多个单件码。#240 的本地业务键聚合继续保留,但远端“完整聚合字符串只写一次”的方案由 #250 替代:原商���明细承载一件,其���每���创建数量 1、价格 0 的占位明细并分别写码。执行过程继续使用现有单表,在表内增加 JSON 检查点;远端创建或写码结果未知时只允许重新读取核对,不自动重发。 ### 阶段 10:原始 SKU 确定性匹配兼容(2026-08-17) - [ ] #259 Admin:档口入库码使用原始 SKU 辅助确定性匹配 #### 已确认方案补充 Excel“原始 SKU”作为高优先级、可审计的确定性匹配证据:订单和规格候选确定后,原始 SKU 与顺运宝 sku 或 ariationSku 唯一精确相等时允许命中;没有唯一命中时继续使用现有档口及货号规则。两套证据指向不同候选或出现重复候选时必须停止自动选择。业务键、页面档口字段、只读匹配和远端安全门禁保持不变。 - [ ] #273 ### 阶段 11:写码参数 Integer 溢出修复(2026-08-19) - [x] #278 Admin:修复档口入库码回写 t 参数溢出 Integer ### 阶段 12:多个现成相同明细逐件匹配兼容(2026-08-22) - [ ] #289 Admin:兼容多个相同顺运宝明细的档口入库码逐件匹配(已实现,待验收) #### ���确���方案补充 当 Excel 同业务键聚合出多个单件码,而顺运宝已经以多条数量 1 的相同商品明细表达这些件数时,不再一律按“原始 SKU 候选重复”阻断。只有候选数量、总件数���单件码数完全一致,且全部候选的规格、原始 SKU/档口身份、安全状态一致时,才按稳定明细 ID 与 Excel 码顺序形成逐件规划;规划必须持久化并在写前复读全部明细。其他重复候选仍保持保守阻断,未知结果不自动重试。 ## 2026-08-22 生产发布 - [ ] #290 Admin:部署多个相同顺运宝明细逐件匹配修复到生产(已完成,待验收;依赖 #289)
Author
Owner

状态:MVP 已实现,待用户验收。
#231–#234 均已实现并归档;固定 Go 1.23.0 build/test/vet 全部通过。
没有执行生产 v23 迁移、商业 Excel 导入或真实顺运宝写入。验收/部署前需先在 MySQL 8.4 _test 验证 v22→v23,再由操作员使用测试记录确认真实远端流程。

状态:MVP 已实现,待用户验收。 #231–#234 均已实现并归档;固定 Go 1.23.0 build/test/vet 全部通过。 没有执行生产 v23 迁移、商业 Excel 导入或真实顺运宝写入。验收/部署前需先在 MySQL 8.4 `_test` 验证 v22→v23,再由操作员使用测试记录确认真实远端流程。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#224