77 KiB
基础整改任务规格
当前规格核对(2026-09-30 15:26,SSH 失败现场保留)
总体验收仍为 P0-03:完成,待复审。 开发子项的完成记录与生产验收结论分开管理。
- 本轮只读确认密码 SSH 可用、Scert 正在运行,远端主程序与本地正式候选校验值一致。
- [~] 公钥转换和内置安装命令的源码疑点待专项回归确认;目前没有新的修复或验收通过结论。
- 后续按失败复现、代码修复、构建部署、密码安装、密钥回连、证书推送的顺序补齐证据。
- [!] 多服务器验收仍要求第二台真实目标服务器;保留当前失败现场,不以重复记录、辅助脚本或本地测试替代生产验收。
最新规格执行进度(2026-09-30,远端密码 SSH 阻塞)
总体验收位置仍为 P0-03:完成,待复审。 本轮规格实机复核已确认目标服务器的密码 SSH 和主机指纹本身可用,但 Scert 自动公钥部署流程返回 502,因此尚不满足密钥登录和证书推送的生产前置条件。
- 规格实机:正式 HTTPS 入口登录、会话读取和资源列表读取通过。
- 规格实机:目标机密码 SSH 连接通过,登记的 ED25519 指纹与目标机实际指纹一致。
- [!] 规格阻塞:Scert 自动部署公钥失败,服务器资源保留失败状态;尚未执行证书文件写入、Nginx 配置校验和重载。
- [~] 规格待修复:自动公钥部署、密钥登录验证和服务器保存成功路径。
- [!] 规格限制:现场只有一台真实可用服务器,不用虚构或重复服务器记录作为第二台真实服务器证据。
- 规格未验收:真实多服务器推送、三数据库实机、DNS/ACME、跨平台服务和最终生产门禁。
- [!] 不得把本轮实机局部结果标记为
[✓];总体验收继续为 P0-03:完成,待复审。
最新规格执行进度(2026-09-30,域名与服务器多对多统一回归)
总体验收位置仍为 P0-03:完成,待复审。 本轮完成既有多对多规格的实现复核和自动化验证,尚未满足真实服务器生产部署和最终验收条件。
- 规格实现复核:域名与服务器使用联合关联表,双方不设置单边唯一约束。
- 规格实现复核:绑定按域名替换,允许多个服务器;服务器反向读取允许多个域名;清空只影响当前域名。
- 规格验证:项目归属、路径隔离、重复去重、失败回滚和共享服务器场景已有后端测试。
- 规格验证:域名多选及服务器反向域名展示已有前端测试,前端全量 231 项通过。
- [~] 规格待续:三数据库实机、真实 SSH 多服务器推送、HTTPS/DNS/ACME 和浏览器生产流程。
- 规格未验收:远端生产部署门禁、跨平台服务恢复和最终生产验收。
- [!] 不得把专项自动化测试标记为
[✓];总体验收继续为 P0-03:完成,待复审。
最新规格执行进度(2026-09-30,P0-10 崩溃恢复边界修复)
总体验收位置仍为 P0-03:完成,待复审。 本轮补齐服务重启恢复中任务尝试的范围约束,并通过本地全量验证,尚未满足生产验收的实机条件。
- 规格实现:恢复任务尝试依据恢复前活动状态的父任务筛选,不使用完成时间和阶段反查历史任务。
- 规格验证:新增历史恢复任务时间碰撞测试,确认历史任务尝试不被错误收敛。
- 规格验证:
go test ./...、go vet ./...、git diff --check通过。 - [~] 规格待续:DNS 验证、重试幂等、真实三数据库和统一复审。
- 规格未验收:远端密码 SSH、多服务器生产推送、HTTPS/DNS/ACME、平台服务和最终生产门禁。
- [!] 不得把本轮局部开发标记为
[✓];总体验收继续为 P0-03:完成,待复审。
最新规格执行进度(2026-09-30,P0-10 部署结果持久化)
总体验收位置仍为 P0-03:完成,待复审。 本轮将批量部署结果的存储、查询、权限和错误脱敏纳入已完成开发范围,但尚未满足生产验收的实机条件。
- 规格实现:任务尝试与每台服务器部署结果建立关联,支持结果序号、部署状态、消息和备份 ID。
- 规格实现:SQLite、MySQL、PostgreSQL 均新增 0016 迁移,迁移目录及嵌入内容一致。
- 规格实现:部署结果查询遵循任务项目可见范围,撤权后不再读取历史结果。
- 规格实现:失败结果只返回通用中文提示,不泄露远端文件路径和底层错误。
- 规格验证:
go test ./...、go vet ./...、git diff --check通过。 - [~] 规格待续:DNS 验证、崩溃恢复、重试幂等、真实三数据库和统一复审。
- 规格未验收:远端密码 SSH、多服务器生产推送、HTTPS/DNS/ACME、平台服务和最终生产门禁。
- [!] 不得把本轮局部开发标记为
[✓];总体验收继续为 P0-03:完成,待复审。
最新进度摘要(2026-09-29)
总体验收位置仍为 P0-03:完成,待复审。 本轮完成 P0-10 任务并发与恢复边界的开发及本地验证,不改变生产验收前置条件。
- 幂等重放活动状态统一覆盖
queued、running、retry_wait、cancelling。 - 管理证书任务活动保护、自动续期删除保护和服务重启尝试范围保护已实现。
- 相关专项测试、后端全量测试、前端 231 项测试和生产构建均通过。
- [~] P0-10 其他入口、跨数据库实机矩阵和统一复审仍需继续。
- 生产环境清理、远端编译部署、HTTPS/DNS/ACME、密码 SSH、平台服务和最终验收仍未执行。
- [!] 不新增
[✓]复审通过项,总体验收继续保持 P0-03:完成,待复审。
最新进度摘要(2026-09-29 继续开发)
总体验收位置仍为 P0-03 完成,待复审。 本轮继续推进 P0-10 任务事务链,不把局部代码或专项测试视为整项复审通过。
- HTTP 证书申请任务补齐“开始执行”审计;开始审计与终态审计均关联任务创建人、项目和任务 ID。
- 开始审计写入失败时,任务和任务尝试收敛为失败并停止证书申请;专项回归测试已覆盖该异常路径。
go test ./internal/httpapi已通过;尚未据此升级 P0-10 或总体验收状态。- [~] P0-10 的 DNS 验证任务、批量部署结果、崩溃恢复、重试幂等及其他长耗时入口仍需继续审查。
- P0-12 备份恢复、三数据库实库矩阵、浏览器清缓存、密码 SSH、远端部署和生产验收尚未执行。
- [!] 不新增
[✓]复审通过项,总体验收继续保持 P0-03 完成,待复审。
最新执行与补充约束(2026-09-29 继续开发)
总体验收位置继续保持 P0-03 完成,待复审。本轮补充 P0-10 任务归属不变量,不改变原始 44 项范围,也不提前进入生产验收。
- 证书工作流通过上下文记录已认证请求的任务创建人,后台调度任务不得伪造登录操作者。
- 证书任务开始、完成审计必须与任务的
operator_id一致;任务资源范围仍由域名项目归属服务端确定。 - 创建人归属专项测试通过;完整后端、三数据库实库、浏览器、密码 SSH、远端部署和生产门禁仍未完成。
- [~] DNS 验证任务、批量部署结果、崩溃恢复、重试和其他长耗时入口仍需继续补齐。
- [!] 本轮不得将总体验收升级为复审通过,当前仍为 P0-03 完成,待复审。
最新执行与补充约束(2026-09-29 继续开发)
总体验收位置继续保持 P0-03 完成,待复审。本轮开发不改变原始 44 项范围,也不提前进入生产验收。
- 证书导入、恢复、校验已接入统一任务工作流,提交
b899751。 - 当前证书部署、导入、恢复、校验任务已接入取消上下文,取消任务可以中止实际执行。
- 已新增取消绑定回归用例;专项测试、后端全量
go test ./...和git diff --check已通过,仍需复审。 - [~] 继续核对任务尝试、审计、取消终态、重试幂等和异常收尾。
- P0-12 备份恢复、三数据库、浏览器、密码 SSH、远端部署和生产门禁仍未验收。
- [!] 不得把本轮开发结果标记为
[✓]复审通过。
最新执行与补充约束(2026-09-29 23:48)
总体验收位置保持 P0-03 完成,待复审;下方各时间点内容为历史记录,不以开发子项升级整项验收结论。
- 上一批任务部分成功和前端状态展示已提交并推送
2b9d82d;已有域名与服务器多对多模型继续保留。 - [~] P0-10 补充不变量:申请、校验、部署、导入、恢复任务处于
queued、running、retry_wait、cancelling时,禁止删除对应域名。 - 拒绝删除时必须保留域名、服务器关联与已有审计;终态
success、failed、cancelled、partial_success不应永久阻止合法删除。 - 本批开发完成后以新增专项回归结果核对上述不变量,不能用已有普通运行状态用例替代。
- [~] P0-10 其余取消、重试、幂等、崩溃恢复和 P0-12 备份恢复仍需推进,原始规格范围不缩减。
- 三数据库、浏览器、密码 SSH、远端部署、平台服务与生产门禁仍待统一验收。
当前执行位置(2026-09-29 16:55 更新)
按总体验收口径当前仍在 P0-03 完成待复审。P0-01~P0-03 已完成待复审,P0-04~P0-06 仍有验证或开发未闭环;P0-07 为并行开发批次,局部代码和专项测试不能替代整项复审。域名新增/修改/删除项目授权、项目可见读取、任务引用锁保护及审计失败回滚已分别提交 5180c7d、82448c9、e36794a。
先开发、后统一测试;原始 44 项和六阶段验收标准均不改变。当前步骤以《Scert整改任务执行清单》首节为准,整项状态以《Scert整改合并优化清单》首节为准。下方旧批次的通过记录不得套用到当前候选。
当前开发补充(2026-09-29 18:22):P0-07 已完成任务列表、详情、尝试读取和取消的项目隔离接线,证书任务入口使用项目可见域名及
certificate.manage判权;114514b已提交推送,后端go test ./...当前本地通过。三数据库矩阵、浏览器、远端部署、生产验收及其他资源写入权限仍未完成,总体验收继续保持 P0-03 完成待复审。
当前开发补充(2026-09-28):已按用户确认补齐域名与服务器多对多源码,同项目内可双向复用,修改或清空一方不改变另一方;共享路径冲突在绑定保存、服务器修改及部署前检查。生命周期收尾、七个资源读取入口与绑定写入授权均待统一测试,其他业务资源及任务授权仍未闭环,六阶段及原始 44 项不缩减。服务器别名、在途任务与远端文件占用不由本批静态路径检查替代。详见执行清单首节、模型第十一/十二节和支持矩阵第二十六节;下方为历史证据。
当前开发补充(2026-09-29):域名写入已在事务内按真实项目成员权限判定,更新先读取项目可见资源,删除与证书任务检查保持同一资源锁;新增、修改、删除的成功审计与业务写入同事务,审计拒绝时业务回滚。
internal/repository与internal/httpapi专项通过,但完整后端、三库、浏览器、部署和生产验收仍未完成;总体验收仍按 P0-03 记录。
当前补充(2026-09-28 20:15):P0-04 已新增干净提交 Windows 正式发布构建、包内容与运行副本核验及实际启动证据;P0-07 的浏览器验证仅到达首次初始化的未认证入口,配置和无效令牌均被拒绝。浏览器文件工具工作区配置阻止传入一次性地址,尚未兑换合法会话,不能称成员页面、项目隔离或生产验收通过。初始化专项 128 个叶子通过、4 条平台条件跳过,完整范围见支持矩阵第二十五节。各总项及六阶段验收标准不变,下方为历史进度。
当前进度(2026-09-28 19:54):P0-07 的成员 API、成功事务审计、失败请求审计、可见项目分页入口和成员 Web 页面均已实现;普通项目管理员可从自己的工作台进入,项目和成员响应禁止缓存,账户建议不扩大原有用户可见性。最后源码专项、完整后端、前端、双版本 MySQL 组合及三轮专项竞态已通过,条件跳过和构建证据见支持矩阵第二十四节。真实浏览器、项目增删改、全业务资源及排队任务授权仍未交付或验收;P0-07 保持进行中,原始六阶段与生产门禁不变。下方未接入成员 Web/API 的表述仅对应历史批次。
当前补充(2026-09-28):P0-07/P1-09 的成功成员变更与审计同事务实现已在检查点保存,审计失败必须回滚;拒绝请求审计、成员 Web/API 和业务授权仍未交付。P0-04/P0-05 最终驱动候选的完整后端、SQLite 取消查询与 WAL 专项、双版本 MySQL 组合及 Windows 独立程序恢复已通过。精确结果、竞态与未关闭项见支持矩阵第二十二节,不沿用旧批次放行;各总项状态不升级。
本批进度(模式 14):P0-07 已实现项目成员与六类角色、按实时账户状态和关系判权、单语句授权变更;P0-06 增加成员引用约束。用户分组不隐式授予权限,普通用户不能读取完整私钥。成员 Web/API、审计和全部资源/任务授权链仍未接入;P0-05/P0-06/P0-07 保持
[~]。证据与边界见执行清单首节、模型第九节和支持矩阵第二十一节;下方为历史批次。
本批进度(模式 13):P0-06 已增加任务/审计的项目、系统和未知范围快照及任务关联;HTTP 身份、后台任务、历史删除资源与孤儿尝试按实际来源处理。范围保存与当前资源校验不是成员授权,P0-05/P0-06/P0-07 均保持
[~]。本批证据见执行清单首节及支持矩阵第二十节;下方模式 10~12 说明为历史批次,不覆盖本批结果。
当前进度:域名/服务器归属、三库第 11 号迁移及绑定约束已随
7284958提交;第 12 号迁移已随92c844f修复 SQLite 替换绕过并通过本批回归,详细状态见执行清单和支持矩阵第十九节。下方根实体批次与 46 项条件跳过为历史数据;资源批次全量是 47 项条件跳过,不能混用。任务、审计、其他资源及成员授权仍未完成,P0-05/P0-06/P0-07 总项均保持[~]。
2026 年 9 月 28 日最终验证:项目根实体的 SQLite、MySQL 5.7/8.0 实库及后端回归已通过,替代下方启动阶段“持续验证”的状态;仅该子项为
[x]。完整资源关联与 P0-07 权限隔离仍为[~]。详细证据、46 项条件跳过及 PostgreSQL/生产缺口见支持矩阵第十八节。
2026 年 9 月 28 日实施补充
- P0-06 新增项目根实体、三库第 10 号迁移与仓储,本地项目及 SQLite 历史升级专项通过。
- [~] 完整后端、MySQL 隔离验证及后续项目资源关联持续推进,详见《Scert整改任务执行清单.md》《项目资源关联模型.md》。
- PostgreSQL 项目实库验证、资源回填、跨项目关联保护、成员授权及危险操作审计关联仍未完成。
P0-06 与 P0-07 均维持 [~],六阶段中的隔离、生产和最终验收不得因新增项目表提前勾选。P0-05 的旧证据只适用于原对应版本,模式 10 的完整数据库矩阵仍需重新验证。
本文件覆盖原始清单 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] 已完成,等待复审。 - 六阶段:需求确认
[x];代码实现[x];自动化测试[x];隔离环境测试[x];生产部署测试[ ];最终验收[ ]。 - 问题说明:旧汇总表虽覆盖 44 项,缺逐项依赖、文件、命令、实机步骤和复审字段。
- 涉及文件:《Scert整改任务执行清单.md》、本文件、其余三级任务规格、《整改任务规格与验收约定.md》;关联《Scert开发任务清单.md》《全面审查测试与优化记录.md》《发布加固与实机验收记录.md》《生产部署与运维说明.md》。
- 依赖任务:P0-01;其余 43 项的业务完成不是本项文档补齐的前提。
- 整改内容:逐项补足 12 个原定字段及六阶段,原始清单保留;区分历史事实、规划和当前实证;维护汇总状态与规格一致。
- 验证命令:V01;按约定进行 44 项编号、必需字段、依赖、文件、状态和六阶段结构核对,并人工对照原始范围。
- 实机验收步骤:生产执行时按规格逐项登记提交、包哈希、环境与实际操作;抽查任何“通过”能回溯到对应证据。文档治理本身不触碰服务器或数据库。
- 验收证据:2026-09-27 对照原始清单核对全部 44 项编号和名称、必需字段、六阶段、显式依赖编号、既有文件及汇总状态;
fab98d1独立克隆包含全部规格,构建后工作区干净。详见执行清单本批记录;不将文档齐全称为 44 项业务完成。 - 复审结果:结构与范围核对通过,等待最终复审;本治理项未单独执行生产部署,实际业务按各任务门禁继续验证。
P0-03 整理源码、构建产物和部署产物
- 任务编号:P0-03;任务名称:整理源码、构建产物和部署产物;优先级:P0。
- 当前状态:
[✓] 复审通过(2026-09-30 20:53,仅源码与产物边界)。 - 六阶段:需求确认
[x];代码实现[x];自动化测试[x];隔离环境测试[x];生产部署测试[x];最终验收[✓]。 - 最新复审:当前部署源码
0bb427d的独立克隆正式构建、发布模块完整测试、23 项清单校验、干净索引及实际远端包校验通过,详见《Linux生产流程测试记录》20:53 章节。下方早期未部署结论为历史证据;本项通过不提升其他任务或整体上线状态。 - 问题说明:既有忽略规则未覆盖根级二进制、通用归档、补丁和数据库旁路文件;开发机排除配置不能代表新克隆。
- 涉及文件:
.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/执行。 - 实机验收步骤:独立克隆只取源码,安装依赖并正式构建;确认工作区无新增产物入索引;部署只取发布白名单,不能携带浏览器缓存、数据库或本机凭据。
- 验收证据:
fab98d1后端全量测试、vet、模块校验通过;隔离 Git 核对根及子目录规则和完整索引;独立克隆完成发布模块测试、前端 150 项、双平台构建及 33 项 manifest/归档校验,产物未入索引,未删除现有文件。 - 复审结果:源码及产物边界复核通过,等待最终复审;没有执行远端生产部署,不代表生产能力通过。
P0-04 统一开发和构建版本
- 任务编号:P0-04;任务名称:统一开发和构建版本;优先级:P0。
- 当前状态:
[~] 进行中。 - 六阶段:需求确认
[x];代码实现[x];自动化测试[x];隔离环境测试[~];生产部署测试[ ];最终验收[ ]。 - 问题说明:精确工具链、禁用安装脚本、发布前后校验、构建机记录与换行一致性已实现,Windows 双独立克隆验证通过;Linux 原生构建与双平台运行环境证据仍缺。
- 涉及文件:
.gitattributes、backend/go.mod、backend/go.sum、backend/internal/releasearchive/source_boundary_test.go、frontend/package.json、frontend/package-lock.json、frontend/.npmrc、build/build-release.ps1、build/toolchain.mjs、build/toolchain.test.mjs、《构建版本与数据库支持矩阵.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。
- 验收证据:最终候选
94237b8独立克隆前端 175 项通过,其中 25 项工具链回归;后端全量测试、vet、模块校验通过;两份不同换行配置的克隆产生相同 4 个 Web 文件和 5 份版本输入哈希;33 项发布清单、双平台解包及包内校验全部通过,详见执行清单本批记录。 - 复审结果:Windows 构建与前端重复构建已验证;整体仍未完成,不能用交叉编译替代 Linux 原生构建或真实服务运行验收。
P0-05 确认数据库正式支持矩阵
- 任务编号:P0-05;任务名称:确认数据库正式支持矩阵;优先级:P0。
- 当前状态:
[~] 进行中。 - 六阶段:需求确认
[x];代码实现[~];自动化测试[~];隔离环境测试[~];生产部署测试[!];最终验收[ ]。 - 问题说明:已修复迁移、连接恢复、MySQL 对象导出/恢复、SQLite 逐连接配置与 WAL 恢复;本批修复历史模式 1~3 有任务数据时迁移 4 失败,并补充独立 Windows 程序的升级及备份恢复。旧发行包实际数据升级、完整发行包、真实服务重启、Linux 原生、取消边界及剩余数据库/平台证据仍不足。
- 涉及文件:
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 锁并发;逐库检查类型、索引、默认值、事务及初始化、升级、回滚、备份恢复。不能悄然去掉难测版本。
- 当前新增证据:SQLite 历史模式 1~9 的带数据升级、任务表依赖对象保留、失败回滚与解除阻塞后重试已完成;独立 Windows 产品程序的旧备份升级、恢复后再升级和升级后备份恢复已完成,详见《构建版本与数据库支持矩阵》第十七节。
- 当前剩余门禁:旧发行包实际数据与配置、完整发行包安装、真实服务重启、Linux 原生执行、取消边界、其余数据库/平台和生产门禁仍未完成;隔离模式夹具和交叉编译不替代这些证据。
- 验证命令:V06、V02;真实数据库测试按正式集成测试的参数运行并保存非跳过结果,不在命令行嵌入密码。
- 实机验收步骤:逐版本创建专用测试库;从空库初始化及历史版本迁移,注入失败检查事务;使用官方备份工具恢复并核对行数、资源关联和加密凭据;验证 TLS 和断线重连;只清理明确测试库。
- 验收证据:源码
777c716在 Windows MySQL 5.7.44、8.0.45 完整专项分别通过 176、202 个叶子用例,0 失败、0 跳过;含父项记录为 201、227。新增视图与完整清单权限、复杂依赖、原始官方文件恢复及失败保护;详见支持矩阵第十四节,之前批次的例程、事件等证据保留追溯。 - 复审结果:上述 Windows 隔离范围通过,不等于生产放行。基础表仍只接受 InnoDB,不承诺并发 DDL 一致性;视图已在本批列明场景中验证,不再一概拒绝。官方文件仅对严格识别的连续最终视图块调整顺序;其他编码/SQL 模式、定义者迁移、独立发行命令、Linux 实库、PostgreSQL 当前复测、SQLite 并发锁及正式服务验收仍未完成。
本批补充证据(af831ae):Windows SQLite 3.49.1 专项与竞态检测各通过 42 个叶子用例,26 个核心用例连续重复 10 次通过;连接配置丢失和短截止时间等待超限已有先失败后通过记录。覆盖真实文件库双连接池、三子进程、事务快照、回滚、关闭重开及活动 WAL 快照。无截止时间的手动取消仍可能约 5 秒;这一记录不代表立即取消通过,也不替代完整业务升级恢复、真实服务重启或 Linux/生产验收。当前 SQLite 进展以支持矩阵第十五节及下方子任务为准。
P0-05 触发器自有备份子任务进度
[x]复现自有备份丢失触发器,以及权限不足时隐藏触发器仍报告成功的问题。[x]实现按执行顺序导出原始定义、定义者、SQL 模式、客户端字符集、连接和数据库排序规则;先恢复基础数据再创建触发器。[x]全局、库级、表级、角色、部分撤销和授权遮蔽的可见权限预检;不能证明权限时失败并保留既有备份。[x]最终候选3f6d5b8的 Windows MySQL 5.7.44 / 8.0.45 完整专项回归通过 97 / 104 个叶子用例,0 失败、0 跳过;官方客户端也验证了自有触发器文件。[x]本批实现、最终复测、收尾与文档证据已核对;后端全量测试、vet、模块校验及 Linux 测试包交叉编译通过。细节见支持矩阵第十一节,不提升 P0-05 总状态,也不将交叉编译记为 Linux 实库通过。[ ]例程、事件、视图、其他 SQL 模式、完整表清单权限及剩余三库/双平台矩阵;歧义通配授权目前保守失败,不能视为所有权限组合均完整支持。
P0-05 例程自有备份子任务进度
[x]复现并修复存储过程、函数遗漏;保留定义者、参数、SQL 模式、创建字符集与排序规则,支持替换同名例程。[x]不依赖过滤后的元数据空列表;完整查看权限不足时失败,保留已有备份并清理临时文件。[x]修复 5.7 Latin-1 例程注释乱码,保留 8.0 声明头处理;新增五种元数据失败保护场景,错误保留中文上下文及底层原因。[x]双版本正式实库全专项通过 110 / 121 个叶子用例,0 失败、0 跳过;完整后端回归、vet、模块校验及 Linux 测试包交叉编译通过。收尾与证据见支持矩阵第十二节;未执行 Linux 实库,不提升总状态。[ ]事件、视图、完整表清单权限、其他 SQL 模式、跨服务器定义者迁移及生产恢复验收。本子任务不提升 P0-05 总状态。
P0-05 事件自有备份子任务进度
[x]补齐事件原始定义、时区和计划、定义者、启停状态、创建会话属性,支持重复恢复与同名替换。[x]全局/库级有效 EVENT 可见权限预检;无权限空库、未启用角色、部分撤销与通配遮蔽均有正式反例。[x]恢复前检查 PROCESS、工作线程和调度状态;维护窗口由管理员维持,产品不改全局调度、不终止线程、不擅自禁用已有事件。[x]编码元数据拒绝、过期事件与恢复警告保护,Scert 和官方客户端双路径互操作及真实事件执行。[x]最终双版本完整专项、常规全量测试、静态检查及收尾验证通过,见支持矩阵第十三节;之前的失败证据保留,不与最终通过结果混用。[~]视图自有备份与恢复;上方触发器、例程子任务的剩余项为当时记录,事件本批进展以此节为准。[ ]完整表清单权限、其他 SQL 模式、跨库及跨服务器定义者、独立发行验证、其余数据库/平台与生产门禁;P0-05 总状态不提升。
P0-05 视图与完整清单子任务进度
[x]完整库 SELECT 与逐视图 SHOW VIEW 检查;隐藏对象、角色、部分撤销、授权遮蔽失败时保留原备份。[x]原始定义、创建编码、定义者和检查选项保留;依赖解析与拓扑排序,不以占位表规避视图依赖。[x]原始官方文件的连续最终视图块受限排序;计划预检、会话上下文检查及原文件哈希不变验证。[x]复杂/宽/失效视图、三条互操作路径和失败保护的 Windows 双版本实库证据,详见支持矩阵第十四节。[~]下一步验证 SQLite 并发与锁;上方触发器、例程和事件段中的缺口是各批历史状态,当前进展以本节为准。[ ]MySQL 其他编码/SQL 模式、并发 DDL/授权变化、独立发行验证、剩余三库/双平台及生产门禁;P0-05 保持[~]。
P0-05 SQLite 并发与锁子任务进度
[x]逐连接初始化;短截止时间执行/查询/预处理/事务启动等待预算及配置恢复;不重试业务 SQL。[x]多连接、多连接池和三子进程实际锁竞争;隔离、快照、事务回滚、连接重建与文件库关闭重开。[x]活动 WAL 快照不包含未提交数据,提交后快照包含对应数据;专项、重复、竞态及相关后端回归通过。[~]无截止时间取消的原生等待边界、完整业务升级恢复和服务重启;已记录的 5 秒行为不是已修复证明。[ ]独立发行命令、Linux 实机、其余数据库复测及生产门禁;P0-05 不提升为完成。
P0-05 SQLite 异常退出及业务恢复子任务
[x]源码6db5d7b修复残留 WAL 覆盖恢复主文件;恢复前快照包含已经提交的 WAL,恢复失败仍保留原业务数据。[x]正式命令处理器核对当前全部业务表和模式、迁移历史、审计序列、用户密码/分组、任务和部署关联、加密凭据及真实证书私钥,重复恢复通过。[x]SQLite 专项 55 个叶子用例、恢复专项 13 个用例连续 5 次竞态检测通过;完整后端、静态及模块检查通过,证据见支持矩阵第十六节。[ ]带业务数据的历史版本升级、独立发行命令、真实服务重启和 Linux 原生运行;异常进程退出不等于断电/磁盘故障,凭据可解密不等于外部 DNS/SSH/邮件服务已验收。
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;补关联完整性、迁移回填和删除约束测试。
- 实机验收步骤:迁移含历史资源的专用库,核对项目归属不丢失;从一次申请追踪订单、版本、任务、部署、通知和审计;删除仍被引用的资源必须拒绝。
- 验收证据:项目根实体、域名/服务器四字段、默认项目历史回填及事务绑定已有代码与 SQLite/MySQL 隔离证据;关系模型见《项目资源关联模型.md》。第 12 号迁移补强替换保护,完整任务/审计等关联、PostgreSQL 实库及生产闭环仍待补,当前结果见支持矩阵第十九节。
- 复审结果:未完成,禁止用相似名称替代缺失关联。
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、任务、审计的跨项目读写、删除与回滚;撤权后现有会话及排队任务必须重新判权。
- 验收证据:域名/服务器归属和 HTTP 拒绝伪造归属已覆盖;六类角色、实时判权及成功审计同事务已有仓储证据。本批成员分页、授予/撤销 API、实际应用接线和失败审计已通过专项及双版本 MySQL,完整后端、三轮成员专项竞态和构建通过,跳过与验证范围见支持矩阵第二十三节。成员页面、项目入口、全部资源跨项目读写和排队任务撤权重判仍待补,不能称项目隔离已完成。
- 复审结果:未完成。
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;补备份损坏、版本不兼容、错密钥、部分恢复及审计测试。
- 实机验收步骤:每数据库创建完整资源并备份,向空环境恢复、解密并实际部署证书;损坏备份必须在修改前拒绝;恢复中断后可回到原状态;核对恢复前备份、下载授权、定时记录和审计。远端测试不做无关整机备份,产品备份能力不能因此省略。
- 验收证据:部分数据库恢复历史证据存在;全部资源、自动备份和失败回滚闭环待补。
- 复审结果:未完成。
本轮开发进度(2026-09-29 17:50)
按总体验收口径,当前仍为 P0-03 完成待复审;本轮只推进 P0-07 的项目审计读取权限,未将局部开发或自动化测试标记为复审通过。
- 审计日志路由改为登录后的项目资源路由,不再依赖全局管理员路由作为唯一入口。
- 新增项目审计读取仓储,在 SQL 查询中按实时账户状态、全局角色、项目成员角色和日志范围过滤。
- 普通项目成员仅可读取其拥有 `audit.read 能力项目的项目审计;不能读取其他项目或系统范围日志。
- 超级管理员和全局管理员保留系统审计读取能力;账户停用后不再返回日志。
- 新增撤权立即生效、跨项目隔离和全局管理员范围回归测试。
- 已通过 go test ./... 和 go vet ./...;这只证明本地自动化验证通过,不代表生产部署验收通过。
- [~] 任务读取、任务取消/重试、证书签发/导入/部署、DNS、SSH 及其他资源写入的完整项目权限链仍待开发。
- [!] PostgreSQL/MySQL 矩阵、浏览器、Linux/Windows 服务、远端 SSH、HTTPS/DNS/ACME 和生产验收仍未执行。
下一步:继续补齐任务与证书/部署权限链,完成开发阶段后再统一运行三库、浏览器和远端生产流程测试。
本轮规格落地状态(2026-09-29 19:30)
总体验收仍保持 P0-03 完成待复审。
[x]DNS 配置资源具有明确项目归属,旧配置无归属时归入默认项目。[x]DNS 凭据读取和使用前按实时账户状态、项目成员关系及dns.credential.use判权。[x]DNS 项目归属变更按dns.manage判权,拒绝路径不读取凭据、不执行外部 DNS 操作、不保存新配置。[x]DNS 管理页面展示项目归属,账号标识继续脱敏。[~]续期、证书导入/部署、任务执行/重试和其他资源写入权限规格仍在开发落地。[!]PostgreSQL/MySQL、浏览器、远端 SSH、HTTPS/DNS/ACME 和生产验收证据尚未形成。
???????2026-09-29 18:38???????? P0-03 ??????P0-07 ?????????????????????????????????????? HTTP ?????????????SSH?DNS??????????????????????????????????
本轮开发进度(2026-09-29 18:57)
按总体验收口径,当前仍为 P0-03 完成待复审;本轮仅推进 P0-07 项目资源权限开发,局部测试通过不代表生产部署验收通过。
[x]服务器新增、修改、删除接口已纳入认证后的项目资源路由。[x]服务器写入前按真实项目成员关系校验server.manage,更新和删除先读取当前账户可见的服务器。[x]已补充无项目权限新增、修改、删除服务器的拒绝回归测试,确认拒绝后原资源不变。[x]本批代码已提交并推送:服务器权限隔离提交747e897,拒绝回归测试提交fbb516e。[x]go test ./...、go vet ./...及 HTTP API 专项测试通过。[~]SSH 私钥归属与服务器引用隔离、DNS 账户项目使用权限、续期及其他任务写入权限仍在开发。[!]PostgreSQL/MySQL 矩阵、浏览器验收、Linux/Windows 生产部署、远端 SSH、HTTPS/DNS/ACME 和odacm.cn实机验收尚未执行。
下一步继续开发剩余资源权限链,完成开发阶段后再统一执行三数据库、浏览器、远端部署和生产流程测试。
本轮开发进度(2026-09-29 19:06)
总体验收位置继续保持 P0-03 完成待复审。本轮完成 P0-07 的 SSH 私钥项目归属开发,但尚未进行三数据库、浏览器、远端服务器或生产流程验收。
[x]SSH 私钥加密载荷和安全元数据记录项目归属;历史未记录归属的私钥兼容归入默认项目。[x]服务器新增、修改时按服务器项目校验 SSH 私钥引用,跨项目引用被拒绝。[x]自动生成的服务器 SSH 密钥写入服务器所属项目。[x]SSH 私钥列表、新增、删除接口按项目归属和server.manage权限过滤与校验。[x]已补充 SSH 私钥服务项目隔离专项测试;本批提交56c88c3已提交并推送。[~]DNS 账户项目归属与使用权限、续期任务及其他任务/资源写入权限仍在开发。[!]PostgreSQL/MySQL 矩阵、浏览器验收、Linux/Windows 生产部署、远端 SSH、HTTPS/DNS/ACME 和odacm.cn实机验收尚未执行。
下一步继续开发 DNS 账户及任务相关权限链,开发阶段结束后统一执行生产构建、部署和验收流程。
本轮开发进度(2026-09-29 19:50)
按用户要求,总体验收位置继续保持 P0-03 完成待复审;本轮完成“域名与服务器多对多部署关联”开发,不将本地测试结果视为生产验收通过。
[x]保留并验证域名绑定多台服务器的事务模型,单次替换只影响当前域名,不覆盖其他域名的服务器关联。[x]新增服务器反向读取关联域名的项目资源接口:GET /api/v1/servers/:id/domains。[x]服务器关联域名读取按实时账户状态、项目成员权限、服务器项目和域名项目同时过滤,未知或越权资源统一拒绝。[x]管理页面在服务器卡片展示当前托管的全部域名,解绑一个域名时不影响同服务器的其他域名。[x]新增多对多反向关联回归测试;后端go test ./...、go vet ./...、前端 230 项测试和前端生产构建通过。[~]P0-07 其他任务执行、证书部署、续期、审计完整覆盖及跨数据库矩阵仍待继续开发或复审。[!]浏览器清缓存验收、远端密码 SSH、HTTPS/DNS/ACME、Linux/Windows 服务和生产部署验收仍未执行。
下一步:继续完成开发阶段剩余权限与部署闭环,之后统一按生产流程编译、部署和测试;验收位置仍以 P0-03 为准。
最新进度追加(2026 年 9 月 29 日)
- P0-07 任务执行链新增失败证书任务重试能力,接口权限为 task.retry,仅允许 certificate_issue 且状态为 failed 或 cancelled 的任务。
- 重试必须重新执行项目资源与关联凭据授权检查,并在同一事务内更新任务、创建新尝试和防止并发重复操作;审计动作使用 certificate_issue_retry。
- 当前本地自动化验证已通过:后端全量测试、静态检查、前端 230 项测试和生产构建。
- [~] P0-07 的其他资源权限、三数据库、浏览器、SSH、远端部署和生产验收仍未闭环。
- [!] 总体验收仍为 P0-03 完成,待复审;本节开发证据不替代实机生产验收证据。
本轮开发进度(2026-09-29)
总体验收位置继续保持 P0-03:完成,待复审,本轮仅推进 P0-07 的同步证书申请权限闭环,不将局部自动化测试结果视为生产部署验收通过。
[x]无任务仓储的同步证书申请路径已补齐项目资源可见性、certificate.manage、deployment.execute与 DNS 凭据使用权限校验。[x]已补充项目证书权限不足、DNS 凭据使用权限不足及权限拒绝后不调用证书工作流的回归测试。[x]当前候选后端go test ./...、go vet ./...通过;该结果仅代表本地自动化验证,不代表三数据库、浏览器、远端服务器或生产部署验收通过。[~]P0-07 其他资源写入权限、三数据库矩阵、浏览器清缓存验收、密码 SSH、远端部署及 Linux/Windows 生产服务仍需继续开发或复审。[!]总体验收不得升级,P0-03 仍为“完成,待复审”。
下一步继续执行前端回归与生产构建,再提交并推送本轮测试代码;完成开发阶段后,统一进行三数据库、浏览器、远端服务器和生产部署测试。
本轮开发进度(2026-09-29)
总体验收位置继续保持 P0-03:完成,待复审;本轮继续推进 P0-07 项目任务权限闭环,不将局部测试结果视为生产部署验收通过。
- 项目任务取消入口新增
task.cancel实时项目权限校验,权限拒绝时不会调用取消写入,也不会改变任务状态。 - 已补充缺少任务取消权限的 HTTP 回归测试;任务取消、工作流任务保护及成功证书任务回归测试通过。
- 已确认域名与服务器多对多部署关联仍按既有事务模型工作:一个域名可绑定多个服务器,一个服务器可关联多个域名,解绑单个域名不影响其他关联。
- [~] P0-07 仍需继续补齐续期、证书导入/部署、其他任务写入权限及三数据库矩阵。
- [!] 浏览器清缓存验收、密码 SSH、远端部署、HTTPS/DNS/ACME、Linux/Windows 服务和生产部署验收尚未执行。
下一步继续完成开发阶段剩余权限闭环,再统一执行生产构建、部署和验收;总体验收位置仍以 P0-03 为准。
本轮开发进度(2026-09-29,续)
总体验收位置继续保持 P0-03:完成,待复审;本轮完成手动批量续期入口的全局权限收紧,不将局部权限测试结果视为生产部署验收通过。
- 手动批量续期接口
/api/v1/renewal/run改为仅超级管理员可执行,普通管理员请求在进入续期工作流前返回 403。 - 已补充普通管理员不得触发续期工作流的 HTTP 回归测试;续期成功、错误脱敏及权限拒绝专项测试通过。
- 已复核服务器新增、修改、删除及域名—服务器多对多绑定:均按项目归属和写权限判定,绑定事务继续校验同项目、路径冲突和失败审计。
- 已复核单域名证书导入、部署、恢复、同步申请以及任务申请、重试、取消的项目权限链路;任务取消和手动批量续期的本轮缺口已补齐。
- [~] P0-07 仍需继续完成三数据库生产矩阵、浏览器清缓存验收、密码 SSH、远端部署、HTTPS/DNS/ACME、Linux/Windows 服务及最终生产门禁。
- [!] 总体验收不得升级,P0-03 仍为“完成,待复审”。
下一步完成开发阶段剩余非权限项后,再统一执行生产构建、部署和实机验收。
本轮开发进度(2026-09-29 22:34)
- 全局系统设置修改已收紧为超级管理员权限;普通管理员保留读取系统设置、DNS 服务商目录和 DNS 账户归属信息的能力。
- DNS 在线测试、阿里云 DNS 检查和全局批量续期已收紧为超级管理员操作;前端只读、按钮隐藏和后端拒绝路径均已补充。
- 本批次已补充对应 HTTP 与前端回归测试,代码和进度记录已提交并推送
ba6bd80。 - [~] 后续仍需完成回归执行、正式构建、三数据库、浏览器清缓存、密码 SSH、远端部署及生产矩阵验证。
- [!] 本规格的总体验收位置仍为 P0-03 完成待复审;专项权限开发不能替代生产部署和最终复审。
统一回归结果(2026-09-29 22:44)
- 前端 231 项测试、后端全量测试、
go vet ./...和前端生产构建均通过。 - 本轮权限测试角色前提已同步为超级管理员,提交
853a7cd、93a190f;不改变普通管理员只读和后端拒绝规则。 - [~] 三数据库、浏览器清缓存、密码 SSH、远端部署及生产矩阵仍待执行。
- [!] 本规格的总体验收位置仍为 P0-03 完成待复审。
本轮开发进度(2026-09-29 23:21)
[x]P0-08 已完成敏感凭据禁用/启用、元数据状态返回、主密钥缺失保护和主密钥轮换;轮换失败时保留旧主密钥恢复路径。[x]已补充凭据生命周期、主密钥缺失和主密钥轮换后的重新打开读取测试;go test ./...与go vet ./...通过。[x]本轮代码已提交并推送:bac67b6。[~]P0-09 继续核对 SSH 主机指纹、密码登录后公钥部署及私钥回连验证;人工更新指纹审计和实机密码 SSH 验证仍待完成。[~]P0-10、P0-12 仍待继续开发审查和统一回归。[!]总体验收位置保持 P0-03 完成,待复审;本轮本地自动化测试通过不构成生产部署验收通过。
本轮开发进度(2026-09-29 23:58)
- P0-10 补齐任务状态模型:支持
partial_success、retry_wait、cancelling状态,任务更新、取消、重试等待、活动任务互斥和服务重启恢复均纳入统一状态范围。 - 批量部署一成一败时,HTTP 任务、任务尝试和审计记录统一保存为
partial_success,新增对应回归测试。 - 已通过
go test ./internal/repository ./internal/app ./internal/httpapi、go vet ./...和git diff --check。 - 本轮代码已提交本地提交
c9a82e6;已按要求尝试推送,但远程返回Authentication failed,因此不把远程推送结果作为验收依据。 - [~] P0-09、P0-10、P0-12 仍需继续开发审查;三数据库、浏览器清缓存、密码 SSH、远端部署和生产矩阵尚未统一执行。
- [!] 总体验收位置继续保持 P0-03 完成,待复审;本轮代码开发和自动化测试不构成生产部署验收通过。
进度追加(2026-09-29,本批结果)
本节追加本批实际结果;此前摘要中同一子项的“进行中/待验证”为历史状态,以本节为准。总体验收位置仍为 P0-03 完成,待复审,没有新增复审通过项。
本批需求确认:补齐活动任务对域名删除的保护,更新清单证据;继续先开发、后统一测试,不启动生产验收。
- 已完成,等待复审:P0-10 域名删除保护覆盖申请、校验、部署、导入、恢复任务的
queued、running、retry_wait、cancelling状态。 - 已完成,等待复审:新增 SQLite 仓储回归,验证部署任务处于
retry_wait、cancelling时返回域名忙错误;改为partial_success后不再阻止合法删除。保留原有运行中申请任务保护和审计失败回滚用例。 - 已完成,等待复审:本批仓储专项测试通过;接续的
go test ./...全量测试会话已确认退出码为 0;提交前差异检查通过。以上仅为本地自动化证据,不代表三数据库实库或生产验收。 - 已完成,等待复审:代码已提交并推送
96c8f44(完善活动任务删除保护),本批未进行远端部署、运行数据库清理或浏览器测试。 - 未开始:补全五种证书任务类型与四种活动状态的组合覆盖,以及拒绝删除时关联和审计不变的专项断言;本批新增用例未覆盖全部组合。
- 未开始:补全
failed、cancelled终态的专项删除用例;不得将本批success、partial_success路径外推为所有终态均已验证。 - [~] 进行中:P0-10 其余长任务取消、重试、幂等、崩溃恢复及 P0-12 备份恢复仍需继续整改,不标记整项完成。
- 未开始:开发收尾后,统一执行当前候选的生产构建、SQLite/PostgreSQL/MySQL 矩阵、浏览器清缓存、密码 SSH、远端部署和平台服务验收。
下一步优先补齐上述开发缺口和测试用例,再推进剩余任务链;原始整改范围不缩减,总体验收不得因本批测试通过而升级。
本轮开发进度(2026-09-29)
总体验收位置继续保持 P0-03:完成,待复审;本轮仅推进 P0-10 域名删除保护矩阵,不将专项测试结果视为整项复审或生产部署验收通过。
- 已完成,等待复审:域名删除保护已覆盖
certificate_issue、certificate_validate、certificate_deploy、certificate_import、certificate_restore五类证书任务,以及queued、running、retry_wait、cancelling四种活动状态。 - 已完成,等待复审:每个活动状态拒绝删除时,回归测试确认域名仍存在、当前域名与服务器关联仍存在;共享同一服务器的其他域名和服务器本身不受影响。
- 已完成,等待复审:补充
success、failed、cancelled、partial_success终态场景,确认活动任务清空后可以合法删除目标域名,并保留其他域名及服务器关联。 - 已完成,等待复审:
go test ./internal/repository与后端全量go test ./...均通过,git diff --check通过。 - 已完成,等待复审:本轮代码已提交并推送
14d5e53(补齐活动任务删除保护矩阵测试)。 - [~] 进行中:P0-10 其他长任务取消、重试、幂等、崩溃恢复及任务尝试记录仍需继续审查,不能因本批通过而关闭整项。
- 未开始:P0-12 备份恢复、三数据库生产矩阵、浏览器清缓存、密码 SSH、远端部署、HTTPS/DNS/ACME、Linux/Windows 服务和最终生产门禁。
- [!] 总体验收不得升级:仍处于 P0-03 完成,待复审,当前没有新增
[✓]复审通过项。
下一步继续审查 P0-10 剩余任务执行链和 P0-12 备份恢复;开发阶段完成后,再统一执行生产构建、部署和实机验收。
本轮开发进度(2026-09-29)
总体验收位置继续保持 P0-03:完成,待复审;本轮只推进 P0-10 任务幂等并发保护,不代表整项复审或生产部署验收通过。
- 已完成,等待复审:新增
task_idempotency数据表及 SQLite、PostgreSQL、MySQL 三套 0015 迁移;历史非空幂等键在迁移时建立登记。 - 已完成,等待复审:任务创建在同一事务登记幂等键,数据库层拒绝同一域名同一幂等键的并发重复任务,避免仅依赖单进程互斥锁。
- 已完成,等待复审:接口在并发创建冲突后回读已存在任务并返回重放结果,不再把可恢复的幂等冲突直接返回为普通创建失败。
- 已完成,等待复审:新增并发重复幂等键回归测试;
internal/repository、internal/database、internal/httpapi及后端全量go test ./...均通过,git diff --check通过。 - [~] 进行中:P0-10 其余长任务取消、重试、任务尝试记录、崩溃恢复,以及证书校验、导入、部署、恢复入口是否全部纳入任务中心仍需继续审查。
- 未开始:P0-12 备份恢复、三数据库实库矩阵、浏览器清缓存、密码 SSH、远端部署、HTTPS/DNS/ACME、Linux/Windows 服务和最终生产门禁。
- [!] 总体验收不得升级:当前仍为 P0-03 完成,待复审,本轮没有新增
[✓]复审通过项。
本轮下一步继续审查任务中心剩余入口和备份恢复;开发阶段收尾后,再统一执行生产构建、实机部署和验收。
本轮开发补充(2026-09-29)
总体验收位置继续保持 P0-03:完成,待复审;本轮完成服务重启恢复审计链开发,不代表 P0-10 整项复审或生产部署验收通过。
- 已完成,等待复审:服务重启恢复会为每个
queued、running、retry_wait、cancelling任务写入task_recovery失败审计,并保留任务、项目和创建人归属。 - 已完成,等待复审:恢复事务新增审计写入失败回滚保护;审计数量与实际恢复任务数量不一致时,任务、尝试和审计全部回滚。
- 已完成,等待复审:新增重复恢复与审计失败回滚测试;专项恢复测试、后端全量
go test ./...和git diff --check均通过。 - [~] 进行中:P0-10 的 DNS 验证、批量部署结果、其他入口任务事务链、重试幂等及跨数据库实机验证仍需继续审查。
- 未开始:P0-12 备份恢复、浏览器清缓存、密码 SSH、远端部署和最终生产门禁仍未执行。
- [!] 总体验收不得升级:当前仍处于 P0-03 完成,待复审,本轮没有新增
[✓]复审通过项。
最新开发证据(2026-09-29,P0-10)
- 任务取消入口现在统一接受
queued、running、retry_wait、cancelling活动状态。 - 任务取消事务会同步结束对应的活动任务尝试;管理证书和自动续期任务不受通用取消入口控制。
- 已通过后端全量测试、静态检查和差异检查。
- [~] P0-10 其他任务链与三数据库实机复核仍在进行。
- P0-12 备份恢复及最终生产门禁尚未开始。
- [!] 总体验收不得升级,仍为 P0-03:完成,待复审。
最新执行摘要(2026-09-29 继续开发)
总体验收位置继续保持 P0-03 完成,待复审。本轮完成开发阶段的证书任务并发保护、DNS 验证阶段进度记录,以及域名与服务器双向多对多部署关联的回归核验;不代表生产部署验收通过。
- 已完成,等待复审:同一域名的同类活动证书任务增加仓储层并发保护,重复创建返回冲突,避免并发任务绕过入口检查。
- 已完成,等待复审:DNS 凭据权限验证、逐域名验证和证书申请阶段会同步任务阶段及中文进度信息。
- 已完成,等待复审:一个域名可关联多个部署服务器,一个服务器可关联多个域名;关联读取、解除单个关联、项目权限和共享路径冲突已有回归覆盖。
- 已完成,等待复审:后端多对多专项测试通过;前端 231 项测试全部通过,生产构建通过。
- [~] 进行中:P0-10 其余长任务取消、重试、崩溃恢复、实机数据库矩阵和统一复审仍需继续执行。
- 未开始:P0-12 备份恢复、浏览器清缓存、密码 SSH、远端部署和最终生产门禁仍未执行。
- [!] 总体验收不得升级:当前仍为 P0-03 完成,待复审,本轮没有新增
[✓]复审通过项。
最新验证摘要(2026-09-29)
总体验收位置继续保持 P0-03:完成,待复审。本轮仅确认多对多部署开发结果和本地回归结果,不代表生产部署验收通过。
- 已完成,等待复审:一个域名可部署到多个服务器,一个服务器可部署多个域名;关联读取、解除单个关联、权限和路径冲突回归通过。
- 已完成,等待复审:后端全量测试通过;前端 231 项测试通过;生产构建通过;提交前差异检查通过。
- [~] 进行中:P0-10 剩余任务链、三数据库实机矩阵、浏览器清缓存、密码 SSH、远端部署和生产门禁仍需继续执行。
- [!] 总体验收不得升级:仍为 P0-03 完成,待复审,本轮没有新增
[✓]复审通过项。
最新实机部署与验收进度(2026-09-29)
总体验收位置继续保持 P0-03:完成,待复审;本轮完成 Linux amd64 候选包部署、HTTPS 健康检查、服务重启恢复和浏览器缓存清理后的页面复核,不将这些结果提前标记为最终生产验收通过。
- 已完成,等待复审:基于提交
4229f44构建的 Linux amd64 发布包已通过 SHA-256 校验并部署到授权测试服务器;发布清单确认source_dirty=false。 - 已完成,等待复审:
https://odacm.cn/healthz和https://odacm.cn/readyz均返回成功;Nginx 配置检查通过并处于运行状态。 - 已完成,等待复审:HTTPS 证书主题为
odacm.cn,SAN 包含odacm.cn,签发方为 Let's Encrypt;未关闭 TLS 校验。 - 已完成,等待复审:
Scert服务重启后保持active (running),重启后健康检查和就绪检查仍成功;重启后的日志未复现证书目录权限错误、路径所有者不可信或 HTTPS 证书读取失败。 - 已完成,等待复审:清理浏览器缓存后重新登录,首页显示当前用户、邮箱、服务状态、版本、SQLite 数据库和反向代理 HTTPS 等基本信息;中文显示正常。
- 已完成,等待复审:超级管理员访问
/api/v1/ssh-keys返回200和空列表,不再出现“无权管理此项目的服务器”;私钥内容未通过接口返回。 - 已完成,等待复审:域名配置页面的部署服务器选择支持多选,并明确显示一个域名可关联多个服务器、一个服务器可关联多个域名;5、10、15、30 条分页选项可见。
- [~] 进行中:远端数据库当前为空,现场只有一台可用测试服务器,尚未用虚构数据替代第二台真实服务器;双向多对多的生产数据关联、实际证书推送和回滚仍需具备真实目标后复核。
- [~] 进行中:三数据库生产矩阵、真实 DNS/ACME 申请、真实多服务器证书推送、最终生产门禁仍需继续执行。
- [!] 总体验收不得升级:当前仍为 P0-03 完成,待复审,本轮没有新增
[✓]复审通过项。
最新进度追加(2026-09-29,P0-10 任务取消入口)
- 任务取消入口统一接受
queued、running、retry_wait、cancelling活动状态。 - 任务取消事务同步结束对应活动任务尝试;管理证书和自动续期任务不受通用取消入口控制。
- 已通过后端全量测试、静态检查和差异检查。
- [~] P0-10 其他任务链与三数据库实机复核仍在进行。
- P0-12 备份恢复及最终生产门禁尚未开始。
- [!] 总体验收不得升级,仍为 P0-03:完成,待复审。
最新进度追加(2026-09-29,P0-10 通用取消入口状态一致性)
总体验收继续保持 P0-03:完成,待复审;本轮补齐通用仓储取消入口,不代表 P0-10 统一复审或生产部署验收通过。
- 已完成,等待复审:通用
CancelTask取消任务时,任务尝试同步覆盖queued、running、retry_wait、cancelling四种活动状态。 - 已完成,等待复审:新增四种活动状态的仓储回归测试,确认任务及任务尝试均进入
cancelled并记录完成时间。 - 已完成,等待复审:
go test ./...、go vet ./...、git diff --check均通过。 - [~] 进行中:P0-10 其他任务入口、跨数据库实机矩阵、崩溃恢复、重试幂等和统一复审仍需继续。
- 未开始:P0-12 备份恢复及最终生产门禁仍未完成。
- [!] 总体验收不得升级,当前仍为 P0-03:完成,待复审,没有新增
[✓]复审通过项。
最新规格执行记录(2026-09-29,P0-10 证书任务入口回归)
本轮继续按“先开发、后统一测试”的约束执行,总体验收保持 P0-03:完成,待复审。
- 证书导入、恢复、校验入口必须写入统一任务、任务尝试和审计记录,本轮已完成本地回归覆盖。
- 任务执行配置必须在落库前校验,空域名、空任务类型或阶段、零次执行及空执行器均拒绝。
- 本轮专项测试、静态检查通过,代码提交
9741721已推送。 - [~] P0-10 其他任务链、跨数据库实机行为、崩溃恢复、重试幂等和统一复审继续进行。
- [!] 本地测试结果不得替代真实 DNS/ACME、多服务器推送、密码 SSH 和最终生产门禁。
本轮开发进度(2026-09-29,P0-10 空部署目标防护)
总体验收位置继续保持 P0-03:完成,待复审;本轮仅继续完成 P0-10 批量部署边界防护,不代表 P0-10 统一复审通过或生产部署验收通过。
- 已完成,等待复审:批量部署目标为空时显式返回失败,不再把 0 台服务器错判为部署成功。
- 已完成,等待复审:证书工作流在域名未关联任何部署服务器时提前失败,不调用远程部署。
- 已完成:新增应用层与部署层回归测试;
go test ./...、go vet ./...和git diff --check均通过。 - [~] 进行中:P0-10 其余任务入口、失败回滚结果持久化、跨数据库矩阵、崩溃恢复与统一复审仍需继续。
- 未开始:P0-12 备份恢复、浏览器清缓存、密码 SSH、远端部署、真实 DNS/ACME 和最终生产门禁仍未完成。
- [!] 总体验收不得升级:当前仍为 P0-03:完成,待复审,本轮没有新增
[✓]复审通过项。
本轮规格执行记录(2026-09-30,P0-10 证书任务启动取消竞态)
本轮仅完成启动取消竞态的开发和本地回归,总体验收仍为 P0-03:完成,待复审。
- 任务执行入口先注册取消上下文和回调,启动阶段取消时不调用证书申请执行器。
- 取消任务保持
cancelled终态,接口返回 HTTP 409,新增 HTTP 回归测试覆盖启动审计阶段竞态。 go test ./...、go vet ./...、定向任务测试和git diff --check均通过,代码提交415d504。- [~] P0-10 其他任务入口、DNS 验证、跨数据库实机行为、崩溃恢复、重试幂等和统一复审继续进行。
- [!] 本地结果不得替代真实 DNS/ACME、多服务器推送、密码 SSH 和最终生产门禁;总体验收不得离开 P0-03:完成,待复审。
本轮规格执行记录(2026-09-30,P0-10 DNS 验证取消与临时凭据回收)
本轮仅补齐 DNS 在线验证请求取消边界,总体验收继续保持 P0-03:完成,待复审。
- DNS 验证必须在开始服务商调用前检查上下文取消,取消请求不得触发权限测试或临时凭据写入。
- 临时凭据写入后若上下文取消,必须回收凭据并阻止一次性验证令牌进入后续初始化流程。
- 已新增对应回归测试,并通过后端全量测试、静态检查和差异检查。
- [~] DNS 清理失败、初始化回滚、令牌消费及 P0-10 其他任务链继续开发和统一复审。
- [!] 本地自动化结果不得替代真实 DNS/ACME、密码 SSH、远端多服务器部署和最终生产门禁;不得新增
[✓]。
本轮规格执行记录(2026-09-30,P0-10 DNS 临时凭据清理失败可重试)
本轮仅补齐 DNS 临时凭据清理失败后的可重试要求,总体验收继续保持 P0-03:完成,待复审。
- 单个临时凭据删除失败时必须保留验证会话,允许后续重试,不能静默丢失清理入口。
- 批量删除失败时必须逐项恢复失败会话,成功删除的临时凭据不得恢复;正式配置依赖的凭据不得删除。
- 已新增对应回归测试,并通过后端全量测试、静态检查和差异检查。
- [~] DNS 过期清理、初始化回滚、令牌消费及 P0-10 其他任务链继续开发和统一复审。
- [!] 本地自动化结果不得替代真实 DNS/ACME、密码 SSH、远端多服务器部署和最终生产门禁;不得新增
[✓]。
本轮规格执行记录(2026-09-30,P0-10 DNS 过期凭据清理重试)
本轮仅补齐 DNS 验证令牌过期后的临时凭据清理重试要求,总体验收继续保持 P0-03:完成,待复审。
- 过期会话临时凭据清理失败时必须恢复原会话,后续操作必须能够再次触发清理。
- 补偿清理成功后必须保持令牌过期,不得因恢复清理状态而重新授权验证结果。
- 已新增对应回归测试,并通过后端全量测试、静态检查和差异检查。
- [~] DNS 初始化回滚、令牌消费及 P0-10 其他任务链继续开发和统一复审。
- [!] 本地自动化结果不得替代真实 DNS/ACME、密码 SSH、远端多服务器部署和最终生产门禁;不得新增
[✓]。
本轮规格执行记录(2026-09-30,P0-10 DNS 清理状态与容量边界)
本轮仅完成 DNS 临时凭据清理状态和容量边界的开发与本地回归,总体验收继续保持 P0-03:完成,待复审。
- 删除失败的临时凭据必须保留待清理引用,并在后续管理操作中重试,不能形成不可追踪残留。
- 请求取消后若临时凭据回收失败,后续操作必须能够完成补偿清理。
- 清理失败的过期会话必须计入验证容量,避免恢复会话时突破容量上限。
- 已新增对应回归测试,并通过全量测试、竞态测试、静态检查和差异检查。
- [~] DNS 初始化回滚、令牌消费及 P0-10 其他任务链、实机矩阵和统一复审继续进行。
- [!] 本地结果不得替代真实 DNS/ACME、密码 SSH、远端多服务器部署和最终生产门禁;不得新增
[✓]。
本轮开发进度(2026-09-30,P0-10 数据库验证取消与清理状态收敛)
总体验收位置继续保持 P0-03:完成,待复审。本轮完成数据库验证生命周期的取消边界、凭据清理串行化和单个令牌回收状态收敛;仅代表本地开发验证,不代表生产部署验收通过。
- 已完成,等待复审:数据库验证在凭据保存前、配置解析前、连接验证后和令牌生成前检查请求取消,取消请求不再发布验证令牌。
- 已完成,等待复审:临时凭据删除操作串行化,避免并发清理同一引用产生状态竞态。
- 已完成,等待复审:单个数据库令牌回收失败时恢复可重试会话,成功时移除过期状态;过期清理失败仍保持令牌不可用并保留内部重试状态。
- 已完成:
go test ./internal/bootstrap、go test -race ./internal/bootstrap通过;本轮提交6711c9b、14833be已推送。 - [~] 进行中:P0-10 初始化回滚、任务链、重试幂等、三数据库实机矩阵和统一复审仍需继续。
- 未开始:P0-12、真实生产数据库清理与初始化、密码 SSH、远端多服务器部署、真实 HTTPS/DNS/ACME、Linux/Windows 服务和最终生产门禁。
- [!] 不得标记
[✓];总体验收仍为 P0-03:完成,待复审。
本轮更新(2026-09-30,expiredCleaning 状态保护)
总体验收位置仍为 P0-03:完成,待复审。本轮完成数据库过期清理的执行状态和批量接管边界,仅作为本地开发和回归验证证据,不等同于生产验收通过。
- 过期会话开始清理时记录
expiredCleaning,避免单项清理与批量清理重复删除。 - 批量清理可接管失败后尚未执行的过期清理,但不接管正在执行的清理。
- 新增批量接管失败过期清理的回归测试,专项测试和竞态测试均通过。
- [~] P0-10 其他任务、跨数据库实机矩阵和统一复审继续进行中。
- 真实生产数据库、密码 SSH、远端部署、HTTPS/DNS、ACME、Linux/Windows 服务和最终生产门禁仍未完成。
- [!] 不新增
[✓],不以本地结果代替生产验收。