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.

# 核心能力任务规格
覆盖 P1 全部 12 项,遵循《整改任务规格与验收约定.md》。当前不少业务集中于 Dashboard,不得把建议目录当作已经存在的独立页面;新页面均按 Vue、JS、CSS 就近拆分。
## P1-01 建设统一证书中心
- 任务编号:P1-01;任务名称:建设统一证书中心;优先级:P1。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:已有域名及证书操作,不等于统一证书中心与项目筛选、引用保护已完成。
- 涉及文件:`backend/internal/certificate/`、`backend/internal/httpapi/certificate_api.go`、`frontend/src/views/Dashboard/`;拟新增 `frontend/src/views/Certificates/`。
- 依赖任务:P0-06、P0-07、P0-10。
- 整改内容:列表按域名、项目、状态、到期时间筛选;展示状态、剩余有效期、证书链、SAN、签发机构和版本;支持手动续期、部署、回滚、导入与删除无引用证书;分页提供 5、10、15、30 条。
- 验证命令:V10、V07、V03;补筛选分页、空状态、过期时间边界、引用删除和操作权限测试。
- 实机验收步骤:导入和签发多域名证书,跨项目切换筛选与分页;逐项续期、部署、回滚;被引用证书不能删除;刷新后状态与实际服务一致,错误提示不泄密。
- 验收证据:现有 Dashboard 和证书 API 测试仅作基础;独立中心、完整操作及桌面布局待验收。
- 复审结果:未完成。
## P1-02 完善证书详情和版本管理
- 任务编号:P1-02;任务名称:完善证书详情和版本管理;优先级:P1。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:证书文件版本不等于详情包含完整业务信息,版本切换与部署关联须复核。
- 涉及文件:`backend/internal/certificate/lifecycle.go`、`backend/internal/certificate/lifecycle_version_test.go`、`backend/internal/httpapi/certificate_api.go`、`backend/internal/httpapi/certificate_restore_api.go`;拟新增 `frontend/src/views/Certificates/CertificateDetail.vue` 及同名 JS/CSS。
- 依赖任务:P0-06、P0-07、P1-01。
- 整改内容:展示名称、主域名、SAN、项目、机构、签发/到期时间、剩余天数、状态、申请及 DNS 验证方式、当前/历史版本、部署状态、任务和服务器;区分待申请、申请中、有效、将到期、过期、申请失败、部署失败、吊销、禁用。
- 验证命令:V10、V09、V07、V03;补多版本切换、状态映射、时间边界和禁止私钥泄漏测试。
- 实机验收步骤:产生至少两版证书,检查详情及版本指纹;将某版部署并回滚,核对线上证书与详情当前/已部署版本;失败及禁用状态不能伪装有效部署。
- 验收证据:已有版本回归不代表所有详情字段和生命周期状态已实现;真实多版本闭环待补。
- 复审结果:未完成。
## P1-03 完善 ACME 和 DNS 管理
- 任务编号:P1-03;任务名称:完善 ACME 和 DNS 管理;优先级:P1。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[~]`;生产部署测试 `[~]`;最终验收 `[ ]`。
- 问题说明:已有 ACME、DNS 账户与 TXT 测试,不能证明 HTTP-01、CNAME 委派、全部 SAN 和正式签发均通过。
- 涉及文件:`backend/internal/certificate/`、`backend/internal/dnsprovider/`、`backend/internal/dnsverification/`、`backend/internal/httpapi/dns_accounts_api.go`、`frontend/src/views/DNSAccounts/`;拟新增 `frontend/src/views/DNSDelegations/`。
- 依赖任务:P0-07、P0-08、P0-10。
- 整改内容:保留 Production/Staging、DNS-01/HTTP-01、单域名/泛域名/SAN、多 Provider、账户验证/禁用/轮换、CNAME 委派、TXT 添加读取清理;显示账户归属,配置页面一页可用。泛域名通过 DNS-01,不把协议限制算成功。
- 验证命令:V10、V07、V03;补委派链、错误权限、并发 TXT、清理失败、签发与账户隔离测试。
- 实机验收步骤:先做受限 DNS TXT 创建读取精确清理,再以另一授权域名做 Staging 与 Production 签发;分别验证 HTTP-01、DNS-01、泛域名和 SAN;测试委派目标、账户禁用与轮换;失败不删除他人记录,不将 Staging 证书用于正式入口。
- 验收证据:历史 RAM TXT 测试仅证明该次账户权限;当前完整签发矩阵和公网信任证据尚缺。
- 复审结果:未完成。
## P1-04 建设任务中心
- 任务编号:P1-04;任务名称:建设任务中心;优先级:P1。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:现有任务仓储和日志缺完整统一视图、步骤历史、取消及重试交互验证。
- 涉及文件:`backend/internal/repository/task_repository.go`、`backend/internal/httpapi/`、`frontend/src/views/Dashboard/`;拟新增 `frontend/src/views/Tasks/`。
- 依赖任务:P0-07、P0-10。
- 整改内容:列表、详情、实时进度、日志、执行步骤、失败重试、取消、历史、项目/类型/状态筛选及关联证书/服务器/部署;任务与尝试分开展示,刷新后能恢复。
- 验证命令:V06、V07、V03;补八状态、日志增量、重试关联、取消竞态与权限测试。
- 实机验收步骤:运行真实长任务并刷新、断网重连;从列表进入详情查看步骤及资源;失败重试生成可追溯尝试;取消中到已取消过程一致,不能把远端已生效操作假称未执行。
- 验收证据:任务基础存在,完整中心及取消语义待验证。
- 复审结果:未完成。
## P1-05 统一续期策略
- 任务编号:P1-05;任务名称:统一续期策略;优先级:P1。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:现有续期代码不能证明按日期、标签、项目、类型的策略及调度幂等完整。
- 涉及文件:`backend/internal/certificate/renewal.go`、`backend/internal/certificate/renewal_executor.go`、`backend/internal/repository/`、`backend/internal/httpapi/`;拟新增续期策略配置视图和迁移。
- 依赖任务:P0-10、P1-02、P1-03;标签策略依赖 P3-05 的标签数据,不能因此省略。
- 整改内容:支持剩余天数、固定日期、标签、项目、证书类型策略;有限失败重试、成功自动部署和通知;防重复申请、并发续期、重复部署、无限重试及部署状态滞后。
- 验证命令:V10、V06、V09;以可控时钟补阈值、时区、重启、并发调度和重试上限用例。
- 实机验收步骤:在专用证书配置短测试计划,跨重启观察任务仅执行一次;注入 DNS/部署失败后保留旧证书并有限重试;成功后核对版本、线上证书、部署状态和通知。
- 验收证据:已有续期自动化基础,策略矩阵和真实调度闭环尚缺。
- 复审结果:未完成。
## P1-06 建设服务器和部署目标中心
- 任务编号:P1-06;任务名称:建设服务器和部署目标中心;优先级:P1。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[ ]`;生产部署测试 `[~]`;最终验收 `[ ]`。
- 问题说明:已有服务器弹窗和密钥展示,部署目标、项目归属、标签、健康检查与启停边界仍需统一。
- 涉及文件:`backend/internal/deployment/`、`backend/internal/repository/server_repository.go`、`backend/internal/httpapi/`、`frontend/src/views/Dashboard/ServerModal.vue`;拟新增 `frontend/src/views/Servers/`。
- 依赖任务:P0-07、P0-08、P0-09、P0-10。
- 整改内容:服务器列表/详情、连接测试、指纹、标签、项目、分组、部署路径、reload、健康检查和启禁用;服务器配置与密钥命令合并流程,命令按主机生成,配置后自动安装公钥并验证密钥登录。
- 验证命令:V09、V07、V03;补目标路径验证、目录创建权限、禁用后任务拒绝、凭据脱敏和命令注入测试。
- 实机验收步骤:用密码添加专用服务器并确认指纹,自动部署公钥后测试密钥登录;输入不存在的授权目录由产品安全创建;禁用后不能新部署;健康检查和 reload 失败提供可定位结果,不影响同机其他服务。
- 验收证据:历史服务器配置测试不代表自动密钥流程修复;本候选完整目标中心待补。
- 复审结果:未完成。
## P1-07 建设多服务器部署策略
- 任务编号:P1-07;任务名称:建设多服务器部署策略;优先级:P1。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[~]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:单目标事务测试不能替代多目标并行/串行、失败策略和部分成功处理。
- 涉及文件:`backend/internal/deployment/`、`backend/internal/httpapi/`、`backend/internal/repository/`、`frontend/src/views/Dashboard/DeploymentFeedback.js`、`frontend/src/views/Dashboard/DeploymentResult.vue`。
- 依赖任务:P0-09、P0-10、P1-02、P1-06;按标签批量需要标签能力。
- 整改内容:单机、多机并行/串行、标签批量、失败停止/继续、自动回滚、部分成功、部署前备份与部署后 HTTPS;准备、连接、远程备份、临时上传、权限、原子替换、reload、HTTPS、成功或回滚逐步记录。
- 验证命令:V09、V06、V07、V03;补逐阶段故障、取消、网络中断、文件权限和证书/私钥匹配测试。
- 实机验收步骤:至少两部署目标分别串行并行推送;一个目标制造可恢复 reload/HTTPS 失败,验证停止/继续策略及回滚后旧站点有效;普通 DNS 访问核对新证书 SNI,记录每目标和总体状态。只验证证书推送,不操作远端 Git;不备份无关主机数据。
- 验收证据:已有部署回滚单元测试;多机策略和真实 HTTPS/回滚仍缺完整证据。
- 复审结果:未完成。
## P1-08 建设通知中心
- 任务编号:P1-08;任务名称:建设通知中心;优先级:P1。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:已有 Smail 系统账户方向,不能证明通知渠道、触发覆盖、可重试及可审计完整。
- 涉及文件:`backend/internal/notification/`、`backend/internal/config/notification_sender.go`、`backend/internal/httpapi/`、`frontend/src/views/Dashboard/MailNotificationSettings.vue`;拟新增 `frontend/src/views/Notifications/`。
- 依赖任务:P0-07、P0-08、P0-10。
- 整改内容:HTTP Webhook、SMTP;任务成功/失败、将到期/过期、部署失败、服务异常和备份失败通知;渠道测试、有限重试、发送记录与脱敏。邮件默认沿用 Smail 系统账户,不恢复重复自定义邮箱入口。
- 验证命令:V11、V08、V03;补 HTTP/SMTP 超时、拒绝、重试、重复发送和敏感内容过滤测试。
- 实机验收步骤:以产品系统账户发信并核对实际收件,不只看发送 API;测试授权 Webhook 实际接收;注入暂时失败验证次数/退避与记录;检查所有事件类型。Smail 调用失败才只读查阅其项目定位接口,不扩大本任务修改范围。
- 验收证据:既有通知测试不等于真实收信;事件矩阵和失败恢复待补。
- 复审结果:未完成。
## P1-09 建设审计中心
- 任务编号:P1-09;任务名称:建设审计中心;优先级:P1。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:审计仓储存在,所有危险操作及失败路径是否关联请求、任务和项目仍未闭环。
- 涉及文件:`backend/internal/repository/audit_repository.go`、`backend/internal/repository/audit_reader.go`、`backend/internal/httpapi/`;拟新增 `frontend/src/views/AuditLogs/`。
- 依赖任务:P0-06、P0-07、P0-10。
- 整改内容:记录登录/退出/密码、用户/角色/项目、证书申请/导入/删除/回滚、部署、凭据、指纹、备份恢复和系统设置;包含操作人、时间、类型、资源类型/ID、项目、客户端 IP、结果、失败原因、请求追踪 ID。
- 验证命令:V06、V07、V11、V03;逐类测试成功和拒绝路径、不可伪造字段、跨项目查询和脱敏。
- 实机验收步骤:按危险操作清单逐项执行并关联审计;制造权限拒绝及远端失败;用只读审计角色查询,跨项目访问拒绝;追踪 ID 能回溯相关任务但不暴露秘密。
- 验收证据:已有审计仓储测试;完整操作覆盖和页面联查待补。
- 复审结果:未完成。
## P1-10 建设证书监控仪表盘
- 任务编号:P1-10;任务名称:建设证书监控仪表盘;优先级:P1。
- 当前状态:`[ ] 未开始`。
- 六阶段:需求确认 `[x]`;代码实现 `[ ]`;自动化测试 `[ ]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:已有运行概览不等于完整证书监控面板,统计口径与数据归属未统一复审。
- 涉及文件:`frontend/src/views/Dashboard/RuntimeOverview.vue`、同目录 JS/CSS、`backend/internal/httpapi/`、`backend/internal/repository/`。
- 依赖任务:P0-07、P1-01、P1-04、P1-06、P1-08、P1-09。
- 整改内容:总数、有效/将到期/过期/申请失败/部署失败、今日/失败任务、服务器/异常服务器、最近审计/通知;首页保留用户、域名、状态、到期与部署服务器,概览不能变成日志页;制定互斥到期阈值,明确原建议在第 7 天重叠的边界。
- 验证命令:V07、V06、V03;补按项目聚合、零数据、时区、1/7/30 天边界与失败分类测试。
- 实机验收步骤:构造不同状态的专用证书及服务器,逐项核对统计与列表;点击统计能到正确筛选;不同权限用户数据隔离;常用桌面视口一页显示主要信息且无重叠。
- 验收证据:未建立本项完整统计和布局验收证据。
- 复审结果:未开始实现,不把现有概览误标完成。
## P1-11 建设备份恢复页面
- 任务编号:P1-11;任务名称:建设备份恢复页面;优先级:P1。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[ ]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:CLI 恢复基础不能替代 Web 备份列表、风险提示和二次确认。
- 涉及文件:`backend/internal/cli/backup_restore.go`、`backend/internal/httpapi/`;拟新增 `frontend/src/views/Backups/` 及 `RestoreDialog/`。
- 依赖任务:P0-07、P0-10、P0-12、P1-04、P1-09。
- 整改内容:备份列表、校验、下载、恢复;显示影响范围、二次确认及输入确认文字;恢复前自动备份,过程入任务中心,结果入审计,失败自动回滚。
- 验证命令:V06、V07、V03;补无权限下载、确认字不符、重复提交、任务刷新和失败提示测试。
- 实机验收步骤:在可清理环境从页面备份并恢复,观察自动安全备份、任务与审计;损坏包和错误主密钥必须阻断;中途失败回滚后数据一致;普通用户不可访问下载或恢复入口。
- 验收证据:现有后端恢复基础未证明本页面和高风险交互完成。
- 复审结果:未完成。
## P1-12 统一 API 契约和权限矩阵
- 任务编号:P1-12;任务名称:统一 API 契约和权限矩阵;优先级:P1。
- 当前状态:`[~] 进行中`。
- 六阶段:需求确认 `[x]`;代码实现 `[~]`;自动化测试 `[~]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:现有接口说明与实际路由、项目权限和长操作返回值需逐项对齐。
- 涉及文件:《后端接口说明文档.md》、`backend/internal/httpapi/`、`backend/internal/bootstrap/router.go`、`frontend/src/views/`。
- 依赖任务:P0-07、P0-10;随 P1 其他模块增量维护,不等待所有页面写完才定义契约。
- 整改内容:每个路由记录路径、方法、登录要求、角色、项目权限、资源权限、审计、幂等、敏感字段及错误码;统一请求/响应、分页、任务 ID 和失败语义,文档不能虚构路由。
- 验证命令:V07、V02、V03;路由清单与文档双向比对,补字段、状态码、授权及敏感响应契约测试。
- 实机验收步骤:以各角色从真实 Web 操作关键流程,记录实际请求与脱敏响应;越权、无效字段、超时和冲突符合契约;接口升级后旧会话及刷新不破坏任务追踪。
- 验收证据:已有接口文档和回归;全路由对照、项目权限矩阵及生产联调未齐。
- 复审结果:未完成。