建立Scert整改执行清单

新增按P0至P3拆分的整改任务、当前证据、验收标准和执行记录,并补强构建产物、部署暂存、证据目录及敏感文件的Git忽略边界。
This commit is contained in:
xuans 2026-09-27 17:02:20 +08:00
parent d9dd74cc08
commit e94dfba84e
2 changed files with 137 additions and 0 deletions

13
.gitignore vendored
View File

@ -10,3 +10,16 @@ build/*
!build/build-release.ps1
!build/README.md
codex-*.patch
desktop/frontend/dist/
desktop/*.exe
.deploy-stage/
release/*
!release/README.md
artifacts/*
!artifacts/README.md
*.db
*.sqlite
*.sqlite3
*.key
*.p12
*.pfx

View File

@ -0,0 +1,124 @@
# Scert 整改任务执行清单
> 本清单依据《Scert整改合并优化清单.md》建立,用于跟踪实际代码整改、自动化验证、隔离环境验证和生产验收。
>
> 当前日期:2026 年 9 月 27 日
>
> 状态定义:`[ ]` 未开始;`[~]` 进行中;`[x]` 已完成,等待复审;`[✓]` 复审通过;`[!]` 暂缓或存在阻塞。
## 一、执行规则
1. 代码实现、自动化测试、隔离环境验证和生产验收分开记录。
2. 构建成功、接口返回 HTTP 200 或单元测试通过,不直接等同于生产验收通过。
3. 真实 DNS、ACME、HTTPS、SSH 主机指纹、备份恢复和远程部署必须保留可复核证据。
4. 不使用 `-k`、`--insecure`、跳过 SSH 主机指纹或强制 IP TLS 的方式替代正式验证。
5. 不将密码、RAM 密钥、Token、私钥、真实证书或 Cookie 写入代码、文档、日志和 Git。
6. 每个任务完成后先标记为 `[x]`,复审和对应范围的验收证据齐全后才能标记为 `[✓]`。
## 二、当前基线证据
| 项目 | 当前事实 | 证据或命令 | 结论 |
|---|---|---|---|
| Git 工作区 | `main` 与 `Scert/main` 同步,工作区干净 | `git status --short --branch` | 已建立基线 |
| 后端模块 | `backend/go.mod` 声明 Go `1.26.6` | `Get-Content backend/go.mod` | 与当前 Go `1.26.2` 不一致 |
| Node.js | `v24.19.0` | `node --version` | 已记录 |
| npm | `11.17.0` | `npm.cmd --version` | 已记录 |
| Vue | 锁文件实际版本 `3.5.41` | `frontend/package-lock.json` | 已记录 |
| Vite | 锁文件实际版本 `6.4.3` | `frontend/package-lock.json` | 已记录 |
| 数据库驱动 | SQLite、MySQL、PostgreSQL 均有代码和迁移目录 | `backend/internal/database/` | 正式支持范围仍需确认 |
| SSH | 已有主机指纹、密钥部署和安全测试代码 | `backend/internal/deployment/` | 远程实机仍需复核 |
| 生产门禁 | 现有文档明确正式验收尚未全部通过 | `doc/生产部署与运维说明.md` | 不能宣称生产放行 |
## 三、P0 基础整改和阻塞项
| 编号 | 状态 | 任务 | 当前问题 | 下一步交付 | 验证证据 |
|---|---:|---|---|---|---|
| P0-01 | [~] | 明确产品范围 | Wails 目录和构建产物仍在仓库,正式范围尚未落地 | 更新 README、发布文档和构建入口,明确 Web、Windows/Linux 服务端为正式范围 | 范围审查、发布包文件清单 |
| P0-02 | [x] | 建立完整任务清单 | 整改总清单已建立,本文件补充执行字段 | 持续维护状态、证据和复审结果 | 本文件提交记录 |
| P0-03 | [~] | 整理源码、构建产物和部署产物 | 已跟踪桌面二进制和桌面 dist;忽略规则覆盖不完整 | 完成边界规则,复审后从 Git 索引移除生成物但保留本地文件 | `git ls-files`、`git check-ignore`、工作区复核 |
| P0-04 | [!] | 统一开发和构建版本 | 声明 Go `1.26.6`,当前实机 Go `1.26.2` | 确定发布所需 Go 版本并统一模块、构建说明和验收机 | 版本矩阵、构建日志 |
| P0-05 | [!] | 确认数据库正式支持矩阵 | 三种数据库均有代码,但 README、文档和实机证据口径不完全一致 | 明确 SQLite、MySQL、PostgreSQL 的正式级别、版本和迁移回滚要求 | 三数据库迁移、备份恢复和连接测试 |
| P0-06 | [~] | 建立统一领域模型 | 已有域名、证书、任务、服务器等实体,项目和部署关联仍需审查 | 补齐资源关系图、外键/归属和任务关联 | 模型文档、迁移检查、接口测试 |
| P0-07 | [~] | 增加项目级权限和资源隔离 | 用户组和角色已有实现,项目级资源边界未闭环 | 为证书、DNS、服务器、任务和审计补齐项目归属及越权测试 | 权限矩阵、接口越权测试 |
| P0-08 | [~] | 完善凭据和主密钥生命周期 | 已有凭据存储与测试,轮换、恢复、删除和失效证据不完整 | 补齐创建、轮换、恢复、删除、脱敏和不可恢复边界 | 安全测试、日志审查、恢复演练 |
| P0-09 | [x] | 强化 SSH 主机身份验证 | 已有指纹校验和安全测试,远程公钥自动部署需实机复核 | 完成指定服务器上的密码部署、公钥登录和指纹复核 | 指纹、授权文件、公钥登录日志 |
| P0-10 | [x] | 统一任务、部署和回滚事务模型 | 已有部署事务和回滚测试,跨任务状态和重试还需复审 | 将申请、部署、回滚、重试统一关联任务记录 | 事务测试、失败回滚证据 |
| P0-11 | [!] | 建立生产验收门禁 | 现有自动化证据不能替代 DNS、HTTPS、ACME 和远程验收 | 固化准入清单、证据目录和阻塞规则 | 生产验收记录逐项复核 |
| P0-12 | [x] | 完成备份和恢复方案 | 已有备份恢复实现和 PostgreSQL 说明,完整实机闭环仍需复审 | 完成停服备份、篡改拒绝、恢复和失败回滚演练 | 隔离数据库恢复报告 |
## 四、P1 核心产品能力
| 编号 | 状态 | 任务 | 当前判断 | 主要验收 |
|---|---:|---|---|---|
| P1-01 | [~] | 统一证书中心 | 已有证书申请、导入和列表能力,统一详情和状态仍需复审 | 申请、导入、续期、部署、回滚 |
| P1-02 | [~] | 证书详情和版本管理 | 已有证书相关模型,版本、SAN 和历史展示需复核 | 版本切换、SAN 变化、旧证书保留 |
| P1-03 | [~] | ACME 和 DNS 管理 | 已有多 DNS Provider 和 DNS 账户能力,真实授权范围需复核 | Production/Staging、DNS-01、泛域名、CNAME |
| P1-04 | [~] | 任务中心 | 已有任务和执行记录基础,取消、重试和日志展示需复核 | 长任务、失败重试、取消、执行历史 |
| P1-05 | [~] | 续期策略 | 已有续期相关代码,重复申请保护和调度验收需补齐 | 到期阈值、锁、幂等、失败保留旧证书 |
| P1-06 | [~] | 服务器和部署目标中心 | 已有服务器管理和 SSH 密钥展示 | 服务器归属、验证、密钥登录、部署目标 |
| P1-07 | [~] | 多服务器部署策略 | 已有部署客户端和回滚测试 | 多目标顺序、失败回滚、部分成功状态 |
| P1-08 | [~] | 通知中心 | 已有 Smail 系统账户发信接入方向 | 成功、失败、重试、脱敏和系统账户调用 |
| P1-09 | [~] | 审计中心 | 已有审计仓储和接口基础 | 登录、密码、凭据、证书和部署危险操作 |
| P1-10 | [ ] | 证书监控仪表盘 | 页面和监控口径尚未完成复审 | 到期、失败、部署状态、异常统计 |
| P1-11 | [~] | 备份恢复页面 | CLI 和文档已有,Web 操作和权限需补齐 | 备份列表、恢复确认、审计和失败保护 |
| P1-12 | [~] | API 契约和权限矩阵 | 已有后端接口说明文档,需与实际路由同步 | 接口字段、角色、项目和错误码一致 |
## 五、P2 Web、运维和验收
| 编号 | 状态 | 任务 | 当前判断 | 主要验收 |
|---|---:|---|---|---|
| P2-01 | [~] | 统一 Web 页面结构 | 已按页面拆分,仍需逐页检查一页完整显示和中文布局 | 桌面页面、响应式、导航和空状态 |
| P2-02 | [~] | 统一中文显示和错误信息 | 已有中文界面,需扫描 HTML 实体和英文残留 | 页面、接口、日志错误信息 |
| P2-03 | [~] | 长操作任务化 | 部分部署/证书操作已有任务基础 | 页面不阻塞、刷新可恢复、任务状态可追踪 |
| P2-04 | [~] | 幂等和重复操作保护 | 已有部分锁和事务测试 | 重复提交、并发操作、幂等键 |
| P2-05 | [~] | 日志、指标和追踪 | 有日志和任务记录,Request ID/脱敏需复核 | 请求 ID、任务 ID、敏感信息审查 |
| P2-06 | [~] | 接口和前端测试 | 已有后端及前端测试,覆盖面需按清单补齐 | 全量测试、关键页面、越权和失败路径 |
| P2-07 | [~] | 升级、降级、卸载和回滚 | 已有安装器和发布说明,实机闭环未完成 | 升级、降级、卸载、失败恢复 |
| P2-08 | [!] | Windows Service 实机验收 | 当前证据不足以标记通过 | 安装、启动、升级、卸载和日志 |
| P2-09 | [!] | Linux systemd 实机验收 | 有 unit 和历史测试,当前版本需重新核对 | 安装、启动、重启、日志、Nginx、回滚 |
| P2-10 | [~] | 安全基线 | 已有 SSH、凭据和数据库安全测试,仍需完整门禁 | TLS、Cookie、CSRF、越权、路径和命令注入 |
## 六、P3 后续增强
| 编号 | 状态 | 功能 |
|---|---:|---|
| P3-01 | [ ] | 多租户支持 |
| P3-02 | [ ] | API Token 管理 |
| P3-03 | [ ] | Webhook 事件订阅 |
| P3-04 | [ ] | 更多 DNS Provider 插件 |
| P3-05 | [ ] | 证书标签和批量操作 |
| P3-06 | [ ] | 多实例高可用 |
| P3-07 | [ ] | 分布式任务队列 |
| P3-08 | [ ] | Prometheus 指标接口 |
| P3-09 | [ ] | OpenAPI 自动生成 |
| P3-10 | [ ] | 移动端适配 |
## 七、本轮执行记录
### 2026-09-27:建立整改执行基线
- 已检查 `main` 分支和工作区,当前无未提交代码变更。
- 已确认 Go、Node.js、npm 和前端锁文件实际版本。
- 已确认数据库代码同时包含 SQLite、MySQL 和 PostgreSQL 适配,但正式支持矩阵尚未统一。
- 已发现桌面二进制和桌面前端构建入口仍在 Git 索引中,暂不直接删除,列入 P0-03 复审。
- 已补强 `.gitignore`,覆盖桌面构建产物、部署暂存目录、发布/证据目录和本地数据库/密钥文件。
## 八、下一轮优先顺序
1. 统一 Go 版本声明、构建环境和发布文档口径。
2. 确认 SQLite、MySQL、PostgreSQL 的正式支持级别,并补齐迁移/恢复验证矩阵。
3. 复审并清理 Git 索引中的桌面生成物,保留必要源码和说明。
4. 继续定位 SSH 公钥自动部署实机失败阶段,完成密码回退和密钥登录双路径验收。
5. 将生产验收门禁与当前远程部署、DNS、HTTPS 和 ACME 证据逐项对应。
### 2026-09-27:自动化基线验证
| 验证项 | 命令 | 结果 |
|---|---|---|
| 后端单元和集成测试 | `go test -p 1 -count=1 -timeout=3m ./...` | 通过 |
| 后端静态检查 | `go vet -p=1 ./...` | 通过 |
| Go 模块完整性 | `go mod verify` | 通过 |
| 前端测试 | `npm.cmd test` | 150 项通过,0 失败 |
| 前端生产构建 | `npm.cmd run build` | 通过 |
| 前端生产依赖审计 | `npm.cmd audit --omit=dev --audit-level=high` | 0 个漏洞 |
以上结果仅证明当前代码在本地自动化层通过,不替代 Windows Service、Linux systemd、真实 DNS、ACME、HTTPS、SSH 和备份恢复验收。