Completed
作为 系统管理员, 我想要 复制商品管理模块并添加多租户支持, 以便 商品可以在租户隔离的环境中管理,同时保持与现有单租户系统的完全兼容性。
@d8d/goods-module 为 @d8d/goods-module-mt,包含正确的包配置GoodsMt 和商品分类实体 GoodsCategoryMt,包含租户ID字段和表名 goods_mt、goods_category_mt[x] 复制商品管理模块为多租户版本 (AC: 1)
packages/goods-module 为 packages/goods-module-mt@d8d/goods-module-mt@d8d/user-module 替换为 @d8d/user-module-mt@d8d/auth-module 替换为 @d8d/auth-module-mt@d8d/file-module 替换为 @d8d/file-module-mt@d8d/merchant-module 替换为 @d8d/merchant-module-mt@d8d/supplier-module 替换为 @d8d/supplier-module-mt[x] 更新多租户商品实体 (AC: 2)
GoodsMt 实体,表名为 goods_mtGoodsCategoryMt 实体,表名为 goods_category_mttenantId 字段和正确的TypeORM配置[x] 更新多租户商品服务 (AC: 3, 4)
[x] 更新多租户路由配置 (AC: 3)
tenantOptions: { enabled: true, tenantIdField: 'tenantId' }[x] 更新Schema定义 (AC: 3)
GoodsSchemaGoodsCategorySchemaUserGoodsSchemaAdminGoodsSchemaPublicGoodsSchema[x] 实现租户数据隔离API测试 (AC: 7)
packages/goods-module-mt/tests/integration/user-goods-routes.integration.test.ts 中添加租户隔离测试用例packages/goods-module-mt/tests/integration/admin-goods-routes.integration.test.ts 中添加跨租户商品访问安全验证packages/goods-module-mt/tests/integration/public-goods-routes.integration.test.ts 中添加租户过滤验证[x] 验证单租户系统完整性 (AC: 5, 6)
[x] 在创建复制的代码修改完后先运行安装
pnpm install 安装依赖[x] 执行性能基准测试 (AC: 8)
[x] 执行回归测试验证 (AC: 9)
基于故事007.008(供应商模块多租户复制)的经验教训:
技术挑战和解决方案 [Source: docs/prd/epic-007-multi-tenant-package-replication.md#实施经验总结]
fileParallelism: false 避免并行测试导致的数据库表重复创建错误最佳实践 [Source: docs/prd/epic-007-multi-tenant-package-replication.md#最佳实践]
.mt.ts 后缀区分多租户文件fileParallelism: false 避免数据库冲突商品实体 [Source: packages/goods-module/src/entities/goods.entity.ts]
goods → goods_mtname, price, costPrice, salesNum, clickNum, categoryId1, categoryId2, categoryId3, goodsType, supplierId, merchantId, imageFileId, detail, instructions, sort, state, stock, spuId, spuName, lowestBuycategory1, category2, category3, supplier, imageFile, merchant, slideImages (多对多)tenantId 字段和复合索引商品分类实体 [Source: packages/goods-module/src/entities/goods-category.entity.ts]
goods_category → goods_category_mtname, parentId, imageFileId, level, stateimageFiletenantId 字段和复合索引路由结构 [Source: docs/architecture/source-tree.md#商品管理模块]
user-goods-routes.tsadmin-goods-routes.tspublic-goods-routes.tsadmin-goods-categories.tspublic-goods-random.tsAPI端点 [Source: packages/goods-module/src/routes/]
新文件路径 [Source: docs/architecture/source-tree.md#包架构层次]
packages/goods-module-mt/packages/goods-module-mt/src/entities/goods.mt.entity.tspackages/goods-module-mt/src/services/goods.mt.service.tspackages/goods-module-mt/src/routes/*.mt.tspackages/goods-module-mt/src/schemas/*.mt.schema.tspackages/goods-module-mt/tests/integration/*.integration.test.ts多租户架构 [Source: docs/prd/epic-007-multi-tenant-package-replication.md#架构设计详情]
tenantOptions: { enabled: true, tenantIdField: 'tenantId' }性能要求 [Source: docs/prd/epic-007-multi-tenant-package-replication.md#成功标准]
packages/goods-module-mt/tests/integration/| 日期 | 版本 | 描述 | 作者 |
|---|---|---|---|
| 2025-11-14 | 1.0 | 初始故事创建 | Bob (Scrum Master) |
@d8d/goods-module-mttenantId 字段和索引packages/goods-module-mt/ - 多租户商品模块根目录packages/goods-module-mt/package.json - 包配置和依赖packages/goods-module-mt/src/entities/goods.entity.mt.ts - 多租户商品实体packages/goods-module-mt/src/entities/goods-category.entity.mt.ts - 多租户商品分类实体packages/goods-module-mt/src/services/goods.service.mt.ts - 多租户商品服务packages/goods-module-mt/src/services/goods-category.service.mt.ts - 多租户商品分类服务packages/goods-module-mt/src/routes/*.mt.ts - 所有多租户路由文件packages/goods-module-mt/src/schemas/*.mt.schema.ts - 所有多租户Schema文件packages/goods-module-mt/tests/integration/*.test.ts - 多租户集成测试此部分将在质量保证审查过程中由QA代理填充