Completed
As a 系统管理员, I want 用自定义路由替代通用CRUD路由,实现缓存自动刷新, so that 在管理后台更新系统配置时能自动刷新相应的key的Redis缓存
packages/core-module-mt/system-config-module-mt/src/routes/custom/ 目录packages/core-module-mt/system-config-module-mt/src/routes/custom/create-system-config.mt.tspackages/core-module-mt/system-config-module-mt/src/routes/custom/update-system-config.mt.tspackages/core-module-mt/system-config-module-mt/src/routes/custom/delete-system-config.mt.tspackages/core-module-mt/system-config-module-mt/src/routes/system-config.routes.mt.tspackages/core-module-mt/system-config-module-mt/tests/integration/system-config.routes.integration.test.tspackages/core-module-mt/system-config-module-mt/src/entities/ - 实体定义 (使用 .mt.ts 后缀)src/schemas/ - Zod Schema定义 (使用 .mt.ts 后缀)src/services/ - 服务实现 (使用 .mt.ts 后缀)src/routes/ - API路由 (使用 .mt.ts 后缀)src/routes/custom/ - 自定义路由 (新增)tests/ - 测试文件auth-module-mt/ - 认证模块user-module-mt/ - 用户模块file-module-mt/ - 文件模块orders-module-mt/ - 订单模块 (聚合写法参考)// 订单模块的聚合写法示例
const userOrderRoutes = new OpenAPIHono()
.route('/', createOrderRoutes)
.route('/', cancelOrderRoutes)
.route('/', userOrderCrudRoutes);
system_config:{tenantId}:{configKey}当前使用通用CRUD路由:
const systemConfigCrudRoutes = createCrudRoutes({
entity: SystemConfigMt,
createSchema: CreateSystemConfigSchema,
updateSchema: UpdateSystemConfigSchema,
getSchema: SystemConfigSchema,
listSchema: SystemConfigSchema,
searchFields: ['configKey', 'description'],
middleware: [authMiddleware],
tenantOptions: {
enabled: true,
tenantIdField: 'tenantId',
autoExtractFromContext: true
}
});
GenericCrudService<T> 抽象类tenantOptions 配置租户隔离userTracking 配置用户跟踪getList(), getById(), create(), update(), delete()强制多租户隔离要求:
system_config:{tenantId}:{configKey} [对照: packages/shared-utils/src/utils/redis.util.ts:68]从Epic 010的前4个故事中提取的关键经验:
{ configKey: missingKeys }语法错误,改为{ configKey: In(missingKeys) } [Source: docs/stories/010.002.system-config-redis-cache.story.md]packages/core-module-mt/system-config-module-mt/tests/tests/integration/ - 集成测试
system-config.routes.integration.test.ts - 现有路由集成测试system-config-custom-routes.integration.test.ts - 新增自定义路由集成测试| Date | Version | Description | Author |
|---|---|---|---|
| 2025-11-22 | 1.0 | 初始故事创建 | Bob (Scrum Master) |
| 2025-11-22 | 1.1 | 添加对照文件路径标注,强调多租户隔离要求 | Bob (Scrum Master) |
@d8d/auth-module-mt 改为 @d8d/core-module-mt/auth-module-mtconfig.id.toString() 改为字符串参数SystemConfigServiceMt 的 delete 方法content 字段ErrorSchema 要求src/routes/custom/readOnly: trueSystemConfigServiceMt.delete() 方法确保缓存刷新tenantId,缓存键包含租户前缀创建的文件:
packages/core-module-mt/system-config-module-mt/src/routes/custom/create-system-config.mt.tspackages/core-module-mt/system-config-module-mt/src/routes/custom/update-system-config.mt.tspackages/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.tspackages/core-module-mt/system-config-module-mt/src/services/system-config.service.mt.tspackages/core-module-mt/system-config-module-mt/tests/integration/system-config.routes.integration.test.ts