收口接单大厅模板价格同步与本地开发容器

This commit is contained in:
yml
2026-11-14 21:36:36 +08:00
parent b03599eca7
commit 9a7aaf605e
26 changed files with 1180 additions and 344 deletions
+33 -8
View File
@@ -3,8 +3,8 @@ type: 生产运维操作手册
description: order_site 生产结构升级、数据切换、验收与回滚的唯一执行步骤。
tags: [生产, 部署, 数据库, 迁移, 备份, 回滚, 财务]
status: current
version: 1.0
updated_at: 2026-11-08
version: 1.1
updated_at: 2026-11-14
---
# 生产升级操作手册
@@ -24,12 +24,14 @@ updated_at: 2026-11-08
> 在发布负责人确认目标提交并完成隔离恢复演练前,只作为开发基线,
> 不得按旧的 `147–150` 一条路径直接上线。
>
> 2026-11-14 增量待发布基线:在 `161` 之上新增
> `162_fulfillment_queue_buckets.sql`,建立履约待办四桶只读投影、
> 补载体扫描专用索引和新单优先扫描口径。该迁移不改写原始订单、履约尝试或售后事实;
> 仍须完成停写、最终备份、隔离恢复验证、迁移、健康检查和履约审计后才可恢复营业。
> 2026-11-14 增量待发布基线:在 `161` 之上依次新增
> `162_fulfillment_queue_buckets.sql`、`163_work_order_hall_price_version.sql`。
> `162` 建立履约待办四桶只读投影、补载体扫描专用索引和新单优先扫描口径;
> `163` 增加接单大厅价格成本版本引用、改价同步候选索引和版本闸门,不重写历史工单金额。
> 两项迁移都不改写原始订单、履约尝试或售后事实;仍须完成停写、最终备份、隔离恢复验证、
> 迁移、健康检查、履约审计和大厅价格审计后才可恢复营业。
### 1.1 迁移 `151 → 162` 增量门禁
### 1.1 迁移 `151 → 163` 增量门禁
- 升级前必须确认生产最高迁移仍为 `151`;分支合并后重新核对迁移号,禁止回退或改写 `151` 及以前文件。
- 半自动迁移已收敛为单个 `161_semi_auto_fulfillment.sql`,不得在已应用 main `158–160`
@@ -40,7 +42,10 @@ updated_at: 2026-11-08
不迁移或清理订单、退款、资金流水等 A 级事实。
- 迁移完成后至少验证 `semi_auto_credentials` 表、任务外键和索引存在,以及
`v_fulfillment_queue`、补载体部分索引存在;
用测试库完成 `001 → 162` 空库迁移,并在隔离库验证 `151 → 162`。
- `163` 新增 `work_orders.hall_price_version_id`、模板工单进入 `open` 的版本闸门和
改价同步候选索引;正在使用寄卖现货的合同态工单豁免版本闸门。
- 用测试库完成 `001 → 163` 空库迁移,并在隔离库验证 `151 → 163`。
- 迁移后执行 `npm run audit:work-order-hall-pricing`,`critical` 必须为 0。
- 该增量仍包含迁移,普通停机发布不能使用 `deploy/ubuntu-deploy.sh` 在旧后端运行时直接换库;
必须沿用本手册的停写、最终备份、隔离恢复验证、迁移、新后端健康检查和验收流程。
@@ -424,6 +429,26 @@ docker compose --profile tools run --rm --no-deps tools \
- 售后关闭仍进入履约队列 `24`。
- 已分配但无有效载体 `27`。
### 6.3.1 接单大厅价格审计
迁移 `163` 后必须执行:
```bash
docker compose --profile tools run --rm --no-deps tools \
npm run audit:work-order-hall-pricing
```
要求:
- `critical` 必须为 `0`。
- `open` 模板工单的 `hall_price_version_id` 必须对应当前有效成本版本。
- 普通工单金额和拼单剩余份额单价必须与当前模板一致。
- 已加入拼单份额的合同金额不得因审计或改价被重写。
- 寄卖合同态工单不参与模板价审计覆盖。
`warning` 可包含尚未发布的 `pending_material / unassigned` 工单价格待同步项,
但必须由发布负责人在恢复营业前执行模板同步或记录结构化待办,不得手工猜价。
### 6.4 财务重建 dry-run
先定义本次财务回看区间:
@@ -3,7 +3,7 @@ type: 权威架构与实施计划
description: 订单、内部 SKU、履约路由、履约执行、商品、成本与财务的唯一权威口径及重构计划。
tags: [订单, 内部SKU, 履约, 商品, 成本, 财务, 迁移]
status: authoritative
version: 2.18
version: 2.19
updated_at: 2026-11-14
---
@@ -12,7 +12,7 @@ updated_at: 2026-11-14
> 状态:**唯一权威文档**。
> 最后校准:2026-11-14。
> 生产基线:迁移 `151`。
> 开发基线:迁移 `162`(仅本地,尚未部署生产)。
> 开发基线:迁移 `163`(仅本地,尚未部署生产)。
>
> 从本文件生效起,订单、内部 SKU、履约渠道、履约载体、标准商品、成本和财务相关实现,
> 只能以本文件为业务口径。其他旧分析只作为历史资料,不再具备设计或验收效力。
@@ -361,6 +361,25 @@ manual fulfillment
- 完成截图可选;操作人、操作时间、外部单号和成本确认必须留痕。
- 客户统一入口为 `/c/<平台订单号>`,它是入口而非安全授权凭据;高价值或全自动场景必须增加二次验证,不能仅凭订单号自动履约。
### 3.4.3 接单大厅模板价格版本
接单工单进入大厅时展示的模板价格,是 `cost_versions` 当前生效版本在工单上的价格投影,
不是新的价格真源。
- 模板工单必须记录 `work_orders.hall_price_version_id`,指向本次价格物化使用的成本版本。
- `pending_material`、`unassigned`、`open` 工单在模板改价时必须同事务更新;改价失败时
成本版本、模板价格投影和工单价格全部回滚。
- 普通工单按模板计价方式和订单原始规格数量计算。
- 拼单工单只刷新尚未加入的份额;已加入份额的 `unit_reward`、`share_reward` 是参与时的
合同快照,不得被后续模板改价重写。
- 撤单、退单审核、超时重开、问题单退回大厅、拼单份额退回大厅等所有重新进入 `open` 的路径,
必须先经过统一的大厅价格物化入口,再修改状态。
- 数据库使用迁移 `163` 的版本闸门拒绝“模板工单携带空版本或已失效版本进入 `open`”。
正在使用寄卖现货的合同态工单显式豁免,不得用模板价覆盖寄卖结算金额。
- 模板批量改价提交后必须整体清空接单大厅列表缓存并广播全量刷新,不能依赖逐张工单事件补齐。
- 只读审计命令为 `npm run audit:work-order-hall-pricing`;`open` 工单的版本、金额或份额单价
不一致属于 critical,必须停止继续放大并修复,不自动猜测补价。
### 3.5 商品与财务域
标准商品目标结构:
@@ -892,6 +911,8 @@ npm run audit:finance -- --strict
`product_catalog.source_kind` 与 `internal_sku_id`。
- 商品创建写入口显式写入 `source_kind`,数据库约束只允许
`affiliate_dash / work_order / third_party_voucher / manual / unclassified`。
- 迁移 `163` 将接单模板改价、未发布工单价格投影和大厅价格版本收敛到同一事务,
所有重新进入大厅的路径统一先物化当前模板价;寄卖合同态不参与模板价覆盖。
- `product_channel_capabilities`、`manual_sku_registry`、`internal_sku_channels` 和历史
`legacy_*` 字段继续保留为审计留存,不在生产观察期前删除。
@@ -947,6 +968,9 @@ npm run audit:finance -- --strict
- 同一订单项不得同时有活跃工单和活跃自动发货任务。
- 当前尝试必须是已存在且唯一的历史尝试。
- 所有重试动作必须按 issue_code 限定作用域。
- 模板工单进入大厅时必须绑定当前有效 `hall_price_version_id`。
- 部分拼单改价后,已加入份额金额不变,剩余份额按当前模板价重算。
- `npm run audit:work-order-hall-pricing` 的 `critical` 必须为 0。
### 财务
@@ -1003,17 +1027,19 @@ docs/archive/
## 十三、当前下一步
截至 2026-11-14,生产基线为 `151`,集成分支开发基线为 `162`。迁移 `152` 保护订单来源快照,
截至 2026-11-14,生产基线为 `151`,集成分支开发基线为 `163`。迁移 `152` 保护订单来源快照,
迁移 `158–160` 收口寄卖登记人同步、寄卖平台与自动匹配设置;
迁移 `161` 一次建立人工渠道半自动任务、内置 Connector 默认值、账号级 Cookie JSON 凭证、
任务凭证引用和最终约束;迁移 `162` 建立履约待办四桶只读投影、补载体专用索引和新单优先扫描口径。
迁移 `163` 增加接单大厅价格成本版本引用、改价同步候选索引和旧版本进入大厅的数据库闸门;
该迁移不重写历史工单金额,寄卖合同态显式豁免。
迁移中保留的 `semi_auto.credential.export` 权限仅作兼容记录,
不再作为 CK 导出门禁。
1. 生产升级只按 [生产升级操作手册](生产升级操作手册.md) 执行。
2. 升级前备份必须完成隔离恢复验证;恢复验证未通过时禁止迁移。
3. `147 → 153` 按生产升级手册分批执行,迁移后刷新统计并完成商品、履约、
财务三组严格审计;无法确定的数据进入未路由或待分类,不做猜测。
3. `147 → 163` 按生产升级手册分批执行,迁移后刷新统计并完成商品、履约、
财务和大厅价格审计;无法确定的数据进入未路由或待分类,不做猜测。
4. 执行 `finance:rebuild-derived` 的 dry-run,核对 A 级数据守恒后,
再按窗口执行 `--execute --confirm=REBUILD_DERIVED`,并验证第二次重建幂等。
5. 观察一个完整财务期间,确认页面、履约、事实和总账持续对平。