Przeglądaj źródła

docs(story): 在史诗013中新增故事013.004修复mini类型错误

- 创建故事013.004文档(修复mini小程序类型错误)
- 更新史诗013文档,添加故事013-04描述和验收标准
- 更新故事状态为Approved,准备开发

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 miesiąc temu
rodzic
commit
68d2feeec5
2 zmienionych plików z 180 dodań i 0 usunięć
  1. 21 0
      docs/prd/epic-013-type-error-fixes.md
  2. 159 0
      docs/stories/013.004.story.md

+ 21 - 0
docs/prd/epic-013-type-error-fixes.md

@@ -49,6 +49,7 @@
 2. 订单管理模块类型错误修复
 3. 核心模块类型错误修复
 4. 共享类型定义优化
+5. mini小程序类型错误修复
 
 **修复策略:**
 1. **精确类型定义**:使用准确的TypeScript类型,避免`any`类型
@@ -128,6 +129,26 @@
 - [ ] 现有测试套件无回归,所有测试继续通过
 - [ ] 代码符合项目编码和测试标准
 
+### 故事013-04:mini小程序类型错误修复
+**背景:** mini小程序项目是基于Taro框架的前端项目,在类型检查中发现多处类型错误,包括React组件类型兼容性问题、API响应类型处理、未使用代码清理等问题,需要修复以提高前端代码质量和类型安全性。
+
+**详细故事:** 参见故事文件 [013.004.story.md](../stories/013.004.story.md)
+
+**任务列表:**
+1. 修复`src/components/ui/form.tsx`中的Controller组件类型兼容性问题
+2. 修复`src/api.ts`中的unknown类型问题,确保hono/client RPC响应类型安全
+3. 清理未使用的导入和变量,提高代码整洁度
+4. 修复`tests/setup.ts`中的全局类型声明问题
+5. 检查并修复依赖包类型问题(`@d8d/auth-module`、`@d8d/file-module`等)
+6. 验证修复结果,确保类型检查通过且无回归
+
+**验收标准:**
+- [ ] mini项目类型检查通过(`pnpm typecheck`无错误)
+- [ ] 所有测试通过,类型错误已修复
+- [ ] 现有小程序功能正常,无回归
+- [ ] 类型定义更加精确,减少`any`类型和`unknown`类型使用
+- [ ] 代码符合项目类型安全标准
+
 ## 兼容性要求
 
 - [ ] 现有API接口保持不变,只进行类型层面的修复

+ 159 - 0
docs/stories/013.004.story.md

