Просмотр исходного кода

📝 docs(story): update system config custom routes cache refresh story details

- add reference file paths for better implementation guidance
- enhance multi-tenant isolation requirements with explicit verification tasks
- add对照标注 for key implementation references
- strengthen tenant isolation requirements in tasks and dev notes
- add version history for documentation tracking
yourname 1 месяц назад
Родитель
Сommit
8525bcfce6
1 измененных файлов с 28 добавлено и 13 удалено
  1. 28 13
      docs/stories/010.005.system-config-custom-routes-cache-refresh.story.md

+ 28 - 13
docs/stories/010.005.system-config-custom-routes-cache-refresh.story.md

@@ -19,37 +19,41 @@ Draft
 ## Tasks / Subtasks
 ## Tasks / Subtasks
 - [ ] 任务 1 (AC: 1, 2): 创建系统配置自定义路由目录结构
 - [ ] 任务 1 (AC: 1, 2): 创建系统配置自定义路由目录结构
   - [ ] 创建 `packages/core-module-mt/system-config-module-mt/src/routes/custom/` 目录
   - [ ] 创建 `packages/core-module-mt/system-config-module-mt/src/routes/custom/` 目录
-  - [ ] 参照订单模块聚合写法,创建自定义路由文件
+  - [ ] 参照订单模块聚合写法,创建自定义路由文件 [对照: packages/orders-module-mt/src/routes/user/orders.mt.ts]
   - [ ] 创建自定义路由聚合文件
   - [ ] 创建自定义路由聚合文件
 - [ ] 任务 2 (AC: 2, 3): 实现创建配置的自定义路由
 - [ ] 任务 2 (AC: 2, 3): 实现创建配置的自定义路由
   - [ ] 创建 `packages/core-module-mt/system-config-module-mt/src/routes/custom/create-system-config.mt.ts`
   - [ ] 创建 `packages/core-module-mt/system-config-module-mt/src/routes/custom/create-system-config.mt.ts`
-  - [ ] 实现POST路由,调用SystemConfigServiceMt的setConfig方法
+  - [ ] 实现POST路由,调用SystemConfigServiceMt的setConfig方法 [对照: packages/core-module-mt/system-config-module-mt/src/services/system-config.service.mt.ts:128-158]
   - [ ] 在路由处理中自动刷新对应配置键的Redis缓存
   - [ ] 在路由处理中自动刷新对应配置键的Redis缓存
-  - [ ] 保持与现有CRUD路由相同的请求/响应格式
+  - [ ] 保持与现有CRUD路由相同的请求/响应格式 [对照: packages/core-module-mt/system-config-module-mt/src/routes/system-config.routes.mt.ts]
+  - [ ] **确保多租户隔离**: 从上下文中提取tenantId,确保只刷新当前租户的缓存
 - [ ] 任务 3 (AC: 2, 3): 实现更新配置的自定义路由
 - [ ] 任务 3 (AC: 2, 3): 实现更新配置的自定义路由
   - [ ] 创建 `packages/core-module-mt/system-config-module-mt/src/routes/custom/update-system-config.mt.ts`
   - [ ] 创建 `packages/core-module-mt/system-config-module-mt/src/routes/custom/update-system-config.mt.ts`
-  - [ ] 实现PUT路由,调用SystemConfigServiceMt的update方法
+  - [ ] 实现PUT路由,调用SystemConfigServiceMt的update方法 [对照: packages/core-module-mt/system-config-module-mt/src/services/system-config.service.mt.ts:189-199]
   - [ ] 在路由处理中自动刷新对应配置键的Redis缓存
   - [ ] 在路由处理中自动刷新对应配置键的Redis缓存
-  - [ ] 保持与现有CRUD路由相同的请求/响应格式
+  - [ ] 保持与现有CRUD路由相同的请求/响应格式 [对照: packages/core-module-mt/system-config-module-mt/src/routes/system-config.routes.mt.ts]
+  - [ ] **确保多租户隔离**: 验证更新操作只影响当前租户的配置和缓存
 - [ ] 任务 4 (AC: 2, 3): 实现删除配置的自定义路由
 - [ ] 任务 4 (AC: 2, 3): 实现删除配置的自定义路由
   - [ ] 创建 `packages/core-module-mt/system-config-module-mt/src/routes/custom/delete-system-config.mt.ts`
   - [ ] 创建 `packages/core-module-mt/system-config-module-mt/src/routes/custom/delete-system-config.mt.ts`
-  - [ ] 实现DELETE路由,调用SystemConfigServiceMt的deleteConfig方法
+  - [ ] 实现DELETE路由,调用SystemConfigServiceMt的deleteConfig方法 [对照: packages/core-module-mt/system-config-module-mt/src/services/system-config.service.mt.ts:170-184]
   - [ ] 在路由处理中自动刷新对应配置键的Redis缓存
   - [ ] 在路由处理中自动刷新对应配置键的Redis缓存
-  - [ ] 保持与现有CRUD路由相同的请求/响应格式
+  - [ ] 保持与现有CRUD路由相同的请求/响应格式 [对照: packages/core-module-mt/system-config-module-mt/src/routes/system-config.routes.mt.ts]
+  - [ ] **确保多租户隔离**: 验证删除操作只删除当前租户的配置和缓存
 - [ ] 任务 5 (AC: 1, 2): 重构系统配置路由聚合
 - [ ] 任务 5 (AC: 1, 2): 重构系统配置路由聚合
   - [ ] 修改 `packages/core-module-mt/system-config-module-mt/src/routes/system-config.routes.mt.ts`
   - [ ] 修改 `packages/core-module-mt/system-config-module-mt/src/routes/system-config.routes.mt.ts`
