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

2.6 KiB

2026-08-11 M09-D1 商品目录与库存底座

  • 版本:2026081107_m09d1_product_inventory_foundation
  • 新增 9 张表:qipai_product_categoriesqipai_productsqipai_product_skusqipai_product_store_listingsqipai_product_store_settingsqipai_product_store_hoursqipai_product_inventoryqipai_product_inventory_requestsqipai_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、并发库存、幂等冲突、流水对账和不可变约束均通过。