Prechádzať zdrojové kódy

fix(story013.002): 修复system-config类型错误并更新故事进度

- 修复system-config.service.ts中的override修饰符缺失
- 修复system-config.service.ts中的字符串类型错误
- 更新故事013.002任务状态和进度

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

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 1 týždeň pred
rodič
commit
768d48fd14

+ 6 - 5
docs/stories/012.004.story.md

@@ -42,11 +42,11 @@ Draft
   - [ ] 更新`allin-packages/order-module/src/routes/index.ts`导出新的路由
 
 - [ ] 任务2:数据统计API实现(创建独立的statistics-module)(AC:4,5)
-  - [ ] 创建`allin-packages/statistics-module/`目录结构,遵循后端模块包标准:
-    - [ ] `package.json` - 包配置(名称:`@d8d/allin-statistics-module`,依赖:`@d8d/allin-disability-module`、`@d8d/allin-order-module`、`@d8d/shared-types`、`@d8d/shared-utils`、`@d8d/shared-crud`等)
-    - [ ] `tsconfig.json` - TypeScript配置(参考现有模块配置)
-    - [ ] `vitest.config.ts` - 测试配置(参考现有模块配置)
-    - [ ] `src/` - 源代码目录
+  - [ ] 创建`allin-packages/statistics-module/`目录结构,遵循后端模块包标准,参考现有模块的文件结构和配置
+    - [ ] `package.json` - 包配置(名称:`@d8d/allin-statistics-module`,参考`allin-packages/order-module/package.json`的配置结构和依赖模式,主要依赖:`@d8d/allin-disability-module`、`@d8d/allin-order-module`、`@d8d/shared-types`、`@d8d/shared-utils`、`@d8d/shared-crud`、`@hono/zod-openapi`、`typeorm`、`zod`等)
+    - [ ] `tsconfig.json` - TypeScript配置(参考`allin-packages/order-module/tsconfig.json`的配置)
+    - [ ] `vitest.config.ts` - 测试配置(参考`allin-packages/order-module/vitest.config.ts`的配置)
+    - [ ] `src/` - 源代码目录,参考现有模块的目录结构组织
   - [ ] 创建`src/routes/statistics.routes.ts`路由文件,实现6个统计接口:
     - [ ] 残疾类型分布:`GET /statistics/disability-type-distribution`
     - [ ] 性别分布:`GET /statistics/gender-distribution`
@@ -229,6 +229,7 @@ Draft
 | 2025-12-17 | 1.0 | 初始故事创建 | Bob(Scrum Master) |
 | 2025-12-17 | 1.1 | 根据检查清单反馈更新:添加史诗上下文、修正引用格式、明确统计模块决策、添加企业数据隔离实现细节、完善性能优化策略和边缘情况测试 | Bob(Scrum Master) |
 | 2025-12-17 | 1.2 | 架构决策更新:采用方案A,明确statistics-module职责范围仅限跨实体通用统计,与故事012.003的企业统计功能职责划分清晰 | Bob(Scrum Master) |
+| 2025-12-17 | 1.3 | 任务重写:根据创建新模块决策,重写任务1-4,提供具体的文件路径、package.json依赖、集成测试等详细实施指导 | Bob(Scrum Master) |
 
 ## 开发代理记录
 此部分由开发代理在实施过程中填充

+ 2 - 2
docs/stories/013.002.story.md

@@ -42,12 +42,12 @@ In Progress
 - [x] 修复`allin-packages/order-module/src/services/order.service.ts`中缺失的`override`修饰符(第27、49行)
 - [x] 修复`allin-packages/platform-module/src/services/platform.service.ts`中缺失的`override`修饰符(第13、41、71行)
 - [x] 修复`allin-packages/salary-module/src/services/salary.service.ts`中缺失的`override`修饰符(第17、47行)
-- [ ] 修复`core-module/system-config-module/src/services/system-config.service.ts`中缺失的`override`修饰符(第182、196行)
+- [x] 修复`core-module/system-config-module/src/services/system-config.service.ts`中缺失的`override`修饰符(第182、196行)
 
 ### 任务4:修复可能为`undefined`的错误和类型不匹配(AC:1,2,3)
 - [ ] 修复`allin-packages/disability-module/src/services/disabled-person.service.ts`中`personData`可能为`undefined`的错误(第332、334、342、344行)
 - [ ] 修复`allin-packages/disability-module/src/services/disabled-person.service.ts`第352行:`Partial<DisabledPerson> | undefined`类型不匹配
-- [ ] 修复`core-module/system-config-module/src/services/system-config.service.ts`中的字符串类型错误(第72、73行)
+- [x] 修复`core-module/system-config-module/src/services/system-config.service.ts`中的字符串类型错误(第72、73行)
 - [ ] 添加必要的类型守卫和空值检查
 
 ### 任务5:修复测试中的类型错误(AC:1,2,3)

+ 11 - 6
packages/core-module/system-config-module/src/services/system-config.service.ts

@@ -69,13 +69,18 @@ export class SystemConfigService extends GenericCrudService<SystemConfig> {
     // 2. 处理缓存命中的键
     configKeys.forEach(key => {
       const cachedValue = cachedValues[key];
-      if (cachedValue !== null && !redisUtil.isNullValue(cachedValue)) {
-        result[key] = cachedValue;
-      } else if (cachedValue === null) {
+      if (cachedValue === undefined) {
+        // 空值缓存,跳过
+        return;
+      }
+      if (cachedValue === null) {
         // 缓存未命中,需要查询数据库
         missingKeys.push(key);
+      } else if (!redisUtil.isNullValue(cachedValue)) {
+        // 有效缓存值
+        result[key] = cachedValue;
       }
-      // 如果是空值缓存,不添加到结果中(保持为undefined)
+      // 如果是空值缓存(redisUtil.isNullValue返回true),不添加到结果中
     });
 
     // 3. 如果有未命中的键,查询数据库
@@ -179,7 +184,7 @@ export class SystemConfigService extends GenericCrudService<SystemConfig> {
   /**
    * 重写update方法,在更新时清除缓存
    */
-  async update(id: number, data: Partial<SystemConfig>): Promise<SystemConfig | null> {
+  override async update(id: number, data: Partial<SystemConfig>): Promise<SystemConfig | null> {
     const updatedConfig = await super.update(id, data);
 
     if (updatedConfig) {
@@ -193,7 +198,7 @@ export class SystemConfigService extends GenericCrudService<SystemConfig> {
   /**
    * 重写delete方法,在删除时清除缓存
    */
-  async delete(id: number): Promise<boolean> {
+  override async delete(id: number): Promise<boolean> {
     // 先获取配置信息,以便后续清除缓存
     const config = await this.getById(id);