فهرست منبع

📋 docs(story): 创建史诗010故事010.002 - 系统配置Redis缓存

创建详细的故事文档,包含:
- Redis缓存集成实现
- 缓存键格式和TTL配置
- 缓存失效和穿透保护机制
- 多租户缓存隔离策略
- 完整的测试场景覆盖

🤖 Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 1 ماه پیش
والد
کامیت
ef76e1b4e0
1فایلهای تغییر یافته به همراه124 افزوده شده و 0 حذف شده
  1. 124 0
      docs/stories/010.002.system-config-redis-cache.story.md

+ 124 - 0
docs/stories/010.002.system-config-redis-cache.story.md

@@ -0,0 +1,124 @@
+# Story 010.002: system-config-redis-cache
+
+## Status
+Draft
+
+## Story
+**As a** 系统管理员,
+**I want** 为系统配置模块添加Redis缓存支持,优化配置访问性能,
+**so that** 可以显著减少数据库访问次数,提高系统配置读取效率
+
+## Acceptance Criteria
+1. 在系统配置服务中添加Redis缓存功能
+2. 实现缓存键格式:`system_config:{tenantId}:{configKey}`
+3. 设置默认TTL为1小时
+4. 配置更新时自动清除相关缓存
+5. 实现缓存穿透保护机制
+6. 验证现有功能保持完整,无回归
+
+## Tasks / Subtasks
+- [ ] 扩展系统配置服务添加Redis缓存方法 (AC: 1, 2)
+  - [ ] 在SystemConfigServiceMt中添加RedisUtil依赖
+  - [ ] 实现带缓存的getConfigByKey方法
+  - [ ] 实现带缓存的getConfigsByKeys方法
+  - [ ] 实现缓存清除方法
+- [ ] 实现缓存策略和TTL配置 (AC: 3)
+  - [ ] 配置默认TTL为1小时
+  - [ ] 实现可配置的TTL参数
+  - [ ] 添加缓存键格式化工具方法
+- [ ] 实现缓存失效机制 (AC: 4)
+  - [ ] 在setConfig方法中添加缓存清除逻辑
+  - [ ] 在deleteConfig方法中添加缓存清除逻辑
+  - [ ] 在update方法中添加缓存清除逻辑
+- [ ] 实现缓存穿透保护 (AC: 5)
+  - [ ] 添加空值缓存机制
+  - [ ] 实现短TTL的空值缓存
+  - [ ] 添加缓存预热机制
+- [ ] 创建Redis缓存集成测试 (AC: 6)
+  - [ ] 创建缓存功能集成测试
+  - [ ] 测试缓存命中场景
+  - [ ] 测试缓存失效场景
+  - [ ] 测试缓存穿透保护
+- [ ] 验证现有功能无回归 (AC: 6)
+  - [ ] 运行现有系统配置测试
+  - [ ] 验证共享CRUD包集成正常
+
+## Dev Notes
+
+### 技术栈信息 [Source: architecture/tech-stack.md]
+- **运行时**: Node.js 20.18.3
+- **框架**: Hono 4.8.5 (Web框架和API路由)
+- **数据库**: PostgreSQL 17 (通过TypeORM)
+- **ORM**: TypeORM 0.3.25 (实体管理)
+- **缓存**: Redis 7.0.0 (会话管理和缓存)
+
+### 项目结构信息 [Source: architecture/source-tree.md]
+- **包位置**: `packages/core-module-mt/system-config-module-mt/`
+- **Redis工具位置**: `packages/shared-utils/src/utils/redis.util.ts`
+- **现有模块参考**: `packages/core-module-mt/file-module-mt/`
+
+### Redis工具集成模式 [Source: packages/shared-utils/src/utils/redis.util.ts]
+- **单例模式**: 使用RedisUtil.getInstance()获取实例
+- **连接管理**: 自动连接和断开连接
+- **键值操作**: set/get/del方法支持TTL
+- **错误处理**: 内置错误处理机制
+
+### 系统配置服务现有结构 [Source: packages/core-module-mt/system-config-module-mt/src/services/system-config.service.mt.ts]
+- **继承模式**: 继承GenericCrudService<SystemConfigMt>
+- **租户配置**: 通过tenantOptions配置租户隔离
+- **用户跟踪**: 通过userTracking配置用户跟踪
+- **自定义方法**: getConfigByKey, getConfigsByKeys, setConfig, deleteConfig等
+
+### 缓存策略设计
+- **缓存键格式**: `system_config:{tenantId}:{configKey}` [参考: docs/epic-010-system-config-multi-tenant.md]
+- **默认TTL**: 1小时 [参考: docs/epic-010-system-config-multi-tenant.md]
+- **空值缓存**: 短TTL (如5分钟) 防止缓存穿透
+- **缓存预热**: 系统启动时预加载常用配置
+
+### 集成方法
+- **依赖注入**: 在SystemConfigServiceMt构造函数中注入RedisUtil
+- **缓存优先**: 先查询缓存,缓存未命中再查询数据库
+- **写穿透**: 数据更新时同步更新缓存
+- **缓存清除**: 配置更新时清除相关缓存
+
+### 测试
+
+#### 测试标准 [Source: architecture/testing-strategy.md]
+- **测试框架**: Vitest + hono/testing
+- **测试位置**: `packages/core-module-mt/system-config-module-mt/tests/`
+- **测试类型**: 单元测试 + 集成测试
+- **覆盖率目标**: 单元测试 ≥ 80%,集成测试 ≥ 60%
+
+#### 测试文件结构
+- `tests/integration/system-config-redis-cache.integration.test.ts` - Redis缓存集成测试
+- 现有测试文件保持不变
+
+#### 测试场景
+- 缓存命中测试
+- 缓存未命中测试
+- 缓存失效测试
+- 缓存穿透保护测试
+- 多租户缓存隔离测试
+
+#### 现有模块参考模式
+- **认证模块**: `packages/core-module-mt/auth-module-mt/`
+- **用户模块**: `packages/core-module-mt/user-module-mt/`
+- **文件模块**: `packages/core-module-mt/file-module-mt/`
+- **命名约定**: 所有文件使用 `.mt.ts` 后缀,遵循多租户包命名规范
+
+## Change Log
+| Date | Version | Description | Author |
+|------|---------|-------------|--------|
+| 2025-11-20 | 1.0 | 初始故事创建 | Bob (Scrum Master) |
+
+## Dev Agent Record
+
+### Agent Model Used
+
+### Debug Log References
+
+### Completion Notes List
+
+### File List
+
+## QA Results