Scert/doc/基础整改任务规格.md

172 lines
18 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.

# 基础整改任务规格
本文件覆盖原始清单 P0 的全部 12 项。命令编号、六阶段定义和实机前置条件见《整改任务规格与验收约定.md》。文件路径相对仓库根目录;“拟新增”明确表示尚未存在,不作为现成功能证据。
## P0-01 明确产品范围
- 任务编号:P0-01;任务名称:明确产品范围;优先级:P0。
- 当前状态:`[x] 已完成,等待复审`。
- 六阶段:需求确认 `[x]`;代码实现 `[x]`;自动化测试 `[x]`;隔离环境测试 `[x]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:桌面源码和旧 CLI 业务入口曾与正式范围混淆。
- 涉及文件:`build/build-release.ps1`、`backend/internal/cli/root.go`、`backend/internal/releasearchive/`、根及各模块 README、《命令行运维范围说明.md》。
- 依赖任务:无;双平台安装证据由 P2-08、P2-09 补齐,不倒置为范围整改的代码依赖。
- 整改内容:只正式交付 Web/服务端;桌面窗口、托盘、更新、配置与 UI 测试全部范围外,保留历史源码;CLI 仅作初始化、诊断、迁移、备份恢复和服务管理,拒绝旧业务入口。
- 验证命令:V01、V05、V04;核对 manifest、归档内容、校验和以及实际程序帮助/拒绝入口退出码。
- 实机验收步骤:解包当前候选,确认没有桌面程序;分别在 Windows/Linux 运行帮助和运维入口;旧业务命令必须非零退出且不读凭据或生成运行数据;安装分别关联服务验收项。
- 验收证据:执行清单已记录 `885478a` 的干净双平台包、独立克隆与 Windows 实际 CLI 结果;Linux 实机尚缺,不能用归档权限替代。
- 复审结果:待最终复审,未生产放行。
## P0-02 整理项目任务清单
- 任务编号:P0-02;任务名称:整理项目任务清单;优先级:P0。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[ ]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:旧汇总表虽覆盖 44 项,缺逐项依赖、文件、命令、实机步骤和复审字段。
- 涉及文件:《Scert整改任务执行清单.md》、本文件、其余三级任务规格、《整改任务规格与验收约定.md》;关联《Scert开发任务清单.md》《全面审查测试与优化记录.md》《发布加固与实机验收记录.md》《生产部署与运维说明.md》。
- 依赖任务:P0-01;其余 43 项的业务完成不是本项文档补齐的前提。
- 整改内容:逐项补足 12 个原定字段及六阶段,原始清单保留;区分历史事实、规划和当前实证;维护汇总状态与规格一致。
- 验证命令:V01;按约定进行 44 项编号、必需字段、依赖、文件、状态和六阶段结构核对,并人工对照原始范围。
- 实机验收步骤:生产执行时按规格逐项登记提交、包哈希、环境与实际操作;抽查任何“通过”能回溯到对应证据。文档治理本身不触碰服务器或数据库。
- 验收证据:新增逐项规格,结构与范围复核尚待本轮结果;不将文档齐全称为 44 项业务完成。
- 复审结果:待结构核对和范围复核。
## P0-03 整理源码、构建产物和部署产物
- 任务编号:P0-03;任务名称:整理源码、构建产物和部署产物;优先级:P0。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[~]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:既有忽略规则未覆盖根级二进制、通用归档、补丁和数据库旁路文件;开发机排除配置不能代表新克隆。
- 涉及文件:`.gitignore`、`backend/internal/releasearchive/source_boundary_test.go`、`release/README.md`、`artifacts/README.md`、`tests/README.md`、`scripts/README.md`、《仓库目录与产物边界说明.md》。
- 依赖任务:P0-01。
- 整改内容:建立八类目录及构建/运行边界,不删除现有文件;忽略产物和敏感文件但保留源码、迁移、部署测试及公开 CA;检测已跟踪违禁产物。
- 验证命令:V01、V05;`go test -count=1 ./internal/releasearchive -run TestRepositoryIgnore`,在 `backend/` 执行。
- 实机验收步骤:独立克隆只取源码,安装依赖并正式构建;确认工作区无新增产物入索引;部署只取发布白名单,不能携带浏览器缓存、数据库或本机凭据。
- 验收证据:上一轮已有干净克隆构建;本轮隔离 Git 忽略测试已运行,完整回归与提交核对待记录。
- 复审结果:待全量边界复核,不代表生产能力通过。
## P0-04 统一开发和构建版本
- 任务编号:P0-04;任务名称:统一开发和构建版本;优先级:P0。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[~]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:已有模块和锁文件版本,但文档、安装脚本批准策略、操作系统与构建机记录需统一。
- 涉及文件:`backend/go.mod`、`backend/go.sum`、`frontend/package.json`、`frontend/package-lock.json`、`build/build-release.ps1`、《构建版本与数据库支持矩阵.md》。
- 依赖任务:P0-01、P0-03。
- 整改内容:记录并固定 Go、Node、npm、Vue、驱动和依赖版本、系统版本、编译目标;检查锁文件安装及构建环境差异。模块内实际 Go 版本优先,不按根目录工具版本降级模块。
- 验证命令:V02、V03、V04;模块内 `go version`、`go env GOVERSION GOTOOLCHAIN`;`node --version`、`npm.cmd --version`。
- 实机验收步骤:全新构建环境按固定版本安装依赖;验证锁文件不漂移;在双平台验收机记录系统版本和运行包版本,比较 manifest。
- 验收证据:已有 Go 1.26.6 与前端锁文件基线、独立克隆构建;安装脚本策略和完整系统矩阵尚缺。
- 复审结果:未完成,不以一次构建通过代表可重复发布。
## P0-05 确认数据库正式支持矩阵
- 任务编号:P0-05;任务名称:确认数据库正式支持矩阵;优先级:P0。
- 当前状态:`[!] 暂缓或存在阻塞`。
- 六阶段:需求确认 `[~]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[~]`;生产部署测试 `[!]`;最终验收 `[ ]`。
- 问题说明:三种驱动和迁移存在,不等于正式支持级别及全部版本已经证实;实机证据不足。
- 涉及文件:`backend/internal/database/`、其 `migrations/mysql/`、`migrations/postgres/`、`migrations/sqlite/`、`backend/internal/cli/`、《构建版本与数据库支持矩阵.md》。
- 依赖任务:P0-04。
- 整改内容:明确 SQLite、MySQL、PostgreSQL 支持版本;验证 MySQL 5.7/8.0、PostgreSQL 目标版本、SQLite 锁并发;逐库检查类型、索引、默认值、事务及初始化、升级、回滚、备份恢复。不能悄然去掉难测版本。
- 验证命令:V06、V02;真实数据库测试按正式集成测试的参数运行并保存非跳过结果,不在命令行嵌入密码。
- 实机验收步骤:逐版本创建专用测试库;从空库初始化及历史版本迁移,注入失败检查事务;使用官方备份工具恢复并核对行数、资源关联和加密凭据;验证 TLS 和断线重连;只清理明确测试库。
- 验收证据:历史记录有部分数据库恢复测试;本次完整支持矩阵和当前候选实机记录未齐,不继承为全通过。
- 复审结果:支持版本及实机覆盖待确认,其他任务可继续。
## P0-06 建立统一领域模型
- 任务编号:P0-06;任务名称:建立统一领域模型;优先级:P0。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:已有用户、域名、任务和服务器模型,项目、证书订单/版本及跨业务关联未闭环。
- 涉及文件:`backend/internal/domain/`、`backend/internal/database/migrations/`、`backend/internal/repository/`、`backend/internal/httpapi/`;拟新增领域关系说明及必要实体迁移。
- 依赖任务:P0-05 的支持矩阵;设计审查可先于实机完成。
- 整改内容:覆盖 users、roles、projects、domains、certificates、certificate_versions、certificate_orders、dns_accounts、dns_delegations、servers、deployment_targets、deployment_records、tasks、task_attempts、renewal_policies、notification_channels、notification_records、audit_logs、backup_records;定义外键、归属、引用删除策略、任务和审计关联。
- 验证命令:V06、V07;补关联完整性、迁移回填和删除约束测试。
- 实机验收步骤:迁移含历史资源的专用库,核对项目归属不丢失;从一次申请追踪订单、版本、任务、部署、通知和审计;删除仍被引用的资源必须拒绝。
- 验收证据:现有模型只能证明部分实体存在;完整关系图、迁移回填与三库关联验证待补。
- 复审结果:未完成,禁止用相似名称替代缺失关联。
## P0-07 增加项目级权限和资源隔离
- 任务编号:P0-07;任务名称:增加项目级权限和资源隔离;优先级:P0。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:当前用户分组不等于项目及资源隔离,项目级授权仍需实现和审查。
- 涉及文件:`backend/internal/auth/`、`backend/internal/admin/`、`backend/internal/httpapi/`、`backend/internal/repository/`、`frontend/src/views/UserManagement/`;拟新增项目管理模块及迁移。
- 依赖任务:P0-06。
- 整改内容:资源增加项目、所有者、创建人及更新人;制定系统管理员、项目管理员、证书/DNS/部署管理员、审计与只读角色矩阵;列表、详情、写操作、导出与后台任务均检查项目归属,普通用户不能读完整私钥。
- 验证命令:V07、V06、V03;补跨项目 ID 枚举、伪造归属、任务访问与私钥导出拒绝测试。
- 实机验收步骤:建立两项目和最小权限成员;分别测试证书、服务器、目标、DNS、任务、审计的跨项目读写、删除与回滚;撤权后现有会话及排队任务必须重新判权。
- 验收证据:已有分组/角色测试不能证明项目隔离;项目矩阵和真实越权用例待补。
- 复审结果:未完成。
## P0-08 完善凭据和主密钥生命周期
- 任务编号:P0-08;任务名称:完善凭据和主密钥生命周期;优先级:P0。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:加密存储已有基础,引用检查、禁用、轮换、主密钥变更和恢复链路证据不完整。
- 涉及文件:`backend/internal/secretstore/`、`backend/internal/sshkey/`、`backend/internal/config/`、`backend/internal/certificate/`、`backend/internal/database/credentials.go`、`backend/internal/httpapi/`。
- 依赖任务:P0-06、P0-07。
- 整改内容:统一 DNS、SSH、SMTP、HTTP、数据库、ACME 和证书私钥的创建、验证、禁用、轮换、删除与引用检查;实现主密钥变更、备份恢复和丢失边界;页面与日志永不返回完整秘密。
- 验证命令:V08、V07、V10;增加轮换中断、密钥丢失、被引用删除、禁用后使用及日志脱敏测试。
- 实机验收步骤:专用测试凭据轮换后确认新值生效、旧值失效;中断主密钥变更验证原子性;从受保护备份恢复;缺主密钥必须明确拒绝而非静默生成并丢失数据;检查输出与存储权限。
- 验收证据:已有 secretstore 与密钥测试;完整生命周期和恢复演练尚缺。
- 复审结果:未完成。
## P0-09 强化 SSH 主机身份验证
- 任务编号:P0-09;任务名称:强化 SSH 主机身份验证;优先级:P0。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[~]`;生产部署测试 `[~]`;最终验收 `[ ]`。
- 问题说明:指纹校验已有测试,首次确认、变更更新以及自动公钥安装实机失败尚需定位。
- 涉及文件:`backend/internal/deployment/`、`backend/internal/sshkey/`、`backend/internal/httpapi/`、`frontend/src/views/Dashboard/ServerModal.vue`、`frontend/src/views/Dashboard/SSHKeyModal.vue`。
- 依赖任务:P0-07、P0-08。
- 整改内容:保存并确认指纹、变更阻断、人工更新留审计;未确认、目标不符、失效凭据全部阻断;命令依据具体服务器展示,支持密码安装公钥并用密钥验证登录,失败日志仅含安全摘要。
- 验证命令:V09、V07、V03;补首次未确认、指纹变化及各公钥部署阶段失败测试。
- 实机验收步骤:使用已确认主机指纹密码登录,按 password_connect、authorized_key_install、private_key_connect、private_key_command、private_key_exit 分阶段定位;验证 authorized_keys 权限和密钥登录;隔离 SSH 目标更换指纹后必须阻断,人工更新后再试。
- 验收证据:历史 SSH 身份只作连接线索,当前候选公钥自动部署成功、失败与恢复的完整证据待补。
- 复审结果:未完成,不跳过指纹换取成功。
## P0-10 统一任务、部署和回滚事务模型
- 任务编号:P0-10;任务名称:统一任务、部署和回滚事务模型;优先级:P0。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:部署事务不等于全部长操作都具备统一任务、执行尝试、取消和部分成功状态。
- 涉及文件:`backend/internal/domain/`、`backend/internal/repository/task_repository.go`、`backend/internal/deployment/`、`backend/internal/certificate/`、`backend/internal/httpapi/`;拟新增统一任务服务与必要迁移。
- 依赖任务:P0-06、P0-07、P0-09。
- 整改内容:申请、续期、DNS 验证、部署、批量部署、远程备份、回滚、恢复全部关联任务;统一待执行、执行中、成功、失败、取消中、已取消、等待重试、部分成功;记录项目、创建人、时间、步骤、日志、错误、次数和资源。
- 验证命令:V06、V09、V10、V07;补状态转换、崩溃恢复、任务尝试和事务边界测试。
- 实机验收步骤:执行长任务期间刷新、断网、取消和重启;验证状态及执行历史可恢复;批量目标一成一败时显示部分成功;回滚后证书版本、部署与任务结论一致。
- 验收证据:已有部署事务测试;统一八状态和全操作关联尚未验收。
- 复审结果:未完成。
## P0-11 建立生产验收门禁
- 任务编号:P0-11;任务名称:建立生产验收门禁;优先级:P0。
- 当前状态:`[!] 暂缓或存在阻塞`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[~]`;生产部署测试 `[!]`;最终验收 `[ ]`。
- 问题说明:局部测试与历史部署不能证明当前候选具备全链路生产能力。
- 涉及文件:《发布加固与实机验收记录.md》《生产部署与运维说明.md》《全面审查测试与优化记录.md》、`build/`、`deploy/`、`artifacts/`。
- 依赖任务:P0-01 至 P0-10、P0-12、P1-01 至 P1-12、P2-01 至 P2-10 的对应交付;P3 留在完整目标中但不阻断第一阶段。
- 整改内容:分别建立单元、隔离、数据库、真实 DNS、ACME Staging、ACME Production、SSH/SFTP、HTTPS/SNI、Windows Service、Linux systemd、备份恢复、升级回滚 12 层门禁,每层独立结论。
- 验证命令:V01 至 V12 按层执行;实机命令取正式安装/运维说明并登记实际退出码,不能用空参数或跳过结果填通过。
- 实机验收步骤:从当前干净候选完成首次安装、初始化、真实签发、分发、正常 DNS 公网 TLS、重启、恢复和升级回滚;双平台及三库分别记录;任何缺口保留未通过。
- 验收证据:既有自动化及发布证据不覆盖全部 12 层;当前缺口由执行清单持续跟踪。
- 复审结果:禁止生产放行,任务规划和局部整改仍可继续。
## P0-12 完成备份和恢复方案
- 任务编号:P0-12;任务名称:完成备份和恢复方案;优先级:P0。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[~]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:现有 CLI/数据库恢复不是包含私钥、配置、主密钥与审计的完整产品备份方案。
- 涉及文件:`backend/internal/cli/backup_restore.go`、`backend/internal/database/`、`backend/internal/secretstore/`、`backend/internal/certificate/`、`backend/internal/httpapi/`;拟新增备份记录及调度服务。
- 依赖任务:P0-05、P0-06、P0-08、P0-10。
- 整改内容:覆盖数据库、证书元数据/版本/私钥、DNS/服务器/任务/通知/主密钥配置;支持手动、自动、列表、校验、下载、确认恢复、失败回滚与审计;定义一致性和受保护存储,不把秘密放测试证据目录。
- 验证命令:V06、V08、V10、V07;补备份损坏、版本不兼容、错密钥、部分恢复及审计测试。
- 实机验收步骤:每数据库创建完整资源并备份,向空环境恢复、解密并实际部署证书;损坏备份必须在修改前拒绝;恢复中断后可回到原状态;核对恢复前备份、下载授权、定时记录和审计。远端测试不做无关整机备份,产品备份能力不能因此省略。
- 验收证据:部分数据库恢复历史证据存在;全部资源、自动备份和失败回滚闭环待补。
- 复审结果:未完成。