Scert/doc/增强能力任务规格.md

144 lines
14 KiB
Markdown
Raw Permalink 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.

# 增强能力任务规格
P3 的 10 项是原始清单的后续增强,不阻断第一阶段交付,但未从整体目标移除。当前全部未开始;以下为可执行规格,不宣称已有对应模块。命令和实机约定见《整改任务规格与验收约定.md》。设计建议不替代实施前的需求确认。
## P3-01 多租户支持
- 任务编号:P3-01;任务名称:多租户支持;优先级:P3。
- 当前状态:`[ ] 未开始`。
- 六阶段:需求确认 `[~]`;代码实现 `[ ]`;自动化测试 `[ ]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:项目和用户分组不自动构成租户边界,租户管理、迁移与限额策略待明确。
- 涉及文件:`backend/internal/auth/`、`backend/internal/database/`、`backend/internal/repository/`、`backend/internal/httpapi/`;拟新增租户服务、迁移与 Web 页面。
- 依赖任务:P0-06、P0-07、P0-08、P1-12。
- 整改内容:定义租户与项目/成员关系、租户管理员边界、资源归属和停用语义;租户间证书、凭据、任务、备份、审计隔离,明确历史数据归属,不能只做前端筛选。
- 验证命令:V06、V07、V08、V03;新增租户隔离、迁移、停用和后台任务继承身份测试后才可视为覆盖。
- 实机验收步骤:两个租户创建同名资源并执行签发部署;通过猜测 ID、导出、下载、恢复和任务查询尝试跨租户操作,全部拒绝;停用一租户不影响另一租户。
- 验收证据:尚无本项实现或实机证据。
- 复审结果:未开始,租户生命周期细节先确认再实现。
## P3-02 API Token 管理
- 任务编号:P3-02;任务名称:API Token 管理;优先级:P3。
- 当前状态:`[ ] 未开始`。
- 六阶段:需求确认 `[~]`;代码实现 `[ ]`;自动化测试 `[ ]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:现有会话或初始化 Token 不能当作用户可管理的业务 API Token。
- 涉及文件:`backend/internal/auth/`、`backend/internal/httpapi/`、`backend/internal/database/`;拟新增 API Token 管理、迁移及用户管理子页面。
- 依赖任务:P0-07、P0-08、P1-09、P1-12。
- 整改内容:明确创建、仅首次展示、作用域、项目范围、到期、撤销、轮换、最近使用和审计;只存不可逆校验材料,访问权限不能超过所属用户。
- 验证命令:V07、V08、V06、V03;补过期/撤销、跨项目、越权 scope、日志泄露和用户禁用联动测试。
- 实机验收步骤:从 Web 创建最小权限 Token,仅调用允许接口;撤销、过期和用户撤权后立即拒绝;页面再次打开无法读回明文;审计能定位调用者,不记录 Token 内容。
- 验收证据:尚无本项专用业务 Token 验收证据。
- 复审结果:未开始,不能复用初始化 Token 混充完成。
## P3-03 Webhook 事件订阅
- 任务编号:P3-03;任务名称:Webhook 事件订阅;优先级:P3。
- 当前状态:`[ ] 未开始`。
- 六阶段:需求确认 `[~]`;代码实现 `[ ]`;自动化测试 `[ ]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:P1 通知渠道发送不等于具备业务事件订阅、签名和投递管理。
- 涉及文件:`backend/internal/notification/`、`backend/internal/httpapi/`、`backend/internal/repository/`;拟新增订阅模型、事件投递服务及 Web 管理页面。
- 依赖任务:P0-07、P0-08、P0-10、P1-08、P1-09。
- 整改内容:确认事件目录,支持按项目/事件订阅、签名验证、密钥轮换、唯一事件 ID、有限重试、投递记录及停用;限制目标地址和重定向,防 SSRF 与跨项目数据泄漏。
- 验证命令:V11、V07、V08、V03;新增签名、重放、重试上限、目的地址校验和订阅隔离测试。
- 实机验收步骤:在获授权接收端订阅签发/部署事件,核验实际签名和事件 ID;故意返回失败观察重试;接收方去重;停用及轮换后旧签名失效,不向未授权地址投递。
- 验收证据:尚无本项订阅和投递实机记录。
- 复审结果:未开始。
## P3-04 更多 DNS Provider 插件
- 任务编号:P3-04;任务名称:更多 DNS Provider 插件;优先级:P3。
- 当前状态:`[ ] 未开始`。
- 六阶段:需求确认 `[~]`;代码实现 `[ ]`;自动化测试 `[ ]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:新增 Provider 名单、凭据字段与真实账号授权待确认,不能用同一 Provider 模拟多插件完成。
- 涉及文件:`backend/internal/dnsprovider/`、`backend/internal/dnsverification/`、`backend/internal/certificate/`、`frontend/src/views/DNSAccounts/`;拟新增选定 Provider 适配器与正式测试。
- 依赖任务:P0-08、P1-03。
- 整改内容:定义稳定 Provider 能力接口与发现方式;新增明确选定的 Provider,支持账户验证、权限错误、限流、精确 TXT 清理及凭据轮换;公开支持矩阵和不支持能力。
- 验证命令:V10、V07、V03;每个适配器分别验证协议夹具、故障、并发和契约,真实用例不以跳过计通过。
- 实机验收步骤:每个新增 Provider 用专用授权区域做 TXT 添加读取清理和 DNS-01 签发;检查失败清理不误删既有记录;验证限权账号和轮换后的行为。
- 验收证据:尚无新增 Provider 的确认名单和逐个实机证据。
- 复审结果:未开始,不缩减成只扩展下拉框。
## P3-05 证书标签和批量操作
- 任务编号:P3-05;任务名称:证书标签和批量操作;优先级:P3。
- 当前状态:`[ ] 未开始`。
- 六阶段:需求确认 `[~]`;代码实现 `[ ]`;自动化测试 `[ ]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:原清单仅列增强名称,需明确标签归属、批量动作和跨分页选择语义。
- 涉及文件:`backend/internal/domain/`、`backend/internal/repository/`、`backend/internal/httpapi/`;拟新增标签迁移及 Certificates 页面批量交互。
- 依赖任务:P0-07、P0-10、P1-01、P2-04。
- 整改内容:项目内标签创建、编辑、解绑、筛选;支持确认后的批量续期/部署/删除等动作,逐资源授权与结果、任务化、幂等及部分成功;标签数据为 P1-05 策略提供输入。
- 验证命令:V06、V07、V10、V09、V03;补标签唯一性、跨项目混选、重复 ID、并发删除和分页选中测试。
- 实机验收步骤:跨分页选择多个专用证书,按标签批量操作;混入失效、无权限或被引用资源应逐项准确报告;刷新可追踪任务,重复提交不重复申请,成功/失败数量可核对。
- 验收证据:尚无标签模型与完整批量流程验收。
- 复审结果:未开始,具体批量动作须在实现前确定。
## P3-06 多实例高可用
- 任务编号:P3-06;任务名称:多实例高可用;优先级:P3。
- 当前状态:`[ ] 未开始`。
- 六阶段:需求确认 `[~]`;代码实现 `[ ]`;自动化测试 `[ ]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:单机服务重启和本地文件锁不能证明多实例可用性、共享密钥或状态一致。
- 涉及文件:`backend/internal/servicehost/`、`backend/internal/repository/`、`backend/internal/secretstore/`、`backend/internal/httpapi/`、`deploy/`;拟新增高可用部署与故障恢复说明。
- 依赖任务:P0-05、P0-08、P0-10、P2-04。
- 整改内容:确定支持的共享数据库/存储、会话与主密钥分发、调度协调、健康检查、流量切换和滚动升级;防脑裂及重复签发,不宣称 SQLite 文件共享就是高可用。
- 验证命令:V02、V06、V08、V12;新增多实例竞争、租约失效、网络分区及恢复的一致性正式测试。
- 实机验收步骤:至少两独立实例提供同一测试项目服务,停止一个实例或断开其网络;验证会话、任务、证书及凭据仍可用,恢复节点不能重复执行;滚动升级与回滚后版本兼容。
- 验收证据:尚无多实例拓扑及故障切换证据。
- 复审结果:未开始,架构及可用性目标须先确认。
## P3-07 分布式任务队列
- 任务编号:P3-07;任务名称:分布式任务队列;优先级:P3。
- 当前状态:`[ ] 未开始`。
- 六阶段:需求确认 `[~]`;代码实现 `[ ]`;自动化测试 `[ ]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:本地任务记录不等于可跨工作者领取、确认、重试和恢复的分布式队列。
- 涉及文件:`backend/internal/repository/task_repository.go`、`backend/internal/database/`、`backend/internal/certificate/`、`backend/internal/deployment/`;拟新增队列适配、工作者管理和配置。
- 依赖任务:P0-10、P2-04;与 P3-06 共享协调设计,不要求先做出高可用再定义队列语义。
- 整改内容:明确存储/消息组件选型,持久化领取、租约、确认、超时重试、死信、取消和任务尝试;重复投递不能重复产生远端副作用,保留项目权限与审计上下文。
- 验证命令:V06、V07、V09、V10;新增多工作者、重复消息、乱序确认、崩溃重领、死信与幂等测试。
- 实机验收步骤:至少两个工作者领取任务,处理途中终止一个;任务重领后结果一致且不重复签发/部署;队列中断恢复后无任务丢失,重试耗尽可追溯,取消能正确传播。
- 验收证据:尚无分布式队列和恢复实机记录。
- 复审结果:未开始,不能用单进程 goroutine 队列替代。
## P3-08 Prometheus 指标接口
- 任务编号:P3-08;任务名称:Prometheus 指标接口;优先级:P3。
- 当前状态:`[ ] 未开始`。
- 六阶段:需求确认 `[~]`;代码实现 `[ ]`;自动化测试 `[ ]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:日志计数和仪表盘不等于 Prometheus 可采集接口,指标访问边界未定。
- 涉及文件:`backend/internal/httpapi/`、`backend/internal/logging/`、`backend/internal/config/`;拟新增指标注册与采集端点、配置及测试。
- 依赖任务:P2-05、P2-10。
- 整改内容:导出定义清晰的计数器、耗时分布和健康指标;控制标签基数,不用域名/用户/密钥等敏感或无界字段做标签;明确监听、鉴权和访问限制,不能默认公网暴露。
- 验证命令:V07、V11、V02;新增指标格式、并发更新、重复注册、访问控制和标签泄密测试。
- 实机验收步骤:真实 Prometheus 从授权网络采集当前候选,触发成功/失败任务核对指标增量与耗时;重启后序列语义合理;未授权公网请求被拒绝,无秘密和高基数标签。
- 验收证据:尚无指标端点和真实采集证据。
- 复审结果:未开始。
## P3-09 OpenAPI 自动生成
- 任务编号:P3-09;任务名称:OpenAPI 自动生成;优先级:P3。
- 当前状态:`[ ] 未开始`。
- 六阶段:需求确认 `[~]`;代码实现 `[ ]`;自动化测试 `[ ]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:手写接口文档不能证明自动生成、路由覆盖和契约同步。
- 涉及文件:《后端接口说明文档.md》、`backend/internal/httpapi/`、`build/`;拟新增生成入口与 `doc/openapi/` 代码文档。
- 依赖任务:P1-12、P2-06。
- 整改内容:选定唯一契约源和固定生成器版本,覆盖真实路由、请求/响应、错误、权限、安全方案、分页和任务;示例使用占位值;生成结果可重复,变更检查能发现缺失/过期路由。
- 验证命令:V07、V02、V03;生成器选定后登记正式生成/校验命令,不提前捏造可运行命令;用实际路由与生成文档双向比对。
- 实机验收步骤:从干净克隆生成契约,校验前后无意外漂移;在运行候选上按文档调用典型成功/失败路径;确认登录要求、任务 ID 和权限错误与实际一致,不暴露内部恢复 IPC。
- 验收证据:尚无自动生成器及完整契约校验记录。
- 复审结果:未开始。
## P3-10 移动端适配
- 任务编号:P3-10;任务名称:移动端适配;优先级:P3。
- 当前状态:`[ ] 未开始`。
- 六阶段:需求确认 `[~]`;代码实现 `[ ]`;自动化测试 `[ ]`;隔离环境测试 `[ ]`;生产部署测试 `[ ]`;最终验收 `[ ]`。
- 问题说明:桌面响应式样式不等于手机/平板完整操作体验和真实设备验收。
- 涉及文件:`frontend/src/views/` 各页面 Vue/JS/CSS 与公共组件;拟新增移动布局及必要正式测试。
- 依赖任务:P2-01、P2-02、P2-06。
- 整改内容:定义手机/平板视口、导航、表格/卡片转换、分页、触控目标、软键盘及危险确认;保留桌面布局与完整功能,不通过隐藏必需字段实现一页显示;悬浮说明提供可触控访问方式。
- 验证命令:V03;使用用户指定 Mobile Preview - Phone & Tablet Simulator 插件检查移动端,不启动桌面浏览器 MCP 代替。
- 实机验收步骤:插件覆盖手机/平板横竖屏及软键盘,再用真实设备从正常公网 TLS 登录;完成列表筛选、证书详情、任务、服务器和危险确认;长域名/邮箱不裁切,操作无横向溢出和遮挡。
- 验收证据:尚无移动插件及真实设备验收记录。
- 复审结果:未开始,不以桌面缩窗截图代替。