# 代码编纂工作流（Code Compilation Workflow）

> 本文档定义了所有项目修改需求的标准执行流程。自 2026-04-28 起生效，后续所有项目修改必须严格按此流程执行。

---

## 流程概览

```
┌─────────────────────────────────────────────────────────────────────────────┐
│  阶段 0: 记录时间戳                                                          │
│  记录当前时间: {Year}-{Mon}-{Day}-{Hour}-{Min}-{Sec}                        │
├─────────────────────────────────────────────────────────────────────────────┤
│  阶段 1: 工程分析                                                            │
│  阅读或创建 "./工程分析" 文件夹，确保项目整体分析文档存在且最新               │
├─────────────────────────────────────────────────────────────────────────────┤
│  阶段 2: 需求分析                                                            │
│  将用户提出的需求整理写入 "./工程分析/需求分析-{timestamp}.md"               │
├─────────────────────────────────────────────────────────────────────────────┤
│  阶段 3: 实现方案（需人工审核）                                              │
│  编写 "./工程分析/实现方案-{timestamp}.md"，完成后提交用户确认               │
│  ⚠️ 未经用户审核确认，不得进入下一阶段                                       │
├─────────────────────────────────────────────────────────────────────────────┤
│  阶段 4: 测试方案（需人工审核）                                              │
│  编写 "./工程分析/测试方案-{timestamp}.md"，完成后提交用户确认               │
│  ⚠️ 未经用户审核确认，不得进入下一阶段                                       │
├─────────────────────────────────────────────────────────────────────────────┤
│  阶段 5: 执行前准备                                                          │
│  阅读 "./工程分析/经验记录.md"，避免重复犯错                                 │
├─────────────────────────────────────────────────────────────────────────────┤
│  阶段 6: 方案执行                                                            │
│  按审核通过的实现方案执行代码修改                                             │
├─────────────────────────────────────────────────────────────────────────────┤
│  阶段 7: 经验沉淀                                                            │
│  在 "./工程分析/经验记录.md" 中按四段式记录关键问题                           │
│  A. 具体问题  B. 产生原因  C. 解决方案  D. 后续如何避免                      │
├─────────────────────────────────────────────────────────────────────────────┤
│  阶段 8: Gitea 备份                                                          │
│  提交代码到 Gitea 仓库，commit 格式: "{timestamp} - {修改简述}"             │
├─────────────────────────────────────────────────────────────────────────────┤
│  阶段 9: 项目重新部署                                                        │
│  重新构建并部署本项目                                                        │
└─────────────────────────────────────────────────────────────────────────────┘
```

---

## 各阶段详细规范

### 阶段 0: 时间戳记录

每次执行流程前，首先获取当前时间戳：

```bash
date "+%Y-%m-%d-%H-%M-%S"
# 输出格式示例: 2026-04-28-22-55-15
```

此时间戳将贯穿整个流程，用于统一命名所有相关文档。

---

### 阶段 1: 工程分析

**目标**: 确保对项目现状有全面理解。

**行动项**:
1. 确认 `./工程分析/` 目录存在
2. 阅读 `项目整体分析.md`，确认其内容是否反映当前项目状态
3. 如项目结构发生显著变化，更新 `项目整体分析.md`
4. 阅读 `AGENTS.md`（项目根目录）获取最新技术栈信息

---

### 阶段 2: 需求分析

**目标**: 将用户原始需求转化为结构化、可执行的需求文档。

**输出文件**: `./工程分析/需求分析-{timestamp}.md`

**文档模板**:

```markdown
# 需求分析 - {timestamp}

## 需求来源
- 提出时间: {timestamp}
- 需求类型: [功能新增 / 缺陷修复 / 性能优化 / 代码重构 / 文档更新]

## 原始需求描述
{用户原始需求的完整记录}

## 需求拆解

### 需求 1: {子需求标题}
- **详细描述**: 
- **优先级**: [P0-阻塞 / P1-高 / P2-中 / P3-低]
- **影响范围**: {涉及的文件/模块}
- **验收标准**: {明确的完成标准}

### 需求 2: ...

## 约束条件
- 技术约束: {如兼容 React 19、TailwindCSS 4 等}
- 业务约束: {如中文界面、深色主题等}
- 时间约束: {如有}

## 风险评估
| 风险点 | 影响 | 缓解措施 |
|--------|------|----------|
| {风险} | {高/中/低} | {措施} |
```

