2.6 KiB
2.6 KiB
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_migrationsmarker 与 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、并发库存、幂等冲突、流水对账和不可变约束均通过。