feat(M09-D1): 完成商品目录与库存流水底座
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
# 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、并发库存、幂等冲突、流水对账和不可变约束均通过。
|
||||
Reference in New Issue
Block a user