Files
Mdeical_Sur_Report/工程分析/工作流规范.md

284 lines
8.9 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.
# 代码编纂工作流规范
> 版本V1.0
> 适用范围本项目所有代码修改、功能迭代、Bug 修复、重构任务
> 生效日期2026-04-19
---
## 一、工作流总览
```
┌─────────────────────────────────────────────────────────────────────┐
│ 0. 记录开始时间戳 │
│ 1. 阅读工程整体分析 + 经验记录 │
│ 2. 需求分析 → 写入 需求分析-{时间}.md → 【用户审核】 │
│ 3. 实现方案 → 写入 实现方案-{时间}.md → 【用户审核】 │
│ 4. 测试方案 → 写入 测试方案-{时间}.md → 【用户审核】 │
│ 5. 执行前再次阅读 经验记录.md防止踩坑
│ 执行修改 │
│ 执行后向 经验记录.md 追加新踩坑记录(四段式) │
│ 6. Git 提交 → Gitea 推送 → 提醒用户 │
│ 7. npm 重新构建 + 部署 │
└─────────────────────────────────────────────────────────────────────┘
```
---
## 二、步骤详解
### 步骤 0记录开始时间戳
每次接收到修改需求时,首先获取当前时间,格式为:
```
{Year}-{Mon}-{Day}-{Hour}-{Min}-{Sec}
```
**示例**`2026-04-19-02-00-33`
该时间戳贯穿整个工作流,用于命名所有相关文档。
---
### 步骤 1阅读工程分析文档
**必做事项**
- 阅读 `工程整体分析.md`,确认当前架构、技术栈、高风险区域
- 阅读 `经验记录.md`,回顾与本次需求相关的历史踩坑记录
-`工程分析` 文件夹或上述文档不存在,立即创建
---
### 步骤 2需求分析
**输出文件**`需求分析-{时间戳}.md`
**必须包含的内容**
1. **需求背景**:用户原始需求的转述
2. **需求拆解**:将大需求拆分为可执行的原子任务
3. **影响范围**:列出需要修改的文件清单(基于工程整体分析中的高风险区域判断)
4. **优先级排序**P0阻塞/ P1重要/ P2优化
5. **验收标准**:明确"做到什么程度算完成"
**流转规则**
- 文档写完后,**必须停止执行**,等待用户二次人工审核确认
- 用户确认后,方可进入步骤 3
---
### 步骤 3实现方案
**输出文件**`实现方案-{时间戳}.md`
**必须包含的内容**
1. **方案概述**整体技术思路1-3 句话)
2. **详细步骤**:按文件/模块逐条列出修改点,每条包含:
- 目标文件路径
- 具体修改内容(新增/删除/修改的代码逻辑)
- 与现有逻辑的兼容策略(如何处理旧数据、默认值、降级)
3. **依赖关系**:哪些修改有先后顺序,哪些可以并行
4. **风险预案**:如果方案失败,回滚策略是什么
**流转规则**
- 文档写完后,**必须停止执行**,等待用户二次人工审核确认
- 用户确认后,方可进入步骤 4
---
### 步骤 4测试方案
**输出文件**`测试方案-{时间戳}.md`
**必须包含的内容**
1. **测试范围**:哪些功能需要验证
2. **测试步骤**:手动的操作路径(因本项目无自动化测试)
3. **预期结果**:每一步的正确输出是什么
4. **边界场景**:异常输入、空值、大数据量、快速切换路由等
5. **回滚检查**:验证失败后如何恢复到修改前状态
**流转规则**
- 文档写完后,**必须停止执行**,等待用户二次人工审核确认
- 用户确认后,方可进入步骤 5
---
### 步骤 5执行修改 + 经验沉淀
**执行前**
- 最后一次阅读 `经验记录.md`,确认本次修改不会触发已知坑点
- 若发现新的潜在风险,在实现方案文档中补充后再执行
**执行中**
- 严格按照实现方案的步骤执行,不擅自扩大修改范围
- 若遇到方案外的意外问题,暂停执行,记录问题,与用户沟通后再继续
**执行后**
- 按测试方案逐项验证
-`经验记录.md` 追加新记录(仅当实际遇到问题时),格式如下:
```markdown
## 记录 N{问题标题}
**A. 具体问题**
{问题描述}
**B. 产生问题原因**
{根因分析}
**C. 解决问题方案**
{具体修复步骤}
**D. 后续如何避免问题**
{给未来自己的警告}
```
---
### 步骤 6Git 备份
**提交规范**
```bash
git add -A
git commit -m "{时间戳} {修改简要描述}"
git push origin main
```
**必须包含的信息**
- 时间戳(与需求分析文档一致)
- 本次修改的简要描述1-2 句话)
**完成后**
- 明确提醒用户已完成 Gitea 备份
---
### 步骤 7重新部署
**标准部署脚本**
```powershell
# 1. 停止旧服务
Stop-Process -Id (Get-NetTCPConnection -LocalPort 4173 -ErrorAction SilentlyContinue).OwningProcess -Force -ErrorAction SilentlyContinue
# 2. 重新构建
npm run build
# 3. 以独立进程启动预览服务(避免后台任务超时杀死)
Start-Process -FilePath "powershell.exe" -ArgumentList "-Command","cd '$PWD'; npm run preview -- --host" -WindowStyle Hidden
# 4. 验证
Start-Sleep -Seconds 3
Invoke-WebRequest -Uri http://127.0.0.1:4173/ -UseBasicParsing -TimeoutSec 5
```
**注意**
- **严禁**使用 `Shell(run_in_background=true)` 运行 `npm run preview`,因为任务超时机制(默认 60s会强制终止 preview 进程,导致服务中断(参见经验记录-21
- 必须使用 `Start-Process` 创建独立的 Windows 进程。
---
## 三、禁忌清单(严格执行)
| 编号 | 禁忌行为 | 后果 | 正确做法 |
|------|----------|------|----------|
| 1 | 跳过需求分析文档直接写代码 | 需求理解偏差,返工 | 必须先写文档,等用户确认 |
| 2 | 跳过实现方案文档直接改代码 | 架构混乱,影响范围失控 | 必须先写文档,等用户确认 |
| 3 | 跳过测试方案文档直接上线 | 遗漏边界场景,线上故障 | 必须先写文档,等用户确认 |
| 4 | 使用 `Shell(run_in_background=true)` 运行 `npm run preview` | 60s 后服务被强制杀死 | 使用 `Start-Process` 启动独立进程 |
| 5 | 修改后不更新 `经验记录.md` | 重复踩坑 | 每次遇到新问题必须追加记录 |
| 6 | `contentEditable` 插入多行缩进 HTML | 浏览器解析出额外文本节点,破坏排版 | 必须压缩为紧凑单行 HTML |
| 7 | 直接 `target.remove()` 删除 DOM 节点 | 撤销栈失效WebKit 误删父级 `<p>` | 使用 `Range.selectNode + execCommand('delete')` |
| 8 | 将 `useRef` 作为自动保存唯一数据源 | StrictMode 下首次卸载覆盖有效 draft | 自动保存函数从最新 React state 读取 |
| 9 | 异步循环中用 `await setTimeout` 阻塞 | 抽帧/UI 更新被串行延迟 | 使用裸 `setTimeout` 推入事件队列 |
| 10 | 用 `body { padding }` 控制打印边距 | 第二页及后续页边距失效 | 使用 `@page { margin }` |
---
## 四、文档模板
### 需求分析模板
```markdown
# 需求分析 — {时间戳}
## 1. 需求背景
{用户原始需求}
## 2. 需求拆解
- [ ] 任务 1{描述}
- [ ] 任务 2{描述}
## 3. 影响范围
| 文件 | 修改类型 | 风险等级 |
|------|----------|----------|
| {路径} | 新增/修改/删除 | 高/中/低 |
## 4. 优先级
- P0{阻塞项}
- P1{重要项}
- P2{优化项}
## 5. 验收标准
- {标准 1}
- {标准 2}
```
### 实现方案模板
```markdown
# 实现方案 — {时间戳}
## 1. 方案概述
{整体思路}
## 2. 详细步骤
### 步骤 1{模块/文件}
**目标文件**`{路径}`
**修改内容**{详细描述}
**兼容策略**{如何处理旧数据/默认值}
### 步骤 2{模块/文件}
...
## 3. 依赖关系
- {步骤 A} 必须在 {步骤 B} 之前执行
- {步骤 C} 和 {步骤 D} 可并行
## 4. 风险预案
- 若 {某步骤} 失败,回滚方式为 {...}
```
### 测试方案模板
```markdown
# 测试方案 — {时间戳}
## 1. 测试范围
{需要验证的功能点}
## 2. 测试步骤与预期结果
### 场景 1{正常流程}
1. 操作:{步骤}
预期:{结果}
2. 操作:{步骤}
预期:{结果}
### 场景 2{边界/异常}
...
## 3. 回滚检查
- 若测试失败,执行 `{命令}` 恢复到修改前状态
```
---
## 五、附录:项目快速参考
- **开发**`npm run dev`(端口 3000
- **构建**`npm run build`
- **预览**`npm run preview -- --host`(端口 4173
- **类型检查**`npm run lint`
- **Gitea 仓库**`http://192.168.31.5:5002/admin/Mdeical_Sur_Report.git`
- **当前分支**`main`