expo-popcore-app/findings.md

67 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
-