---

### 阶段 3: 实现方案

**目标**: 制定详细的代码修改计划，确保方案可行且最小侵入。

**输出文件**: `./工程分析/实现方案-{timestamp}.md`

**文档模板**:

```markdown
# 实现方案 - {timestamp}

## 对应需求
- 需求分析文档: `需求分析-{timestamp}.md`

## 方案概述
{总体技术思路和目标}

## 修改文件清单

### 文件 1: `{文件路径}`
- **修改类型**: [新增 / 修改 / 删除]
- **修改内容**: {具体说明}
- **关键代码逻辑**: {伪代码或关键实现要点}

### 文件 2: ...

## 新增依赖
| 依赖名 | 版本 | 用途 |
|--------|------|------|
| {name} | {ver} | {用途} |

## 兼容性分析
- 与现有功能的冲突: {分析}
- 回滚策略: {如需回滚，步骤是什么}

## 预估工作量
- 代码编写: {时间}
- 测试验证: {时间}
- 文档更新: {时间}
```

**审核要求**:
- 完成后必须停止，等待用户阅读并确认
- 用户确认后，方可进入下一阶段
- 如用户提出修改意见，更新方案后重新提交审核

---

### 阶段 4: 测试方案

**目标**: 定义如何验证修改的正确性和稳定性。

**输出文件**: `./工程分析/测试方案-{timestamp}.md`

**文档模板**:

```markdown
# 测试方案 - {timestamp}

## 对应实现方案
- 实现方案文档: `实现方案-{timestamp}.md`

## 测试范围
- {说明哪些功能需要测试}

## 测试用例

### 用例 1: {用例标题}
- **前置条件**: 
- **操作步骤**: 
- **预期结果**: 
- **通过标准**: 

### 用例 2: ...

## 回归测试
- [ ] 现有功能 A 不受影响
- [ ] 现有功能 B 不受影响
- [ ] 构建无错误 (`npm run build`)
- [ ] 类型检查无错误 (`npm run lint`)

## 测试环境
- 浏览器: {Chrome / Firefox / Edge}
- 分辨率: {1920x1080 等}
- 测试数据: {说明}
```

**审核要求**:
- 完成后必须停止，等待用户阅读并确认
- 用户确认后，方可进入下一阶段

---

### 阶段 5: 执行前准备

**目标**: 避免重复犯错，吸取历史经验。

**行动项**:
1. 阅读 `./工程分析/经验记录.md`
2. 检查是否有与当前需求相关的历史经验
3. 如有相关经验，在实现方案中标注注意事项

---

### 阶段 6: 方案执行

**目标**: 按审核通过的方案执行代码修改。

**执行原则**:
1. **最小修改原则**: 只修改方案中列出的文件，不做计划外的改动
2. **逐步验证原则**: 每完成一个文件的修改，进行局部验证
3. **保持风格一致**: 严格遵循 AGENTS.md 中的代码风格约定
4. **中文界面原则**: 所有新增 UI 文本必须使用中文

**执行步骤**:
1. 按文件清单逐个修改
2. 每次修改后运行类型检查: `npm run lint`
3. 全部修改完成后运行构建: `npm run build`
4. 根据测试方案执行测试用例

---

### 阶段 7: 经验沉淀

**目标**: 将本次执行过程中遇到的问题和解决方案沉淀为组织知识。

**输出文件**: `./工程分析/经验记录.md`（追加模式）

**记录格式**:

