expo-popcore-app/findings.md

2.3 KiB
Raw Blame History

Findings & Decisions

Requirements

根据用户需求,需要实现以下功能:

  • 单个删除生成记录
  • 删除成功后刷新列表
  • 删除失败显示错误提示
  • 删除操作有确认对话框(已有)
  • 单元测试覆盖率 > 80%
  • 严格遵循 TDD 规范

Research Findings

现有代码分析

  1. 页面组件 (app/generationRecord.tsx):

    • 已有删除按钮和删除确认对话框
    • handleDelete 函数目前只是打印日志
    • 已使用 useTemplateGenerations hook
    • 已有删除确认组件 DeleteConfirmDialog
  2. 现有 Hooks (hooks/use-template-generations.ts):

    • 使用 root.get(TemplateGenerationController) 获取控制器
    • 使用 handleError 处理错误
    • 提供了 refetch 方法用于刷新列表
    • 模式:自定义状态管理 + useCallback
  3. 参考实现 (hooks/use-template-actions.ts):

    • 类似的模式loading, error 状态
    • 使用 handleError 包装 API 调用
    • 返回函数和状态
  4. SDK 控制器 (node_modules/@repo/sdk/src/controllers/template-generation.controller.ts):

    • delete(body: { id: string }): Promise<{ message: string }>
    • batchDelete(body: { ids: string[] }): Promise<{ message: string }>
    • 都需要 @RequirePermissions({ template: ['run'] })
  5. 测试配置:

    • 使用 Jest 作为测试框架
    • 已安装 @testing-library/react-native
    • 测试脚本:npm test

技术决策

  • 不使用 @tanstack/react-query(项目未安装)
  • 遵循现有代码模式(自定义 hooks
  • 使用 handleError 统一错误处理

Technical Decisions

Decision Rationale
创建独立的 actions hook 分离关注点,遵循单一职责原则
使用现有 handleError 模式 保持代码一致性
导出 DeleteGeneration 类型 便于类型推断
测试使用 @testing-library/react-hooks React hooks 测试标准方式

Issues Encountered

Issue Resolution

Resources

  • 项目测试命令: npm test / npm test:watch / npm test:coverage
  • SDK 控制器路径: node_modules/@repo/sdk/src/controllers/template-generation.controller.ts
  • 现有 hooks 模式: hooks/use-template-actions.ts

Visual/Browser Findings