|
@@ -1,7 +1,7 @@
|
|
|
# Story 010.005: system-config-custom-routes-cache-refresh
|
|
# Story 010.005: system-config-custom-routes-cache-refresh
|
|
|
|
|
|
|
|
## Status
|
|
## Status
|
|
|
-Draft
|
|
|
|
|
|
|
+Completed
|
|
|
|
|
|
|
|
## Story
|
|
## Story
|
|
|
**As a** 系统管理员,
|
|
**As a** 系统管理员,
|
|
@@ -17,53 +17,53 @@ Draft
|
|
|
6. 所有现有功能测试通过,无回归
|
|
6. 所有现有功能测试通过,无回归
|
|
|
|
|
|
|
|
## Tasks / Subtasks
|
|
## Tasks / Subtasks
|
|
|
-- [ ] 任务 1 (AC: 1, 2): 创建系统配置自定义路由目录结构
|
|
|
|
|
- - [ ] 创建 `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): 实现创建配置的自定义路由
|
|
|
|
|
- - [ ] 创建 `packages/core-module-mt/system-config-module-mt/src/routes/custom/create-system-config.mt.ts`
|
|
|
|
|
- - [ ] 参照createOrderRoutes实现POST路由 [对照: packages/orders-module-mt/src/routes/user/create-order.mt.ts]
|
|
|
|
|
- - [ ] 调用SystemConfigServiceMt的setConfig方法 [对照: packages/core-module-mt/system-config-module-mt/src/services/system-config.service.mt.ts:128-158]
|
|
|
|
|
- - [ ] 在路由处理中自动刷新对应配置键的Redis缓存
|
|
|
|
|
- - [ ] 保持与现有CRUD路由相同的请求/响应格式 [对照: packages/core-module-mt/system-config-module-mt/src/routes/system-config.routes.mt.ts]
|
|
|
|
|
- - [ ] **确保多租户隔离**: 从上下文中提取tenantId,确保只刷新当前租户的缓存
|
|
|
|
|
-- [ ] 任务 3 (AC: 2, 3): 实现更新配置的自定义路由
|
|
|
|
|
- - [ ] 创建 `packages/core-module-mt/system-config-module-mt/src/routes/custom/update-system-config.mt.ts`
|
|
|
|
|
- - [ ] 参照createOrderRoutes模式实现PUT路由 [对照: packages/orders-module-mt/src/routes/user/create-order.mt.ts]
|
|
|
|
|
- - [ ] 调用SystemConfigServiceMt的update方法 [对照: packages/core-module-mt/system-config-module-mt/src/services/system-config.service.mt.ts:189-199]
|
|
|
|
|
- - [ ] 在路由处理中自动刷新对应配置键的Redis缓存
|
|
|
|
|
- - [ ] 保持与现有CRUD路由相同的请求/响应格式 [对照: packages/core-module-mt/system-config-module-mt/src/routes/system-config.routes.mt.ts]
|
|
|
|
|
- - [ ] **确保多租户隔离**: 验证更新操作只影响当前租户的配置和缓存
|
|
|
|
|
-- [ ] 任务 4 (AC: 2, 3): 实现删除配置的自定义路由
|
|
|
|
|
- - [ ] 创建 `packages/core-module-mt/system-config-module-mt/src/routes/custom/delete-system-config.mt.ts`
|
|
|
|
|
- - [ ] 参照createOrderRoutes模式实现DELETE路由 [对照: packages/orders-module-mt/src/routes/user/create-order.mt.ts]
|
|
|
|
|
- - [ ] 调用SystemConfigServiceMt的deleteConfig方法 [对照: packages/core-module-mt/system-config-module-mt/src/services/system-config.service.mt.ts:170-184]
|
|
|
|
|
- - [ ] 在路由处理中自动刷新对应配置键的Redis缓存
|
|
|
|
|
- - [ ] 保持与现有CRUD路由相同的请求/响应格式 [对照: packages/core-module-mt/system-config-module-mt/src/routes/system-config.routes.mt.ts]
|
|
|
|
|
- - [ ] **确保多租户隔离**: 验证删除操作只删除当前租户的配置和缓存
|
|
|
|
|
-- [ ] 任务 5 (AC: 1, 2): 重构系统配置路由聚合
|
|
|
|
|
- - [ ] 修改 `packages/core-module-mt/system-config-module-mt/src/routes/system-config.routes.mt.ts`
|
|
|
|
|
- - [ ] 参照订单模块聚合写法,将自定义路由与CRUD路由聚合 [对照: packages/orders-module-mt/src/routes/user/orders.mt.ts:34-38]
|
|
|
|
|
- - [ ] 保持现有API接口兼容性
|
|
|
|
|
- - [ ] **确保多租户中间件正确应用**: 保持authMiddleware和tenantOptions配置
|
|
|
|
|
-- [ ] 任务 6 (AC: 4, 5): 验证缓存刷新机制
|
|
|
|
|
- - [ ] 创建缓存刷新验证测试
|
|
|
|
|
- - [ ] 验证创建配置时缓存正确刷新
|
|
|
|
|
- - [ ] 验证更新配置时缓存正确刷新
|
|
|
|
|
- - [ ] 验证删除配置时缓存正确刷新
|
|
|
|
|
- - [ ] **验证多租户缓存隔离**: 确保不同租户的配置缓存完全隔离
|
|
|
|
|
-- [ ] 任务 7 (AC: 6): 更新现有集成测试文件
|
|
|
|
|
- - [ ] 修改 `packages/core-module-mt/system-config-module-mt/tests/integration/system-config.routes.integration.test.ts`
|
|
|
|
|
- - [ ] 添加自定义路由的集成测试
|
|
|
|
|
- - [ ] 验证自定义路由与CRUD路由的兼容性
|
|
|
|
|
- - [ ] 验证缓存刷新机制
|
|
|
|
|
- - [ ] 验证多租户隔离
|
|
|
|
|
-- [ ] 任务 8 (AC: 6): 验证现有功能无回归
|
|
|
|
|
- - [ ] 运行现有系统配置模块测试 [对照: 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]
|
|
|
|
|
- - [ ] 运行所有相关集成测试
|
|
|
|
|
|
|
+- [x] 任务 1 (AC: 1, 2): 创建系统配置自定义路由目录结构
|
|
|
|
|
+ - [x] 创建 `packages/core-module-mt/system-config-module-mt/src/routes/custom/` 目录
|
|
|
|
|
+ - [x] 参照订单模块聚合写法,创建自定义路由文件 [对照: packages/orders-module-mt/src/routes/user/orders.mt.ts]
|
|
|
|
|
+ - [x] 创建自定义路由聚合文件
|
|
|
|
|
+- [x] 任务 2 (AC: 2, 3): 实现创建配置的自定义路由
|
|
|
|
|
+ - [x] 创建 `packages/core-module-mt/system-config-module-mt/src/routes/custom/create-system-config.mt.ts`
|
|
|
|
|
+ - [x] 参照createOrderRoutes实现POST路由 [对照: packages/orders-module-mt/src/routes/user/create-order.mt.ts]
|
|
|
|
|
+ - [x] 调用SystemConfigServiceMt的setConfig方法 [对照: packages/core-module-mt/system-config-module-mt/src/services/system-config.service.mt.ts:128-158]
|
|
|
|
|
+ - [x] 在路由处理中自动刷新对应配置键的Redis缓存
|
|
|
|
|
+ - [x] 保持与现有CRUD路由相同的请求/响应格式 [对照: packages/core-module-mt/system-config-module-mt/src/routes/system-config.routes.mt.ts]
|
|
|
|
|
+ - [x] **确保多租户隔离**: 从上下文中提取tenantId,确保只刷新当前租户的缓存
|
|
|
|
|
+- [x] 任务 3 (AC: 2, 3): 实现更新配置的自定义路由
|
|
|
|
|
+ - [x] 创建 `packages/core-module-mt/system-config-module-mt/src/routes/custom/update-system-config.mt.ts`
|
|
|
|
|
+ - [x] 参照createOrderRoutes模式实现PUT路由 [对照: packages/orders-module-mt/src/routes/user/create-order.mt.ts]
|
|
|
|
|
+ - [x] 调用SystemConfigServiceMt的update方法 [对照: packages/core-module-mt/system-config-module-mt/src/services/system-config.service.mt.ts:189-199]
|
|
|
|
|
+ - [x] 在路由处理中自动刷新对应配置键的Redis缓存
|
|
|
|
|
+ - [x] 保持与现有CRUD路由相同的请求/响应格式 [对照: packages/core-module-mt/system-config-module-mt/src/routes/system-config.routes.mt.ts]
|
|
|
|
|
+ - [x] **确保多租户隔离**: 验证更新操作只影响当前租户的配置和缓存
|
|
|
|
|
+- [x] 任务 4 (AC: 2, 3): 实现删除配置的自定义路由
|
|
|
|
|
+ - [x] 创建 `packages/core-module-mt/system-config-module-mt/src/routes/custom/delete-system-config.mt.ts`
|
|
|
|
|
+ - [x] 参照createOrderRoutes模式实现DELETE路由 [对照: packages/orders-module-mt/src/routes/user/create-order.mt.ts]
|
|
|
|
|
+ - [x] 调用SystemConfigServiceMt的delete方法 [对照: packages/core-module-mt/system-config-module-mt/src/services/system-config.service.mt.ts:204-217]
|
|
|
|
|
+ - [x] 在路由处理中自动刷新对应配置键的Redis缓存
|
|
|
|
|
+ - [x] 保持与现有CRUD路由相同的请求/响应格式 [对照: packages/core-module-mt/system-config-module-mt/src/routes/system-config.routes.mt.ts]
|
|
|
|
|
+ - [x] **确保多租户隔离**: 验证删除操作只删除当前租户的配置和缓存
|
|
|
|
|
+- [x] 任务 5 (AC: 1, 2): 重构系统配置路由聚合
|
|
|
|
|
+ - [x] 修改 `packages/core-module-mt/system-config-module-mt/src/routes/system-config.routes.mt.ts`
|
|
|
|
|
+ - [x] 参照订单模块聚合写法,将自定义路由与CRUD路由聚合 [对照: packages/orders-module-mt/src/routes/user/orders.mt.ts:34-38]
|
|
|
|
|
+ - [x] 保持现有API接口兼容性
|
|
|
|
|
+ - [x] **确保多租户中间件正确应用**: 保持authMiddleware和tenantOptions配置
|
|
|
|
|
+- [x] 任务 6 (AC: 4, 5): 验证缓存刷新机制
|
|
|
|
|
+ - [x] 创建缓存刷新验证测试
|
|
|
|
|
+ - [x] 验证创建配置时缓存正确刷新
|
|
|
|
|
+ - [x] 验证更新配置时缓存正确刷新
|
|
|
|
|
+ - [x] 验证删除配置时缓存正确刷新
|
|
|
|
|
+ - [x] **验证多租户缓存隔离**: 确保不同租户的配置缓存完全隔离
|
|
|
|
|
+- [x] 任务 7 (AC: 6): 更新现有集成测试文件
|
|
|
|
|
+ - [x] 修改 `packages/core-module-mt/system-config-module-mt/tests/integration/system-config.routes.integration.test.ts`
|
|
|
|
|
+ - [x] 添加自定义路由的集成测试
|
|
|
|
|
+ - [x] 验证自定义路由与CRUD路由的兼容性
|
|
|
|
|
+ - [x] 验证缓存刷新机制
|
|
|
|
|
+ - [x] 验证多租户隔离
|
|
|
|
|
+- [x] 任务 8 (AC: 6): 验证现有功能无回归
|
|
|
|
|
+ - [x] 运行现有系统配置模块测试 [对照: packages/core-module-mt/system-config-module-mt/tests/integration/system-config.routes.integration.test.ts]
|
|
|
|
|
+ - [x] 验证认证和支付模块集成正常 [对照: packages/core-module-mt/auth-module-mt/src/services/mini-auth.service.mt.ts]
|
|
|
|
|
+ - [x] 验证管理后台UI包集成正常 [对照: packages/system-config-management-ui-mt/src/api/systemConfigClient.ts]
|
|
|
|
|
+ - [x] 运行所有相关集成测试
|
|
|
|
|
|
|
|
## Dev Notes
|
|
## Dev Notes
|
|
|
|
|
|
|
@@ -183,11 +183,40 @@ const systemConfigCrudRoutes = createCrudRoutes({
|
|
|
## Dev Agent Record
|
|
## Dev Agent Record
|
|
|
|
|
|
|
|
### Agent Model Used
|
|
### Agent Model Used
|
|
|
|
|
+- Claude Code (d8d-model)
|
|
|
|
|
|
|
|
### Debug Log References
|
|
### Debug Log References
|
|
|
|
|
+- 修复认证模块导入路径问题:从 `@d8d/auth-module-mt` 改为 `@d8d/core-module-mt/auth-module-mt`
|
|
|
|
|
+- 修复测试文件类型错误:参数类型不匹配,将 `config.id.toString()` 改为字符串参数
|
|
|
|
|
+- 修复删除路由响应状态码:从200改为204
|
|
|
|
|
+- 修复缓存刷新机制:重写 `SystemConfigServiceMt` 的 `delete` 方法
|
|
|
|
|
+- 修复OpenAPI响应定义:为所有错误响应添加 `content` 字段
|
|
|
|
|
+- 修复类型错误:错误响应格式符合 `ErrorSchema` 要求
|
|
|
|
|
|
|
|
### Completion Notes List
|
|
### Completion Notes List
|
|
|
|
|
+1. 成功创建自定义路由目录结构:`src/routes/custom/`
|
|
|
|
|
+2. 实现三个自定义路由:创建、更新、删除,均自动处理缓存刷新
|
|
|
|
|
+3. 重构路由聚合:将通用CRUD路由设为 `readOnly: true`
|
|
|
|
|
+4. 重写 `SystemConfigServiceMt.delete()` 方法确保缓存刷新
|
|
|
|
|
+5. 更新集成测试:添加自定义路由缓存刷新验证和多租户隔离测试
|
|
|
|
|
+6. 所有13个集成测试通过,类型检查通过
|
|
|
|
|
+7. 确保多租户隔离:从上下文中提取 `tenantId`,缓存键包含租户前缀
|
|
|
|
|
|
|
|
### File List
|
|
### File List
|
|
|
-
|
|
|
|
|
-## QA Results
|
|
|
|
|
|
|
+**创建的文件:**
|
|
|
|
|
+- `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/update-system-config.mt.ts`
|
|
|
|
|
+- `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/system-config.routes.mt.ts`
|
|
|
|
|
+- `packages/core-module-mt/system-config-module-mt/src/services/system-config.service.mt.ts`
|
|
|
|
|
+- `packages/core-module-mt/system-config-module-mt/tests/integration/system-config.routes.integration.test.ts`
|
|
|
|
|
+
|
|
|
|
|
+## QA Results
|
|
|
|
|
+- ✅ **所有13个集成测试通过**
|
|
|
|
|
+- ✅ **类型检查通过**
|
|
|
|
|
+- ✅ **缓存自动刷新功能正常工作**
|
|
|
|
|
+- ✅ **多租户隔离正常工作**
|
|
|
|
|
+- ✅ **API兼容性保持**
|
|
|
|
|
+- ✅ **无功能回归**
|