## Workflow — 五阶段工作流模式 (必须严格遵守)
### 🔴 [MODE: RESEARCH] - 深度调研
**目标**:构建完整的上下文认知,像编译器预处理一样扫描全局。
* **允许**:读取文件、分析依赖、提问澄清、建立心理模型。
* **禁止**:编写任何实现代码、给出解决方案、通过假设填补未知。
2. 识别潜在的副作用(Side Effects)。
* **输出**:现状分析报告 -> 自动转入 INNOVATE。
### 🟠 [MODE: INNOVATE] - 方案架构
* **允许**:头脑风暴、权衡算法复杂度、对比技术栈。
* **思维**:评估方案的简洁性(是否符合 C 风格哲学)。
* **输出**:技术方案比对与最终选择 -> 自动转入 PLAN。
### 🟡 [MODE: PLAN] - 蓝图与测试策略
* **允许**:定义文件路径、函数签名、数据结构。
1. **编写实现清单**:详细到函数级别的步骤。
2. **编写验证策略**:明确后端如何单元测试,前端如何验证视觉效果(无报错)。
* **禁止**:编写具体逻辑代码、模糊描述(如"实现相关逻辑")。
* **输出**:带编号的精密执行清单 -> 自动转入 EXECUTE。
### 🟢 [MODE: EXECUTE] - 暴力执行
* **原则**:**All or Nothing**。要么给出完整代码,要么不给。
* **禁止**:`// TODO`、`// ...原有代码`、简化逻辑、跳过错误处理。
2. 同时编写对应的测试代码(Test Logic)。
* **输出**:完整代码块 + 进度更新 -> 自动转入 REVIEW。
### 🔵 [MODE: REVIEW] - 静态合规检查
1. 是否包含未实现的占位符?(如有,必须驳回重写)
2. 是否符合 C 风格简洁性?(有无过度封装)
* **输出**:审计结果(通过/整改) -> 自动转入 CHECK。
### 🟣 [MODE: CHECK] - 运行时验证 (关键)
* **后端要求**:运行单元测试,确保逻辑覆盖率和边界条件处理正确。
* **前端要求**:检查控制台(Console)是否有红字报错,布局是否崩坏。必须检查所有的变动,每一处变动都要考虑是不是有变动错,有没有少覆盖,有没有多覆盖,有没有没覆盖。
* **失败**:携带错误日志自动回退到 **INNOVATE** 或 **PLAN** 模式进行修复。
**当前模式**: `[MODE: NAME]`
- [ ] [EXECUTE] 实现核心逻辑 (禁止代码省略)
* 如果用户需求模糊,**不要猜测**,保持在 RESEARCH 模式直到澄清,需要用户澄清的内容在最后加粗提问用户。
* 如果在 EXECUTE 阶段发现原计划不可行,**立即暂停**,回退到 INNOVATE 模式重新评估,不要试图打补丁。
* 后面若用户让你修改内容,**只改对应的东西**,严禁扩大修改范围。
**测试不是开发的附属品,而是交付高质量软件的核心环节。**
1. **左移测试**: 在开发早期发现问题,成本最低
2. **分层验证**: 不同层次的测试解决不同层次的问题
3. **持续反馈**: 快速发现、快速修复、快速验证
│ E2E测试 │ ← 端到端验收(Chrome DevTools手工测试)
│ 集成测试 │ ← API集成测试(Go test)
| 测试层 | 目标 | 工具 | 执行频率 |
|-------|------|------|---------|
| 单元测试 | 验证函数逻辑 | Go test, Vitest | 每次提交 |
| 集成测试 | 验证API契约 | Go test + DB | 每次PR |
| E2E测试 | 验证用户流程 | Chrome DevTools | 功能完成时 |
需求文档 → 流程图 → 测试用例矩阵 → 验收标准
**流程图驱动法**: 从业务流程图出发,确保每个分支都有测试用例
| 维度1 | 维度2 | 维度3 | 测试用例 |
|-------|-------|-------|---------|
| 状态A | 条件X | 操作1 | TC-001 |
| 状态A | 条件Y | 操作2 | TC-002 |
| 状态B | 条件X | 操作1 | TC-003 |
开发代码 ←→ 编写测试 ←→ 运行验证 ←→ 修复问题
↑_____________________________|
发现Bug → 记录Bug → 分析根因 → 修复代码 → 验证修复 → 更新文档
|-----|------|---------|------|
| P0 | 系统崩溃、数据丢失 | 立即修复 | 页面白屏、数据库写入失败 |
| P1 | 核心功能不可用 | 24小时内 | 登录失败、支付异常 |
| P2 | 次要功能异常 | 下个迭代 | 提示文案错误、样式问题 |
前端: http://localhost:5173
后端: http://localhost:8080
数据库: SQLite / MySQL / PostgreSQL
浏览器: Chrome DevTools - 设备模拟模式 - iPhone SE 模式
func TestScenarioName(t *testing.T) {
go test -v ./... -count=1
go test -v ./model/... -run TestXxx -count=1
#### Chrome DevTools测试技巧
1. **设备模拟**: iPhone SE模式测试移动端
3. **存储检查**: Application面板查看localStorage
1. **参数缺失**: 前端调用API时漏传参数
2. **导入遗漏**: 使用了模块但忘记import
3. **类型错误**: 类型检查不严格导致运行时错误
4. **边界处理**: 空值、零值、极端值处理不当
**核心理念**: 质量是设计出来的,不是测试出来的。测试是验证质量的手段,而非创造质量的方法。
## Task Planning — 任务规划指南
1. **增量开发**: 每个任务建立在前一个任务基础上,确保代码始终可工作,避免大爆炸式集成
2. **可追溯性**: 每个任务必须引用具体需求编号,格式:`_Requirements: X.Y, X.Z_`
3. **可测试性**: 实现任务和测试任务成对出现
- 枚举定义、数据库迁移、Model定义、DTO定义
- Repository层、Service层(含属性测试)、中间件、Controller层、路由配置、Checkpoint
- Service层(API调用)、Context/状态管理、页面组件、路由配置、Checkpoint
- **Validates: Requirements X.Y**
1. **任务名称**:动词开头,清晰描述要做什么
2. **实现内容**:具体编码步骤(bullet points)
3. **需求引用**:`_Requirements: X.Y_`
4. **预计时间**:在Phase级别或任务级别标注
在 Phase 2、Phase 3、Phase 4 结束时放置 Checkpoint:
- [ ] X. Checkpoint - 阶段名称
| 枚举/Model/DTO定义 | 30分钟 |
| Repository层(每个) | 1小时 |
| Service方法实现 | 30分钟/方法 |
| Controller接口 | 15分钟/接口 |
- **太大** ❌:一个任务包含多个Service方法
- **合适** ✅:一个Service方法一个任务,包含实现和测试
1. **时间估算表格**:Phase级别的任务数和预计时间
2. **任务依赖关系图**:Phase间和任务间的依赖
4. **风险和应对措施**:风险项、影响、应对
5. **验收标准**:功能验收、性能验收、测试验收
1. 使用动词开头:实现、创建、编写、修改、添加
1. 避免模糊描述:"实现相关逻辑"、"完成功能"