-  - [ ] 参照订单模块聚合写法,将自定义路由与CRUD路由聚合
+  - [ ] 参照订单模块聚合写法,将自定义路由与CRUD路由聚合 [对照: packages/orders-module-mt/src/routes/user/orders.mt.ts:34-38]
   - [ ] 保持现有API接口兼容性
   - [ ] 保持现有API接口兼容性
+  - [ ] **确保多租户中间件正确应用**: 保持authMiddleware和tenantOptions配置
 - [ ] 任务 6 (AC: 4, 5): 验证缓存刷新机制
 - [ ] 任务 6 (AC: 4, 5): 验证缓存刷新机制
   - [ ] 创建缓存刷新验证测试
   - [ ] 创建缓存刷新验证测试
   - [ ] 验证创建配置时缓存正确刷新
   - [ ] 验证创建配置时缓存正确刷新
   - [ ] 验证更新配置时缓存正确刷新
   - [ ] 验证更新配置时缓存正确刷新
   - [ ] 验证删除配置时缓存正确刷新
   - [ ] 验证删除配置时缓存正确刷新
-  - [ ] 验证多租户缓存隔离
+  - [ ] **验证多租户缓存隔离**: 确保不同租户的配置缓存完全隔离
 - [ ] 任务 7 (AC: 6): 验证现有功能无回归
 - [ ] 任务 7 (AC: 6): 验证现有功能无回归
-  - [ ] 运行现有系统配置模块测试
-  - [ ] 验证认证和支付模块集成正常
-  - [ ] 验证管理后台UI包集成正常
+  - [ ] 运行现有系统配置模块测试 [对照: packages/core-module-mt/system-config-module-mt/tests/integration/system-config.routes.integration.test.ts]
+  - [ ] 验证认证和支付模块集成正常 [对照: packages/core-module-mt/auth-module-mt/src/services/mini-auth.service.mt.ts]
+  - [ ] 验证管理后台UI包集成正常 [对照: packages/system-config-management-ui-mt/src/api/systemConfigClient.ts]
   - [ ] 运行所有相关集成测试
   - [ ] 运行所有相关集成测试
 
 
 ## Dev Notes
 ## Dev Notes
@@ -124,6 +128,14 @@ const systemConfigCrudRoutes = createCrudRoutes({
 - **用户跟踪**: 通过 `userTracking` 配置用户跟踪
 - **用户跟踪**: 通过 `userTracking` 配置用户跟踪
 - **核心方法**: `getList()`, `getById()`, `create()`, `update()`, `delete()`
 - **核心方法**: `getList()`, `getById()`, `create()`, `update()`, `delete()`
 
 
+### 多租户隔离关键要求
+**强制多租户隔离要求**:
+- **租户ID提取**: 所有自定义路由必须从上下文中提取tenantId [对照: packages/core-module-mt/system-config-module-mt/src/services/system-config.service.mt.ts:11-13]
+- **缓存键隔离**: Redis缓存键必须包含tenantId前缀 `system_config:{tenantId}:{configKey}` [对照: packages/shared-utils/src/utils/redis.util.ts:68]
+- **数据库查询隔离**: 所有数据库查询必须包含tenantId条件 [对照: packages/core-module-mt/system-config-module-mt/src/services/system-config.service.mt.ts:40]
+- **操作范围限制**: 创建、更新、删除操作只能影响当前租户的配置
+- **缓存刷新隔离**: 缓存刷新操作只能清除当前租户的缓存
+
 ### 先前故事实施经验
 ### 先前故事实施经验
 从Epic 010的前4个故事中提取的关键经验:
 从Epic 010的前4个故事中提取的关键经验:
 - **缓存穿透保护**: 实现空值缓存机制防止缓存穿透攻击 [Source: docs/stories/010.002.system-config-redis-cache.story.md]
 - **缓存穿透保护**: 实现空值缓存机制防止缓存穿透攻击 [Source: docs/stories/010.002.system-config-redis-cache.story.md]
@@ -147,7 +159,9 @@ const systemConfigCrudRoutes = createCrudRoutes({
 #### 测试要求
 #### 测试要求
 - 验证自定义路由与CRUD路由聚合正确
 - 验证自定义路由与CRUD路由聚合正确
 - 验证缓存刷新机制正确工作
 - 验证缓存刷新机制正确工作
-- 验证多租户缓存隔离
+- **验证多租户缓存隔离**: 确保不同租户的配置缓存完全隔离
+- **验证多租户数据隔离**: 确保操作只影响当前租户的数据
+- **验证租户ID提取**: 确保从上下文中正确提取tenantId
 - 验证API接口兼容性
 - 验证API接口兼容性
 - 验证现有功能无回归
 - 验证现有功能无回归
 
 
@@ -155,6 +169,7 @@ const systemConfigCrudRoutes = createCrudRoutes({
 | Date | Version | Description | Author |
 | Date | Version | Description | Author |
 |------|---------|-------------|--------|
 |------|---------|-------------|--------|
 | 2025-11-22 | 1.0 | 初始故事创建 | Bob (Scrum Master) |
 | 2025-11-22 | 1.0 | 初始故事创建 | Bob (Scrum Master) |
+| 2025-11-22 | 1.1 | 添加对照文件路径标注,强调多租户隔离要求 | Bob (Scrum Master) |
 
 
 ## Dev Agent Record
 ## Dev Agent Record