Scert/doc/整改任务规格与验收约定.md

65 lines
6.4 KiB
Markdown
Raw Permalink 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.

# 整改任务规格与验收约定
## 一、需求确认和完整范围
以《Scert整改合并优化清单.md》为原始需求,保留 P0 的 12 项、P1 的 12 项、P2 的 10 项和 P3 的 10 项,共 44 项,不因已有实现或测试容易程度缩减范围。用户已要求按此清单执行;本规格将要求转成可执行检查,不额外认定尚未确认的数据库版本和新功能设计已经获准。
正式产品是 Web 与 Windows/Linux 服务端,桌面版范围外。P3 不阻断第一阶段交付,但仍属于完整整改目标。原文“建议”的实体名、目录名、角色名和阈值不等于已经实现;采用不同实现时必须说明如何满足同一能力,不能用用户分组替代项目隔离。
任务索引和实际进展以《Scert整改任务执行清单.md》为准,逐项规格拆分如下:
- 《基础整改任务规格.md》:P0-01 至 P0-12。
- 《核心能力任务规格.md》:P1-01 至 P1-12。
- 《运维验收任务规格.md》:P2-01 至 P2-10。
- 《增强能力任务规格.md》:P3-01 至 P3-10。
每项记录编号、名称、优先级、当前状态、六阶段状态、问题、涉及文件、依赖、整改内容、验证命令、实机步骤、验收证据和复审结果。状态变更必须同步汇总表、规格和证据;历史记录不覆盖、不伪造。
## 二、六阶段与状态
六阶段固定为需求确认、代码实现、自动化测试、隔离环境测试、生产部署测试、最终验收。各阶段独立使用 `[ ]`、`[~]`、`[x]`、`[✓]`、`[!]`。
- 需求已列明可标 `[x]`,但不代表代码完成。
- 已有测试不能自动证明新规格全部覆盖;在覆盖审查前仍标 `[~]` 或 `[ ]`。
- 文档治理项的“代码实现”指文档与规则交付;生产部署阶段可标“未独立执行,关联生产门禁”,不能伪造实机步骤已通过。
- `[!]` 表示某阶段暂缺前提,不表示整项目无法推进。
- 自动化或构建层通过最多支持对应范围 `[x]`;最终 `[✓]` 必须附复审人、日期、源码提交和匹配范围的实机证据。
## 三、验证命令约定
下列是可执行的基础命令,不代表单条命令已经覆盖整项需求。各规格引用命令编号并列出需补的用例;目录未实现的功能,必须先编写正式测试,再执行基础命令。生产网络和真实数据库集成测试需要独立环境参数,缺参导致跳过不算通过。
| 编号 | 工作目录 | 命令 | 用途 |
|---|---|---|---|
| V01 | 仓库根目录 | `git status --short --untracked-files=all`;`git diff --check`;`git ls-files` | 工作区与索引边界 |
| V02 | `backend/` | `go test -p 1 -count=1 -timeout=3m ./...`;`go vet -p=1 ./...`;`go mod verify` | 全量基础回归 |
| V03 | `frontend/` | `npm.cmd ci --no-audit --no-fund`;`npm.cmd test`;`npm.cmd run build` | 锁文件安装、前端回归与生产构建 |
| V04 | 仓库根目录 | `powershell -NoProfile -ExecutionPolicy Bypass -File .\build\build-release.ps1 -OutputDirectory .\release\<新的唯一候选目录>` | 双平台构建;执行时替换尖括号占位值,不覆盖现有包 |
| V05 | `backend/` | `go test -count=1 ./internal/releasearchive ./internal/cli` | 发布边界和运维入口 |
| V06 | `backend/` | `go test -count=1 ./internal/database ./internal/repository ./internal/cli` | 数据库、归属及备份恢复基础测试 |
| V07 | `backend/` | `go test -count=1 ./internal/auth ./internal/admin ./internal/httpapi` | 认证、权限及接口 |
| V08 | `backend/` | `go test -count=1 ./internal/secretstore ./internal/sshkey ./internal/config ./internal/localreset` | 凭据、密钥和本机恢复 |
| V09 | `backend/` | `go test -count=1 ./internal/deployment ./internal/sshkey` | SSH、部署、回滚 |
| V10 | `backend/` | `go test -count=1 ./internal/certificate ./internal/dnsprovider ./internal/dnsverification` | ACME、DNS、续期 |
| V11 | `backend/` | `go test -count=1 ./internal/notification ./internal/logging ./internal/httpapi` | 通知、日志和接口 |
| V12 | `backend/` | `go test -count=1 ./internal/servicehost ./internal/bootstrap ./internal/setup ./internal/certstorage ./internal/nginxactivation` | 服务和初始化;平台专用用例须在对应系统重跑 |
任务规格结构核对:逐项比对原始清单的编号和名称、依赖编号、涉及文件是否存在或明确标“拟新增”、12 个必需字段与六阶段状态是否齐全。结构核对不是业务测试,也不需要新增辅助脚本。
## 四、统一实机前置条件
1. 修改前核对工作区并推送中文检查点。测试前从明确源码提交构建最新候选包,核对 SHA256、平台和版本。
2. 首次流程使用明确的可清理测试数据库;涉及多个数据库时逐个建立隔离实例或专用库,再按授权清理测试数据。不把测试清理要求推广为删除共享主机的其他库、服务或业务记录。
3. 桌面 Web 测试前检查后端、前端和专用浏览器 MCP 的状态、端口与所属项目;清理该测试上下文缓存并重开页面。移动端按用户要求使用 Mobile Preview 插件,不改用桌面 MCP 冒充移动验收。
4. 服务器信息与凭据仅用于连接。连接须校验用户确认的 SSH 指纹,公网访问使用正常 DNS 和完整 TLS/SNI 校验。禁止关闭 TLS、跳过指纹或用强制 IP TLS 作为正式证据。
5. 涉及 DNS、邮件、ACME、远程文件、服务启停和恢复时,先确认目标归属和影响范围;仅清理本轮创建的测试记录。真实秘密不进日志、截图、文档、Git 或测试产物。
6. 使用产品的 Web/服务端/正式运维入口及已有测试,不新增临时辅助脚本替代验收。已有 Go、前端和安装器正式测试继续保留。
## 五、验收证据格式
每项证据必须能定位:任务编号与用例、源码提交、候选包 SHA256、目标平台和数据库版本、脱敏环境标识、操作入口、起止时间、退出码、断言、结果、清理结果及覆盖缺口。自动化、隔离、真实生产链路和复审分别记录。
本地证据放 `artifacts/`;可提交的脱敏结论放 `doc/`。历史结果必须注明当时提交,不把旧输出当作当前版本已测试。没有凭据本身、测试服务器 IP 或域名之外的过程证据时,视为未验收。
完整发布仍需 P0-11 的 12 层门禁,不能以本规格文档齐全、HTTP 200、构建成功或测试数量替代。