Scert/doc/核心能力任务规格.md
xuans 02e039984a 保存 DNS 多账户数据层与实库故障夹具修复前检查点
基础模型和迁移已完成;增量竞态暴露 MySQL 审计故障注入权限问题,后续修复,不代表完整功能或验收通过。
2026-10-04 04:42:39 +08:00

20 KiB
Raw Blame History

核心能力任务规格

2026年10月4日03:55 元数据读取边界补强

  • [✓] 全局系统设置仅允许超级管理员读取和修改;普通管理员不再保留全局 SMTP、ACME、DNS 项目及路径元数据读取权限。项目 DNS 账户独立授权不变。
  • [✓] 前端角色加载和并发隔离已补回归,全量 286 项及构建通过;第一台后端设置专项通过。
  • [✓] 第一台 HTTP API 全量、静态检查、专项竞态及干净源码后端全量均成功终止;正式 c5774f3 已在第一台完成升级及内部摘要、严格 TLS 和匿名拒绝复核。
  • [~] 公共浏览器真实角色、其余元数据通道、完整多账户和 CNAME 生命周期仍未完成。

以上不整项关闭 P1 或总体生产门禁,证据以《Linux生产流程测试记录》为准。

覆盖 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 管理

2026年10月4日04:32 增量:独立 DNS 账户模型、三库迁移二十七和实时授权基础仓储已经实现,首轮第一台三库专项与 vet 通过;SQLite 外键关闭时的保护缺口已补触发器修复。三轮竞态、三库审计回滚等增量回归运行中。仍未接入旧系统账户导入、域名绑定、任务租约、正式签发续期、账户接口和页面,不能把本批基础数据层视为完整多账户生命周期。细项见《DNS多账户整改任务清单》。

2026年10月4日03:14 更新:HTTP-01 已接入正式签发、订单隔离路由、域名验证方式与迁移二十六;实际签发快照授权已补强。第一台 Linux 全量、vet、专项竞态、真实 Nginx 十项和三库迁移专项通过,干净 9c26db0 官方包已升级第一台并复核运行摘要。实际 lego 客户端完整 ACME 协议与公共域名签发仍待验收;system-dns 单账户列表不能代表独立多账户生命周期完成,完整账户及 CNAME 委派仍有开发缺口。保留六阶段未完成状态,内部就绪不替代公共入口、首次 Web 与全角色矩阵。

  • 任务编号:P1-03;任务名称:完善 ACME 和 DNS 管理;优先级:P1。
  • 协议证据补充:真实 lego 客户端在第一台隔离 CA 通过单域名、SAN、拒绝和取消四场景,五轮竞态及证书包全量、vet 通过;注册/JWS/HTTP 证明/CSR/证书链经过实际校验,未替换签发器。该证据不关闭公共签发、全部异常协议、DNS 账户或委派门禁。
  • 当前状态:[~] 进行中。
  • 六阶段:需求确认 [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 操作关键流程,记录实际请求与脱敏响应;越权、无效字段、超时和冲突符合契约;接口升级后旧会话及刷新不破坏任务追踪。
  • 验收证据:已有接口文档和回归;全路由对照、项目权限矩阵及生产联调未齐。
  • 复审结果:未完成。