67 lines
2.3 KiB
Markdown
67 lines
2.3 KiB
Markdown
# 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
|
||
-
|