@@ -0,0 +1,159 @@
+# 故事 013.004:修复mini小程序类型错误
+
+## 状态
+Approved
+
+## 故事
+**作为**系统开发人员,
+**我希望**修复mini小程序项目中的类型错误,
+**以便**提高代码质量、减少运行时错误风险并增强TypeScript类型安全性。
+
+## 验收标准
+从史诗文件复制的验收标准编号列表
+
+1. [ ] mini项目类型检查通过(`pnpm typecheck`无错误)
+2. [ ] 所有测试通过,类型错误已修复
+3. [ ] 现有小程序功能正常,无回归
+4. [ ] 类型定义更加精确,减少`any`类型和`unknown`类型使用
+5. [ ] 代码符合项目类型安全标准
+
+## 任务 / 子任务
+将故事分解为实施所需的具体任务和子任务。
+在相关处引用适用的验收标准编号。
+
+### 任务1:修复`form.tsx`中的Controller组件类型错误(AC:1,2,3)
+- [ ] 分析`src/components/ui/form.tsx`第38行的类型错误:`Controller`组件类型不兼容JSX元素类型
+- [ ] 检查React Hook Form的Controller组件类型定义
+- [ ] 修复类型不兼容问题,确保正确导入和使用类型
+- [ ] 验证修复后的表单组件正常工作
+
+### 任务2:修复`api.ts`中的unknown类型问题(AC:1,4,5)
+- [ ] 分析`src/api.ts`第34行的类型错误:响应对象类型为`unknown`
+- [ ] 检查hono/client RPC响应类型定义
+- [ ] 添加适当的类型断言或类型保护
+- [ ] 确保API客户端类型安全
+
+### 任务3:清理未使用的导入和变量(AC:1,5)
+- [ ] 清理`src/components/ui/avatar-upload.tsx`中的未使用导入(`Text`, `Button`, `iconSize`)
+- [ ] 清理`src/components/ui/label.tsx`中的未使用`ref`参数
+- [ ] 清理`src/pages/login/index.tsx`中的未使用导入(`Navbar`, `FormLabel`)
+- [ ] 清理`src/utils/minio.ts`中的未使用变量(`callbacks`, `progressDetails`)
+- [ ] 运行类型检查验证清理结果
+
+### 任务4:修复测试配置中的全局类型声明问题(AC:1,2)
+- [ ] 分析`tests/setup.ts`中的类型错误:全局变量重复声明和类型问题
+- [ ] 修复`defineAppConfig`全局类型声明
+- [ ] 确保测试环境类型定义正确
+- [ ] 验证测试可以正常执行
+
+### 任务5:检查并修复依赖包类型问题(AC:1,4)
+- [ ] 检查`@d8d/auth-module`缺少导出问题(`authMiddleware`, `enterpriseAuthMiddleware`)
+- [ ] 检查`@d8d/file-module`缺少导出问题(`File`, `FileService`)
+- [ ] 检查`@d8d/allin-disability-module`模块解析问题
+- [ ] 更新类型定义或调整导入方式
+
+### 任务6:验证修复结果(AC:1,2,3,5)
+- [ ] 运行类型检查:`cd mini && pnpm typecheck`
+- [ ] 运行所有测试:`cd mini && pnpm test`
+- [ ] 验证现有小程序功能正常
+- [ ] 确保无回归
+
+## 技术笔记
+
+### 现有系统集成
+- **集成模块**:mini小程序项目(基于Taro框架)
+- **技术栈**:Taro 4.1.4、React 18、TypeScript、Webpack 5、@tanstack/react-query、react-hook-form + zod、hono/client RPC
+- **遵循模式**:
+  - Taro小程序开发模式(`src/pages/`目录结构)
+  - React Hook Form表单处理模式
+  - hono/client RPC API调用模式
+  - Jest测试模式(mini使用Jest,其他包使用Vitest)
+- **接触点**:
+  - `src/components/ui/form.tsx`:表单组件
+  - `src/api.ts`:API客户端
+  - `tests/setup.ts`:测试配置
+  - 各页面组件和工具函数
+
+### 关键约束
+1. **向后兼容**:小程序功能必须保持不变,只进行类型层面的修复
+2. **测试完整性**:所有现有测试必须通过,包括组件测试和API测试
+3. **类型安全**:修复后应提高类型安全性,减少运行时错误风险
+4. **性能影响**:类型修复不应影响小程序运行时性能
+5. **框架兼容**:修复必须与Taro框架和React 18兼容
+
+### 集成方法
+1. **组件类型修复**:确保React组件类型与Taro框架兼容
+2. **API类型安全**:强化hono/client RPC响应类型处理
+3. **代码清理**:移除未使用代码,提高代码整洁度
+4. **测试配置修复**:确保测试环境类型定义正确
+5. **依赖类型检查**:验证模块导入的类型正确性
+
+## 开发笔记
+仅填充从docs文件夹中的实际工件提取的相关信息,与此故事相关:
+
+### 先前故事洞察
+- 史诗013已修复残疾人后端模块和server包的类型错误(故事013.001、013.002)
+- 故事013.003为史诗012新增路由创建了连通性集成测试
+- 本次故事专注于mini小程序项目的类型错误修复
+
+### 已知类型错误详情
+1. **`form.tsx` Controller组件错误**:
+   - 错误位置:`src/components/ui/form.tsx`第38行
+   - 错误描述:`Controller`不能用作JSX组件
+   - 涉及类型:React Hook Form的Controller组件与Taro/React类型兼容性问题
+
+2. **`api.ts` unknown类型错误**:
+   - 错误位置:`src/api.ts`第34行
+   - 错误描述:对象类型为`unknown`
+   - 涉及类型:hono/client RPC响应类型处理
+
+3. **未使用代码问题**:
+   - 多个文件中存在未使用的导入和变量
+   - 影响代码整洁度和类型检查
+
+4. **测试配置类型错误**:
+   - 错误位置:`tests/setup.ts`
+   - 错误描述:全局变量`defineAppConfig`重复声明和类型不存在
+   - 涉及类型:Taro全局类型定义
+
+5. **依赖包类型问题**:
+   - `@d8d/auth-module`等包缺少导出类型
+   - 模块解析类型问题
+
+### 修复策略
+1. **组件类型兼容性**:检查React Hook Form与Taro的兼容性,必要时调整类型定义
+2. **API响应类型处理**:添加类型断言或使用类型守卫处理`unknown`类型
+3. **代码清理**:使用ESLint或手动清理未使用代码
+4. **测试环境修复**:修正全局类型声明,确保测试配置正确
+5. **依赖类型修复**:检查包导出,必要时更新类型定义或调整导入方式
+
+### 风险缓解
+- **主要风险**:类型修复可能影响小程序运行时行为
+- **缓解措施**:小范围逐步修复,充分测试验证
+- **回滚计划**:如果修复导致问题,可以恢复类型定义更改
+
+### 兼容性验证
+- [ ] 无破坏性功能更改(仅类型层面修复)
+- [ ] 无数据库schema更改(不适用,前端项目)
+- [ ] UI更改遵循现有设计模式(仅类型修复,不影响UI)
+- [ ] 性能影响可忽略(仅编译时类型检查)
+
+### 相关技术文档
+- 史诗013文档:`docs/prd/epic-013-type-error-fixes.md`
+- 项目架构:`docs/architecture/`
+- TypeScript配置:`mini/tsconfig.json`
+- Taro文档:项目内部文档
+
+### 验证检查清单
+
+#### 范围验证
+- [ ] 故事可以在一个开发会话中完成(聚焦类型修复)
+- [ ] 集成方法直接(仅类型定义修改)
+- [ ] 遵循现有模式(Taro + TypeScript开发模式)
+- [ ] 无需设计或架构工作(纯修复工作)
+
+#### 清晰度检查
+- [ ] 故事需求明确(修复具体类型错误)
+- [ ] 集成点明确指定(form.tsx、api.ts、测试配置等)
+- [ ] 成功标准可测试(类型检查通过、测试通过)
+- [ ] 回滚方法简单(恢复类型定义更改)