Files
Nexus/docs/project/development-acceptance-standard.md
T

236 lines
8.9 KiB
Markdown
Raw Normal View History

# Nexus 6.0 — 开发验收标准(SSOT
> **更新**: 2026-05-23
> **读者**: 开发 AI、测试、运维
> **地位**: 宣称「功能完成 / 可合并 / 可上线」前**必须**对照本文;与功能清单、接续文档并列。
**相关文档**
| 文档 | 路径 |
|------|------|
| 全站功能 | [`nexus-full-site-features.md`](nexus-full-site-features.md) |
| AI 接续 | [`AI-HANDOFF-2026-05-23.md`](AI-HANDOFF-2026-05-23.md) |
| **标准转接包(全量)** | [`standards-transfer-package.md`](standards-transfer-package.md) |
| 功能说明书 HTML | [`../Nexus-功能说明书.html`](../Nexus-功能说明书.html) |
---
## 0. 验收层级总览
```
L0 原则与纪律 perfect-implementation + 架构规则(始终遵守)
L1 设计验收 设计文档 / 技术文档中的「验收标准」章节
L2 代码完成 单测 + WSL smoke +(改 API/前端时)对应模块手测
L3 安全审计 逐行走读 DoD(改安全路径或大 diff 时)
L4 模块 E2E 脚本 T-SE、告警策略、推送 dry-run 等专项清单
L5 首次部署 production-verification-checklist(上线前)
```
**禁止**:未跑 L2 对应命令就声称「已修复 / 已完成」;未满足 L0 就合并。
---
## L0 — 实现原则与架构(强制,无例外)
| 来源 | 路径 | 要点 |
|------|------|------|
| 完美实现 | `.cursor/rules/perfect-implementation.mdc` | 禁止降级/妥协/TODO;先设计→技术文档→代码→验证→changelog |
| 技术栈 | `.cursor/rules/nexus-tech-stack.mdc` | 四层架构、配置三写、Primary Worker |
| 后端 | `.cursor/rules/nexus-python-backend.mdc` | API/Service/Repo 分层 |
| 前端 | `.cursor/rules/nexus-frontend.mdc` | api.js、无 CDN 依赖 |
| 安全 | `.cursor/rules/nexus-security.mdc` | 凭据、JWT、注入 |
| 系统开发标准 | `standards/system-development-standard.md` | 完整工程规范 |
**执行顺序**(来自 perfect-implementation):
```
需求确认 → 设计文档 → 技术文档 → 实现 → 测试验证 → changelog
```
**每次代码变更**
- [ ] `docs/changelog/YYYY-MM-DD-<主题>.md` 已写或更新
- [ ] 新功能/架构变更:已有 `docs/design/specs/` + `docs/design/plans/`(或补全缺档模块)
- [ ] 无新增 `TODO`/`FIXME`/静默吞错
---
## L1 — 设计阶段验收标准
设计文档 `docs/design/specs/YYYY-MM-DD-<topic>-design.md` **必须包含**
- [ ] 背景与目标
- [ ] 方案对比与选定理由
- [ ] 接口 / 数据模型
- [ ] 安全与性能约束
- [ ] **验收标准**(可勾选的条目,供 L4/L5 复用)
技术文档 `docs/design/plans/``docs/reports/` **必须包含**
- [ ] 涉及文件清单
- [ ] 实现步骤
- [ ] 依赖与配置变更
- [ ] **测试要点**
- [ ] 回滚方式
---
## L2 — 日常开发完成(合并前最低门槛)
### 2.1 自动化(必须执行并贴输出)
| 场景 | 命令 | 通过标准 |
|------|------|----------|
| 任意后端改动 | `pytest tests/test_security_unit.py -q` | 全部 passed |
| WSL 全链路代码向 | `bash scripts/wsl_ensure_venv.sh`(首次) | 无 error |
| | `bash scripts/wsl_start_dev.sh` | 服务启动 |
| | `bash scripts/wsl_integration_smoke.sh` | security + `/health` + `/api/servers/` 401 |
| 有 API 契约变更 | `pytest tests/test_api.py`(需 `.env` + 测试账号) | 按项目约定 |
详见:[`wsl-integration-test.md`](wsl-integration-test.md)
### 2.2 按改动类型的附加验收
| 改动类型 | 必须验证 |
|----------|----------|
| 脚本 / SSH 执行 | 子机执行结果含 `channel: ssh`;危险命令 400 |
| Agent / 心跳 | 子机出站 443 心跳 200**不要求**公网 8601 |
| 推送 / sync | dry-run 首台预览;失败入重试队列 |
| WebSSH | webssh-token 绑定 server_id;越权 4003 |
| 设置 / Telegram | 测试发送、告警开关、白名单解析 |
| 前端页 | 无 `cdn.jsdelivr.net`Alpine/侧栏正常 |
| DB 迁移 | `server/infrastructure/database/migrations.py` 可跑;新装/升级路径说明写在 changelog |
### 2.3 完成前自检(Agent 直接执行,无 Skill 包)
| 动作 | 依据 | 何时 |
|------|------|------|
| 跑验证命令后再宣称完成 | `standards/` + `.cursor/rules/perfect-implementation.mdc` | 每次交付前 |
| 先失败测试再实现 | 项目 `tests/`、设计文档验收标准 | 新功能/修 bug |
| 根因分析再改代码 | `.cursor/rules/audit-line-review.mdc`(若涉安全路径) | 异常/回归 |
---
## L3 — 代码审计验收(与开发同等严谨 · 不可简化)
**完整标准**[`standards-transfer-package.md`](standards-transfer-package.md) §2(与团队逐行审查相同)
**适用**:用户要求走读/Phase2/全量审计;或改 `server/api/*``auth``webssh``agent``script_service``sync_engine*`、凭据/websocket、前端 XSS 面。
| 文档 | 权威路径 |
|------|----------|
| Cursor 触发规则 | `.cursor/rules/audit-line-review.mdc` |
| 完整走读 v2 | **`standards/line-walk-audit-standard-v2.md`**(§三 八步、§四 规则、§十四 提示词) |
| 核心原则 | **`standards/audit-core-principles.md`** |
| Nexus SSOT 副本 | `docs/project/line-walk-audit-standard.md` |
| FINDING 矩阵 | `docs/reports/audit-phase-2-findings-matrix.md` |
**八步 + 限制**(摘要,以 v2 为准):
1. 登记 N → 2. 全文 Read 至 EOF → 3. 规则 → H → 4. Closure(±15 行)→ 5. 入口表 → 6. 输入→sink → 7. 八类 → 8. DoD ✓
**单回复 ≤5 文件**;禁止 grep/Top15 冒充审计。
**单文件 DoD(缺一不可)**
- [ ] `len(H) == Closure 行数`H=0 写「规则零命中」)
- [ ] 全文 Read 覆盖 1N
- [ ] 每条 FINDING`文件:行号` + 严重度 + 修复建议
- [ ] 每条 SAFE:写明依据
- [ ] API/WS 有入口表
- [ ] P0/P1 **当场修复**;合并前 **代码待办 = 0**
- [ ] 产出 `docs/reports/audit-phase-2*-line-walk.md`Closure **全表含 SAFE**
- [ ] 修复写 changelog + 更新矩阵
**KPI**P0 漏报 -100P1 漏报 -50;无行号 FINDING 无效。
---
## L4 — 模块专项 E2E(首次部署前建议全做)
### 4.1 脚本执行平台
文档:[`script-execution.md`](script-execution.md) §11
- [ ] T-SE1:3 台短任务,进度 3/3,审计有 `execute_started`
- [ ] T-SE260 台分 2 批
- [ ] T-SE3:长任务 + `NEXUS_API_BASE_URL` 回调完成
- [ ] T-SE4~T-SE8:停止、重试、卡住检测、Redis 刷盘
**注意**:文档中 Agent HTTP 描述可能过期;执行通道以 **SSH** 为准(见 changelog `2026-05-23-ssh-exec-no-8601.md`)。
### 4.2 告警与 Telegram
文档:[`alert-push-policy.md`](alert-push-policy.md)
- [ ] 超阈值 → Telegram 告警;浏览器**无声音**、无弹窗列表
- [ ] 恢复 → Telegram 恢复通知
- [ ] WS 仅刷新仪表盘统计
- [ ] self_monitor MySQL 异常文案**不含**连接串
### 4.3 基础设施(CLAUDE.md T1T5
- [ ] T1:心跳写入 Redis
- [ ] T2WebSocket
- [ ] T3:杀 Python → Supervisor 拉起
- [ ] T4Telegram
- [ ] T5install.html 五步
### 4.4 Phase 2 Remediation
文档:[`phase-2-audit-remediation.md`](phase-2-audit-remediation.md)
外网勾选:[`production-verification-checklist.md`](production-verification-checklist.md)
---
## L5 — 首次部署 / 生产验收(上线闸门)
**完整清单**[`production-verification-checklist.md`](production-verification-checklist.md)
摘要:
| 章节 | 内容 |
|------|------|
| 0 | vendor、Supervisor、Nginx `/ws/` 日志 |
| 1 | JWT 登录/刷新/改密失效 |
| 2 | 静态资源自托管、TOTP、WebSSH |
| 3 | 告警 Telegram 行为 |
| 4 | Agent 401、阈值、kill 404 |
| 5 | WebSSH token 绑定 |
| 6 | 危险命令 400、长任务轮询 |
| 7 | `/health`、Supervisor、cron 健康检查 |
**签署**:清单末尾运维/开发签字后视为上线验收通过。
---
## L6 — 功能完成 vs 上线完成
| 声明 | 最低要求 |
|------|----------|
| 「PR/分支功能完成」 | L0 + L2(含 pytest + 相关手测)+ changelog |
| 「安全模块完成」 | 上述 + L3 走读 DoD |
| 「可首次部署」 | 上述 + L4 专项 + L5 全勾选 |
| 「生产就绪」 | L5 签署 + 外网 2000 台抽样(运维定义) |
---
## 7. 验收失败时
1. **不得**口头宣称通过;贴失败命令输出。
2.`systematic-debugging` 查根因,修完重跑 L2 命令。
3. 无法完美实现 → 停下与用户确认(perfect-implementation 唯一例外路径)。
---
## 8. 给下一任 AI 的检查顺序
```
1. 读 AI-HANDOFF + nexus-full-site-features(做什么)
2. 读 standards-transfer-package.md(全部标准转接 + 逐行同等严谨)
3. 读本文(L0~L5 怎样算做完)
4. 内化 standards/ 三件套 + 全部 .cursor/rules/*.mdc
5. 接任务前确认 L1 / L2 / L3(审计)/ L4 / L5
6. 完成前跑 L2 命令并贴结果;审计任务满足 L3 DoD
7. 宣称「上线」前对照 L5 逐项勾选
```