Files
qipai/docs/db-changelog/2026-08-11-M09-D1-product-inventory-foundation.md
T

15 lines
2.6 KiB
Markdown

# 2026-08-11 M09-D1 商品目录与库存底座
- 版本:`2026081107_m09d1_product_inventory_foundation`
- 新增 9 张表:`qipai_product_categories``qipai_products``qipai_product_skus``qipai_product_store_listings``qipai_product_store_settings``qipai_product_store_hours``qipai_product_inventory``qipai_product_inventory_requests``qipai_product_inventory_ledger`
- 分类按租户/门店隔离,商品与 SKU 属于租户目录,门店上架连接同租户商品和本门店分类;复合外键阻止跨租户、跨门店引用,软删除生成列使活动代码/条码唯一且归档后可复用。
- 门店销售设置保存总开关、人工暂停期限/原因和版本;营业时段按星期与 slotNo 唯一,显式记录跨日,数据库检查分钟范围和跨日一致性。
- 库存保存 `TRACKED` / `UNLIMITED` 策略、低库存阈值、可用/锁定/损耗数量及版本;CHECK 和条件更新共同限制数量为 `0..1,000,000,000`,不允许负库存。
- `qipai_product_inventory_requests` 在租户/门店/requestId 维度唯一并保存规范化请求指纹,保证跨 SKU 批量请求只处理一次;大小写敏感排序规则确保 opaque requestId 与业务号不被错误折叠。
- `qipai_product_inventory_ledger` 保存操作类型、三类数量增量、变动后快照、业务归属、请求、操作人和 `version_after`;请求与版本唯一键防重复,`qipai_product_inventory_ledger_no_update/no_delete` 双触发器禁止修改或删除流水。
- 迁移 runner 按 `qipai_schema_migrations` marker 与 checksum 增量执行 pending 文件;完整迁移、M09-C 旧库直升、interrupted up DDL 和 interrupted down DDL 均可原地重跑,checksum/name 不一致则拒绝继续。
- up/verify/down 使用专用连接持有按 `DATABASE()` 派生的 MySQL 命名锁,锁等待超时会明确失败;并发发布必须串行到读取 marker/checksum 之前,禁止不同构建交错执行 DDL。
- 触发器 DDL 是生产迁移前置:启用 binlog 时必须配置 `log_bin_trust_function_creators=1`,并使用具备所需权限的独立迁移身份。runner 在任何触发器 DDL 和建表执行前检查,不满足时拒绝迁移,禁止临时删触发器过门禁。
- down 先删除双触发器,再按依赖逆序删除 9 张表、权限和迁移 marker;verify 校验表、生成列、索引、CHECK、复合外键、触发器及角色权限。
- MySQL 8.4.10 已完成 179 up、141 verify、171 down 的 `up → verify → down → up → verify`,双连接迁移互斥、增量/崩溃重试、cleanup probe、并发库存、幂等冲突、流水对账和不可变约束均通过。