```markdown
## {timestamp} - {需求简述}

### A. 具体问题
{清晰描述遇到的具体问题}

### B. 产生问题原因
{分析问题产生的根本原因}

### C. 解决问题方案
{详细说明解决步骤和方法}

### D. 后续如何避免问题
{给出可操作的预防措施}
```

**记录时机**:
- 执行过程中遇到任何非预期问题，均应记录
- 即使问题未导致阻塞，但有参考价值，也应记录
- 如执行过程完全顺利，可记录 "本次执行顺利，无异常问题"

---

### 阶段 8: Gitea 备份

**目标**: 将修改后的代码安全备份到 Gitea 仓库。

**操作命令**:

```bash
# 确认当前分支
git branch

# 添加所有变更
git add .

# 提交（commit message 格式: "{timestamp} - {修改简述}"）
git commit -m "{timestamp} - {修改简述}"

# 推送到远程
git push origin main
```

**注意事项**:
- 确保 `node_modules/` 和 `dist/` 不在提交范围内（检查 `.gitignore`）
- 提交前确认没有遗漏的文档文件（`工程分析/` 目录下的文档必须一并提交）
- 推送成功后，向用户汇报备份完成

---

### 阶段 9: 重新部署

**目标**: 将修改后的代码部署到运行环境。

**部署步骤**:

```bash
# 1. 安装依赖（如有新增）
npm install

# 2. 生产构建
npm run build

# 3. 生产模式启动
npm start
```

**验证**:
- 确认服务在端口 3000 正常启动
- 访问 `http://localhost:3000` 验证应用可正常访问
- 验证修改的功能是否生效

---

## 文档命名规范

| 文档类型 | 命名格式 | 示例 |
|----------|----------|------|
| 需求分析 | `需求分析-{YYYY-MM-DD-HH-MM-SS}.md` | `需求分析-2026-04-28-22-55-15.md` |
| 实现方案 | `实现方案-{YYYY-MM-DD-HH-MM-SS}.md` | `实现方案-2026-04-28-22-55-15.md` |
| 测试方案 | `测试方案-{YYYY-MM-DD-HH-MM-SS}.md` | `测试方案-2026-04-28-22-55-15.md` |
| 经验记录 | `经验记录.md`（唯一文件，持续追加） | `经验记录.md` |
| 项目分析 | `项目整体分析.md`（唯一文件） | `项目整体分析.md` |

---

## 流程执行检查表

每次执行流程时，使用以下检查表确保无遗漏：

- [ ] 阶段 0: 已记录时间戳 `{timestamp}`
- [ ] 阶段 1: 已阅读/更新 `项目整体分析.md`
- [ ] 阶段 2: 已创建 `需求分析-{timestamp}.md`
- [ ] 阶段 3: 已创建 `实现方案-{timestamp}.md` 并通过用户审核
- [ ] 阶段 4: 已创建 `测试方案-{timestamp}.md` 并通过用户审核
- [ ] 阶段 5: 已阅读 `经验记录.md`
- [ ] 阶段 6: 已按方案执行所有修改
- [ ] 阶段 7: 已更新 `经验记录.md`
- [ ] 阶段 8: 已完成 Gitea 备份提交
- [ ] 阶段 9: 已重新部署项目

---

## 特殊情况处理

### 紧急修复（Hotfix）

如遇到生产环境紧急缺陷需要立即修复，可简化流程：
1. 仍然记录时间戳
2. 创建简版需求分析（说明紧急性）
3. 口头/即时通讯确认方案（跳过书面方案审核）
4. 执行修复
5. **事后补全**: 24 小时内补全实现方案和测试方案文档
6. 更新经验记录并提交备份

### 纯文档修改

如需求仅涉及文档更新（如修改 README）：
1. 可跳过测试方案阶段
2. 执行修改后直接备份

### 多次小修改合并

如同一时间段内有多个相关小需求：
1. 可共用同一个时间戳
2. 在需求分析中列出所有需求项
3. 方案文档中分节说明各需求的实现

---

> 本工作流由 AI 助手建立，经用户审核后生效。后续任何流程变更需经双方确认后更新本文档。
