361 lines
48 KiB
Markdown
361 lines
48 KiB
Markdown
# Orbit 持续开发与回归计划
|
||
|
||
更新:2026-09-24。此计划对应持续开发目标,由开发过程同步维护。数据库已按用户要求采用无外键设计,迁移 000008 移除历史外键,关联一致性由服务端事务保证。
|
||
|
||
## 1. 最终交付目标
|
||
|
||
交付可由多个业务项目接入的 Go + MySQL + HTTP/WebSocket 平台:Pulse 管理任务与调度,Weave 管理持久化流程,业务处理器运行在独立 Worker。研发通过独立 Go SDK 定义和发布流程。
|
||
|
||
完成标准包括服务端、SDK、迁移及运行工具、Markdown 接口手册、可运行场景示例,以及实际正确性/故障/性能验证记录。完成设计、单机运行或展示一条正常路径,均不等同于完成首版交付。
|
||
|
||
仓库内的开发回归统一入口为 `make release-local-check`,它只负责可重复的本地门禁;真实 MySQL 全量回归使用 `make integration`,目标拓扑生产验收仍按交付清单单独留证。
|
||
|
||
## 1.1 当前交付快照(2026-09-21)
|
||
|
||
当前不是“还剩一半代码”的状态,而是核心平台已经进入生产验收阶段。为避免把代码完成度和上线完成度混在一起,按三层记录:
|
||
|
||
| 层级 | 当前结论 | 依据 |
|
||
| --- | --- | --- |
|
||
| 核心功能 | P0–P5 已完成阶段验收 | 真实 MySQL、服务端/SDK、Worker/流程进程故障、恢复与可运行示例回归 |
|
||
| 发布准备 | P6–P7 大部分完成 | 观测、凭据操作、备份恢复、数据库短暂不可用、GTID 手工提升、容器发布物、协议门禁和独立 SDK 门禁 |
|
||
| 正式生产 | 尚未放行 | 目标拓扑容量、自动故障切换、RPO/RTO、跨标签兼容、生产密钥/告警/值守、保留归档策略仍需目标环境证据 |
|
||
|
||
剩余工作按以下顺序推进,任何一项没有对应输出、工单或演练记录,都保持“未验收”,不把本地通过写成生产保证:
|
||
|
||
1. **冻结目标环境**:确定 MySQL 拓扑、故障域、实例规格、连接/任务/流程峰值、数据保留周期和 RPO/RTO。
|
||
2. **完成目标环境演练**:执行容量、慢消费者/重连风暴、数据库自动切换、备份介质恢复和滚动升级,记录 p50/p95/p99、资源曲线和失败分母。
|
||
3. **关闭运维门槛**:完成生产密钥托管、最小权限、告警通知、值班响应、回滚/前向修复和审计留存演练。
|
||
4. **关闭发布门槛**:使用正式标签跑旧 SDK/新服务端、新 SDK/旧服务端的完整协议矩阵,冻结镜像摘要、迁移账本、版本身份和发布审批。
|
||
5. **评审清理策略**:明确幂等、事件、审计、交付和流程历史的保留/归档格式,再决定是否实现任何写入型清理;当前只读盘点不会删除数据。
|
||
|
||
上述第 1–4 项完成并留证后,才可以给出正式生产容量和高可用结论;第 5 项在策略未批准前不进入自动删除实现。
|
||
|
||
### 首个远端接入版本
|
||
|
||
已按用户要求推送仓库 `main` 及 `v0.1.0` 接入版本,独立 SDK 标签为 `sdk/go/v0.1.0`,供业务项目直接 `go get`。两个标签固定提交 `0e8b2ef2975df6b55f2240dd14eda83adf30ea94`;仓库外空模块缓存下载、固定版本、无 `replace` 编译、HTTP smoke 和校验和验证已通过,见[远端发布报告](reports/phase-7-sdk-remote-release.md)。本机验证沿用系统网络代理及公开 Go 模块代理,保持 sumdb 校验。该交付不关闭上方目标环境及完整跨版本生产验收项。
|
||
|
||
### 控制台第一版
|
||
|
||
已将 [Orbit Console](console.md) 编译进服务端,入口为 `/console/`。第一版读取健康、版本、任务、计划、流程和结果订阅接口,使用数据库控制台账号和 HttpOnly 会话,响应式总览和有界自动刷新;不直接访问数据库,也不绕过现有凭据与动作范围。首个管理员可以随 `orbit-admin bootstrap` 同事务创建,独立管理员身份和跨命名空间聚合仍不在控制台内提供。
|
||
|
||
控制台任务详情已接入 Pulse 的任务快照、执行尝试、操作审计、取消和安全重试接口。页面操作沿用 `expected_revision`、`Idempotency-Key`、原因、证据和服务端权限校验;`NEEDS_REVIEW` 仍要求通过核查 API/SDK 提交最终结论。流程实例详情已接入当前视图、步骤状态和有界事件时间线,并支持带 `control_revision` 的暂停、恢复和取消;对 `NEEDS_REVIEW` 实例进一步提供六类带证据的恢复入口(任务核查、步骤结论、继续、步骤重试、PENDING 接续、等待重建),页面只组装协议请求,当前修订、激活身份、权限、审计和状态门控由服务端负责。结果订阅详情已接入配置、积压窗口和交付历史,并支持启停及 EXPIRED 交付追加预算重试。权限不足时保留明确提示,不把页面操作视为绕过服务端事务边界的快捷入口。
|
||
|
||
定时计划详情已接入当前版本、规则、下一次触发和 occurrence 历史;暂停/恢复沿用 `schedules:manage`、`expected_revision`、原因和幂等键。计划发布、跨命名空间管理身份和更高风险的交付控制仍按独立权限模型推进。
|
||
|
||
控制台六个核心模块已拆为独立 hash 视图,导航状态和页面标题随视图同步,刷新或直接打开对应 hash 后仍保持正确模块。数据请求继续由统一会话和当前命名空间范围驱动。
|
||
|
||
已完成一次真实链路回归:标准 `scripts/test-mysql.sh` 在一次性 MySQL 和真实 Orbit 进程中跑通任务、Worker、结果订阅、Weave 流程、进程恢复及独立业务示例;控制台前五个入口、健康检查和详情所依赖的读取 API 已用真实结果核对;第六个保留策略入口另有真实 MySQL、首次部署 HTTP 与浏览器操作回归,证据见 [Console 真实链路回归](reports/phase-7-console-e2e.md)。这关闭了本地闭环验证项,生产拓扑和发布门槛仍保持未验收。
|
||
|
||
新增 `make console-e2e` 作为首次部署闭环门禁:在一次性 MySQL 和 Docker Orbit 中从空库迁移、初始化控制台管理员,完成登录、受保护页面、WS Worker 成功执行、明确失败重试、定时任务、控制台任务读取和登出后的 401 校验,证据见[首次部署与控制台任务闭环](reports/phase-8-console-e2e.md)。该门禁证明功能链路可重复,不替代目标生产拓扑、容量和 RPO/RTO 验收。
|
||
|
||
新增 `deploy/docker-compose.yml` 作为单节点可部署基线:MySQL 健康检查通过后依次执行迁移和 `orbit-admin verify`,核验成功才启动 Orbit;`make compose-check` 提供不泄露密码的静态配置门禁,首次管理员初始化和域名/同源访问说明见[Compose 部署基线](22-compose-deployment.md),实际正常启动与失败阻断证据见[Compose 部署基线验证](reports/phase-9-compose-deployment.md)。该基线不替代生产数据库高可用、正式 Secret、容量、备份和 RPO/RTO 验收。
|
||
|
||
新增 `deploy/nginx/orbit.conf.example` 作为可选 HTTPS/WSS 入口模板:Compose 默认只将业务端口绑定到 `127.0.0.1`,Nginx 负责 TLS 终止、WebSocket 升级、健康探针代理和控制台登录来源限速;配置语法及端口边界证据见[HTTPS/WSS 入口基线验证](reports/phase-10-ingress.md)。Nginx 是部署入口,不会成为 Orbit 服务端的业务依赖,真实域名、正式证书、入口故障和公网重连仍需目标环境验收。
|
||
|
||
新增 `deploy/docker-compose.ha.yml` 作为两节点隔离验收覆盖:节点共享持久化 MySQL 状态但使用独立 HTTP 端口,base 服务中的单节点 Orbit 通过 profile 关闭;两个 `ready` 节点均通过后才能接入入口,滚动停止和重新拉起按[Compose 部署基线](22-compose-deployment.md)执行。该覆盖不替代跨故障域节点、数据库自动切换、负载均衡器和目标容量验收。
|
||
|
||
两节点覆盖已完成一次真实 Docker 回归:空库迁移和权限核验后两个节点均就绪,停止 A 后 B 保持就绪,A 重新拉起并重新核验后恢复;证据见[两节点 Compose 覆盖验证](reports/phase-11-two-node-compose.md)。该结果只关闭单机双进程启动/滚动动作,不关闭生产 HA。
|
||
|
||
## 2. 持续推进方式
|
||
|
||
每个阶段按以下顺序推进:
|
||
|
||
1. 根据已确认功能细化状态、协议、数据及完成标准。
|
||
2. 完成一条可执行的业务无关调用链,同步 SDK 和文档。
|
||
3. 运行单元、真实数据库、协议及端到端回归,记录失败与修复。
|
||
4. 验证该阶段异常路径、兼容性、授权边界与可恢复性。
|
||
5. 更新本计划、接口实现状态、示例和验证报告,再进入下一阶段。
|
||
|
||
常规技术选择和缺陷修复自主进行。只有确实缺少外部信息或涉及未获授权的操作时才请求用户介入。不能为了让目标显示完成而隐藏未实现项或跳过故障验收。
|
||
|
||
## 3. 阶段清单
|
||
|
||
| 阶段 | 开发内容 | 回归与完成标准 | 当前状态 |
|
||
| --- | --- | --- | --- |
|
||
| P0 基础与数据模型 | Go workspace、独立 SDK module、公共/Pulse/Weave 模型、MySQL 迁移、配置、健康检查 | 编译/竞态/静态检查;真实 MySQL 建表、隔离、唯一性、预算、不可变版本、迁移失败防护;SDK 健康调用 | 已完成并通过阶段回归(见 P0 报告) |
|
||
| P1 任务受理闭环 | 应用凭据与作用域权限、队列、幂等提交、查询、待执行取消、受理事件;SDK 客户端 | API/SDK 创建查询闭环;重复键与内容冲突、响应未确认重报、跨命名空间拒绝、参数边界 | 已完成并通过阶段回归(见 P1 报告;真实断路/提交 ACK 丢失注入留后续故障阶段) |
|
||
| P2 Worker 执行闭环 | WSS 接入、能力/容量、领取与开始、租约、续租、结果确认、排空与恢复;Worker SDK | 真 Worker 执行;失联/重连/重复确认/旧尝试拒绝;业务效果未知转核查;节点故障接管 | 已完成并通过阶段回归:服务端、自动 SDK、历史查询、完整 Schema 与真实进程强杀恢复;测试拓扑和剩余生产故障矩阵见 P2 验收报告 |
|
||
| P3 Pulse 完整能力 | 安全重试、延时、Cron/固定间隔、漏跑策略、计划版本、运行中取消、并发许可、配额/背压、可靠结果订阅、批量受理、独立任务核查/人工重试、查询筛选与事务Outbox接入 | 多实例领取/触发竞争、重试上限、取消竞争、队列隔离、积压恢复、事件重复交付 | 已完成平台功能阶段验收:[原范围逐项核对](reports/phase-3.md)、[本轮完整回归](reports/phase-3-delay-recovery.md)。补齐相对延迟、改参数关联示例和四种重试全停恢复场景;20个可运行示例全部通过。全平台生产门槛及SDK首版交付剩余项仍按P6–P7推进 |
|
||
| P4 Weave 主流程 | SDK 定义构建与发布校验、实例、顺序/分支/结构化并行汇合、信号/定时等待、版本绑定 | 重启接续、早到/重复信号、并行竞争、内部事件重放、发布版本兼容;端到端通用流程 | 已完成平台功能阶段验收:[原功能及W01–W17逐项核对](reports/phase-4-5.md)、[版本/暂停/全停回归](reports/phase-4-5-races.md)、[提交故障边界](reports/phase-6-fault-boundaries.md)。研发发布、固定版本、顺序/分支/有限并行、信号/时间等待、公共API/SDK及可运行示例均已交付;生产拓扑与发布兼容继续P6/P7 |
|
||
| P5 Weave 恢复与查询 | 有界查询、暂停继续、取消、人工核查恢复、控制门控与审计 | 轮次与尝试独立预算;暂停/开始/回执/超时竞争;恢复保留预算;未知结果不盲目重复 | 已完成平台功能阶段验收:[原功能核对](reports/phase-4-5.md)。有界查询、独立预算、暂停继续/取消、六类恢复、历史/筛选/事件/来源与SDK场景均已交付;真实竞争、COMMIT断线及进程全停保留原身份、截止和预算。运维、容量与首版发布继续P6/P7 |
|
||
| P6 生产验证与运维 | 完整监控、凭据轮换、备份恢复、滚动升级、运行手册、可复现负载和故障工具 | 对照生产验收清单执行,报告环境/指标/遗留项;容量、RPO/RTO 按真实拓扑验证 | 进行中;已补[精确故障边界](reports/phase-6-fault-boundaries.md)、[进程观测](reports/phase-6-observability.md)、数据库短暂不可用、备份恢复、GTID 手工提升和定时积压样本;继续业务积压/阶段延迟、凭据轮换及其余生产门槛 |
|
||
| P7 首版交付核对 | SDK 兼容与发布准备、完整 API 手册、场景示例、全量回归及交付清单 | 新接入者按文档跑通全部示例;所有首版能力可追溯到实现与测试;报告实际生产边界 | 进行中;已补[通用文件转换示例](reports/phase-7-file-conversion.md)、[SDK独立发布门禁](reports/phase-7-sdk-release.md)、[当前协议兼容矩阵](reports/phase-7-compatibility.md)、[历史任务 API 双向演练](reports/phase-7-historical-compatibility.md)、[当前回归状态](reports/phase-7-regression-status.md)、[四项闭环验收](reports/phase-7-acceptance-20260921.md)、[首版交付核对清单](release-checklist.md)、[发布物身份清单](api/operations.md#发布物身份清单)和[容器发布说明](21-container-deployment.md),镜像已完成 linux/amd64 构建验证,节点版本身份可由 `/version` 核对;`verify --manifest` 已可在数据库核验前绑定候选二进制身份;仍需带标签的完整跨版本矩阵和目标拓扑验收 |
|
||
|
||
SDK、文档与示例随 P1–P5 同步开发,P7 是全量核对,不是最后才开始补文档。
|
||
|
||
P4/P5定时等待与后续查询轮次的实现及回归记录见[时钟报告](reports/phase-4-clock.md)。外部信号与最终查询竞争见[信号报告](reports/phase-4-signals.md)。公共实例、控制、信号、六类恢复和操作审计已接入HTTP与独立SDK,见[公共接入报告](reports/phase-5-public-api.md)。流程任务来源及[历史查询](api/workflow-history.md)已接入,[实例筛选分页](api/workflow-queries.md)已接入,[状态事件时间线](api/workflow-events.md)已接入,独立轮询/恢复示例已接入,功能验收与生产边界见[P4/P5核对](reports/phase-4-5.md)。
|
||
|
||
### P4/P5 已交付功能核对
|
||
|
||
1. 已实现FAIL_AFTER_SETTLED与显式取消的内部分支结清,见[控制报告](reports/phase-5-controls.md):持久取消意图、复用Pulse取消、收集已发出查询/任务结果、等待全部已激活工作结清后才进入失败或取消终态。效果未知仍保留核查。
|
||
2. 已实现实例暂停/继续/取消内部操作,以control_revision、操作幂等身份、明确原因及审计保护控制决定;暂停不延长原截止,继续不覆盖核查或取消状态。
|
||
3. 已实现内部执行核查、步骤结论、解除核查及TASK新激活和旧激活隔离,见[核查报告](reports/phase-5-recovery.md)。POLL跨激活恢复已实现(见[查询恢复](17-workflow-poll-recovery.md));[核查后PENDING接续和独立等待重建](18-workflow-wait-recovery.md)也已接入内部服务,保留原预算、轮次、结果和证据。
|
||
4. 实例/当前步骤/信号/控制/六类恢复及流程操作审计HTTP和独立SDK已接入,步骤查询返回实际激活代次;并行执行与信号回执场景已有可运行示例。激活/轮次/信号历史及信号资源审计已接入;实例筛选分页已接入;状态事件时间线已接入;独立轮询及恢复示例已接入,已补[W06/W09/W14/W15专项回归](reports/phase-4-5-races.md);[Pulse任务流程来源](api/task-source.md#5-流程固定来源)已交付。逐项验证原键恢复、权限、版本冲突、竞争与进程全停。
|
||
5. 转入P6/P7的生产故障、容量、运维、发布与全部文档核对。内部存储阶段通过不会提前勾选公共接口或生产验收。
|
||
|
||
公共接入按以下调用链推进;本批已接入启动/当前详情、控制、信号、六类恢复和流程操作审计,并提供独立SDK及基础示例。任务流程来源和有界历史查询也已接入。实例分页和独立查询示例已接入;状态事件时间线已接入;P4/P5功能阶段已按[逐项核对](reports/phase-4-5.md)验收;剩余生产门槛继续P6/P7:
|
||
|
||
| 调用链 | 已交付内容 | 验收重点 |
|
||
| --- | --- | --- |
|
||
| 启动与读取 | 显式固定版本启动、当前实例、步骤及当前激活代次;已补有界历史读取及实例筛选分页 | 原键丢回执恢复、当前权限、读取快照一致性、未激活步骤语义 |
|
||
| 控制与信号 | 暂停/继续/取消、固定步骤和代次的信号提交及原受理回执 | control_revision与通用revision区分、迟到/旧代次、暂停期间结果收集 |
|
||
| 核查与追踪 | 六类恢复、激活/轮次/等待/信号历史读取及信号管理审计已接入;状态事件时间线已接入;Pulse任务流程来源已交付 | 当前实例/步骤/任务版本、证据和显式声明、旧历史保留、有界响应和权限隔离 |
|
||
| 通用接入场景 | 并行汇合、外部回执、有限轮询、暂停核查恢复的可运行SDK示例 | 真实Worker执行、完整进程退出后接续、未知效果保留、全链路回归 |
|
||
|
||
接口只使用已经落地的内部事务规则;SDK保持独立module,不能引用服务端模型或数据库实现。生产故障及容量结论仍由P6专门验收。
|
||
|
||
### P6 首批实施顺序
|
||
|
||
1. 已补[首批可复现故障工具](reports/phase-6-fault-boundaries.md):A04“派发已提交但消息尚未送达”、W01/W13事务提交结果不明,以及W16最终回执/旧PENDING结果重放/下一轮竞争。迁移器同时提供当前版本无外键新装基线;每个切点必须有实际数据库或进程证据,不能用响应错误推断事务是否已提交,也不能用普通SIGNAL竞争替代最终查询场景。数据库事务封装另对提交前 MySQL 1205/1213 做最多两次短退避重试,Commit 回执不明保持原身份核对语义,真实锁环回归见[P7当前回归状态](reports/phase-7-regression-status.md)。
|
||
2. 已实现[基础运行观测](api/observability.md)及[有界业务状态与事件采样](reports/phase-6-business-observability.md):HTTP/WS、数据库连接池、后台批次、固定任务/交付/流程/Inbox状态计数、最近事件类别、终态耗时样本、固定事件阶段耗时、最早年龄、截断/新鲜度指标、提交前 MySQL 事务重试/耗尽计数和可离线验证的告警规则;独立采集监听默认关闭,固定指标目录拒绝动态标签;发布前只读结构核验由[`orbit-admin verify`](api/operations.md)提供,运维人员也可用 `orbit-admin observe snapshot` 获取同一有界单节点快照;后台循环间隔、批量上限、Worker/Event连接上限、Hub领取协程和有界内存排队均支持有界环境配置,并在启动日志和固定指标中记录。跨节点重连风暴、慢消费者、真实锁等待/死锁、磁盘增长已经加入定向回归入口;目标拓扑的全局持久吞吐、锁等待/死锁告警阈值和生产采集/通知验证仍需环境验收。
|
||
3. 已补齐受保护管理环境中的固定凭据操作文件、轮换、撤销、提交不明故障切点、幂等回执和脱敏管理审计;轮换保留授权绑定并要求新令牌重新建立会话,旧 Worker 会话被排空且立即过期,撤销允许在停用范围内执行且不改写历史记录。已用一次性 MySQL 定向验证旧令牌失效、新令牌重绑和零外键;仍需多节点安全重绑演练、凭据最小权限配置核对和生产密钥托管/审计演练。
|
||
4. 已补[数据库保留策略、预览和只读归档导出](api/retention.md)以及[`orbit-admin retention inventory`](api/retention.md)只读盘点。策略按命名空间存入 MySQL,控制台单管理员可修改,版本、原因和前后快照进入审计;默认关闭归档,源数据不会因配置变化自动删除。固定候选目录保护有效幂等身份、未确认交付、未知效果、未终结流程和未处理 Inbox;导出包带冻结策略版本和 SHA-256;控制台支持连续批次、累计数量、摘要校验和本批重下载,真实 MySQL 回归核对同时间戳分页、保护对象、版本及权限边界。已补[持久文件归档作业](api/retention-jobs.md):自动有限分批、原目录续跑、原子发布、容量限制、摘要链、离线核验及真实强杀恢复;尚未接入周期调度、控制台作业列表或跨节点自动接管。仍需在目标环境评审最终归档介质、备份恢复、删除执行器和保留周期,再执行兼容升级和容量负载。生产HA及RPO/RTO继续按实际拓扑验证,不缩减为本机多进程检查。
|
||
5. 已补[`orbit-load`](api/load.md)有界受理负载工具及24次/1000次隔离样本,见[受理报告](reports/phase-6-load.md)。新增独立[`orbit-exec-load`](api/execution-load.md),通过真实Worker、任务结果和尝试历史核对,提供短/混合/中长任务的受理、排队、授权执行及完成耗时分布;具体环境、原始JSON和失败分母见[执行测量报告](reports/phase-6-execution-load.md)。新增[`orbit-workflow-load`](api/workflow-load.md),用本次发布版本的双分支并行流程,逐个核对不同任务、唯一尝试、来源、精确输出与本地调用;24/100实例及24实例截止负例已重新构建回归并绑定源码/二进制哈希,见[流程测量报告](reports/phase-6-workflow-load.md)。新增[`orbit-schedule-load`](api/schedule-load.md),已完成24/128次定时集中触发与24次计划量的截止负例,保存实际分母、唯一任务/尝试、来源与暂停收尾证据,见[定时测量报告](reports/phase-6-schedule-load.md)。Go 1.27.1 模块级门禁、MySQL 存储集成、关键 SDK/Orbit 进程故障组、24个可运行 SDK 示例真实服务串跑和 result-inbox/task-outbox 真实业务集成已复跑通过。已补[长期积压与资源曲线样本](reports/phase-6-backlog.md):32×8 共256个触发点,在1个Worker/容量1和180秒截止下保留173个成功、83个未核验任务,并以独立数据库读取记录等待积压曲线;该单节点样本不替代目标拓扑容量。SDK受控重连风暴及[真实慢消费者背压](reports/phase-6-slow-consumer.md)已补边界回归,积压脚本已加入 CPU/RSS、MySQL 资源、连接池等待、业务快照和事务重试计数采样;已补跨节点重连、慢消费者与有界磁盘增长样本(见 [P1 定向报告](reports/phase-6-stability-p1.md));长期磁盘曲线与目标数据库拓扑容量继续按实际负载验收。
|
||
6. 已补[隔离备份恢复演练](api/backup-restore.md):源库和恢复库均为一次性 MySQL 容器,Go 1.27.1 构建的当前二进制在逻辑备份恢复后核对迁移账本、核心记录数量、固定索引和零外键;证据见[恢复报告](reports/phase-6-backup-restore.md)。该演练不替代生产备份介质、复制切换、跨版本恢复或 RPO/RTO 验收。
|
||
7. 已补[A18 数据库短暂不可用恢复演练](api/db-recovery.md):Go 1.27.1 构建的当前二进制在数据库停止期间返回 readiness 503,同卷恢复后返回 200,并用原权限范围继续受理任务;证据见[数据库恢复报告](reports/phase-6-db-recovery.md)。该演练不替代主从切换、复制确认、跨故障域或 RPO/RTO 验收。
|
||
8. 已补[MySQL GTID 复制与手工提升演练](reports/phase-6-mysql-replication.md):隔离源库/副本通过真实 Orbit HTTP 受理任务,源库停止后副本提升、结构核验和原幂等键重放通过;自动故障切换、复制延迟上限、目标拓扑及 RPO/RTO 仍待验收。
|
||
|
||
### P3 功能范围核对
|
||
|
||
可靠订阅链路完成后,重新对照 [原功能范围](01-functional-spec.md) 和 [事务衔接设计](04-reliability-and-data.md),以下原定首版能力已按核对结果补齐;进一步发现的相对延迟与改参数关联示例也已交付。[P3验收](reports/phase-3.md)逐项保留实现证据及尚待P4–P7完成的原范围,不按已有模块反推全平台完成。
|
||
|
||
| 核对项 | 当前证据与后续交付 |
|
||
| --- | --- |
|
||
| 相对延迟与退避全停恢复 | 已实现delay_ms、数据库计时与原回执恢复,[调用示例](examples/delayed-task.md)和[回归记录](reports/phase-3-delay-recovery.md)同步;四种真实进程场景保持原退避、预算、截止与未知效果 |
|
||
| 改参数形成关联新任务 | [查询示例](examples/task-query.md)以新提交身份和相同business_key创建不同参数任务,逐项读取确认旧输入保留;不自动取消原任务,也不冒充人工retry_of |
|
||
| 批量任务受理 | 已实现[批量API](api/batch-tasks.md)、独立SDK及[补交示例](examples/batch.md);真实MySQL部分失败与HTTP响应丢失用例已通过,同键并发20轮及全量回归已通过,见[报告](reports/phase-3-batch-tasks.md) |
|
||
| 独立任务人工核查与重试 | 已实现[管理API及SDK](api/task-recovery.md)、专门权限、显式安全声明、证据/版本/审计和关联新任务;[完整场景](examples/recovery.md)及[回归报告](reports/phase-3-task-recovery.md)同步交付 |
|
||
| 任务查询筛选 | 已实现[业务键及创建时间查询](api/task-queries.md),v2游标绑定全部筛选、旧游标受限兼容、四种索引路径与[完整场景](examples/task-query.md);[回归报告](reports/phase-3-task-queries.md)同步记录 |
|
||
| 任务详情来源追踪 | 已实现[独立来源接口](api/task-source.md)、SDK和普通/计划/人工恢复场景,返回计划及触发固定版本;同命名空间归属、当前权限和来源缺失拒绝已通过[全量回归](reports/phase-3-task-source.md),流程来源已按[专项报告](reports/phase-5-task-source.md)接入 |
|
||
| 业务到平台的事务Outbox接入 | 已实现[独立业务模块及完整接入](examples/task-outbox.md),覆盖业务变更/待发请求同事务、有限发送恢复、CLI及真实HTTP/MySQL/进程故障,见[报告](reports/phase-3-task-outbox.md);核心SDK保持无ORM/数据库依赖 |
|
||
|
||
A04派发已提交而消息尚未到达Worker的精确进程故障已通过[专项回归](reports/phase-6-fault-boundaries.md)。慢消费者/重连风暴、多节点凭据安全重绑、历史清理、全量监控/容量与MySQL故障切换继续按P6执行;Weave通用执行门控/内部事件接续已实现,不将外部结果订阅当作内部流程引擎。
|
||
|
||
### P3 事务Outbox接入的验收范围
|
||
|
||
以下内容已由独立业务示例实现并进入回归,实际证据见[Outbox报告](reports/phase-3-task-outbox.md)。P3整体范围已另行[逐项核对](reports/phase-3.md),下表保留该子项的验收要求:
|
||
|
||
1. 独立业务示例module,以业务记录和待发请求同一个MySQL事务提交;核心SDK保持无ORM/数据库依赖,业务表示例也禁止外键,字段提供中文注释。
|
||
2. 同时冻结目标命名空间/队列、原幂等键、完整请求及内容摘要。相同业务操作重报不新建待发项,内容不同必须冲突;凭据原文不能进入Outbox或日志。
|
||
3. 提交、领取与确认分别使用短事务;HTTP在事务外执行。多发送进程通过数据库租约及递增代次协调,旧代次不能覆盖新结果;重启后继续读取持久化待发项。
|
||
4. 平台已受理但响应丢失、业务COMMIT回执未知、发送进程退出,都必须用原身份核对。只确认平台受理,不将受理标记当作业务执行成功。
|
||
5. 退避、发送次数及总发送期限均有上限,补发窗口不超过平台幂等保留期;权限、内容冲突、预算耗尽和不能可靠确认的响应需保留可核查记录,不生成新键绕过。
|
||
6. 真实数据库回归覆盖业务回滚、并发重复、发送竞争、过期租约、迟到确认和原始数字精度;真实HTTP丢响应、MySQL COMMIT响应丢失和发送进程SIGKILL后恢复一并验收。
|
||
7. 提供完整初始化、提交、运行/恢复、状态核对及失败处理命令;接入全量回归,记录实际测试证据,并纳入P3范围核对。
|
||
|
||
|
||
## 4. SDK 与示例交付清单
|
||
|
||
| 场景 | 预期调用链 | 所属阶段 |
|
||
| --- | --- | --- |
|
||
| 健康检查 | 创建客户端 → 存活/就绪查询 | P0 |
|
||
| 文件转换任务 | 提交幂等任务 → Worker实际转换 → 查询结果 | 已补通用CSV→JSON Worker示例;大文件对象引用、外部效果核查与生产容量仍按接入方和P6/P7验收 |
|
||
| 相对延迟执行 | 受理时按数据库时间等待 → Worker实际执行 → 历史时间核对 → 原键重报不重计时 | P3,已实现完整示例 |
|
||
| 有限安全重试 | 明确失败 → 持久化退避 → 新尝试 → 查询完整历史 | P3,已实现完整示例 |
|
||
| 定期数据同步 | 发布计划 → 触发任务 → 暂停/恢复 → 查看触发记录 | P3,已实现通用快照示例 |
|
||
| 运行中取消 | 保存取消意图 → 停止处理器 → 确认结果 → 查询并排空 | P3,已实现完整示例 |
|
||
| 队列限速与背压 | 暂停 → 满额拒绝 → 原回执核对 → 释放空间 → 限速执行 | P3,已实现完整示例 |
|
||
| 跨命名空间应用配额 | first 受理 → second 全局满额 → 释放 → 原键成功 → 恢复配置 | P3,已实现完整示例 |
|
||
| 跨队列共享资源 | 两队列同键 → 一个有效许可 → 递增序号 → 资源端拒绝旧写入 | P3,已实现完整示例 |
|
||
| 优先级与应用隔离 | 近同时到期按优先级 → 旧任务等待补偿 → 应用/队列轮转 | P3,已实现完整示例 |
|
||
| 可靠结果订阅 | 冻结结果 → 持久化交付 → Inbox 去重 → 确认/补发 → 耗尽后人工重试 | P3,核心、HTTP/WSS、管理及消费 SDK、独立Inbox示例与真实进程故障回归已完成 |
|
||
| 批量文件作业受理 | 逐项身份 → 部分结果 → 同键核对 → 释放额度 → 只补交失败项 | P3,已实现完整示例 |
|
||
| 业务事务Outbox | 业务记录/请求同事务 → 原键发送 → 受理/业务关联同事务 → 故障恢复 | P3,已实现独立模块与完整示例 |
|
||
| 业务操作定位 | 精确业务键 → 创建区间 → 游标分页 → 查询详情 | P3,已实现完整示例 |
|
||
| 独立任务人工恢复 | 未知结果 → 证据核查 → 保留原任务 → 关联新任务 → 审计查询 | P3,已实现完整示例 |
|
||
| 研发定义发布 | 六类节点描述 → 校验/发布 → 原键确认 → 新版本 → 读取旧版本 | P4定义子项,[已实现示例](examples/workflow-definition.md) |
|
||
| 并行生成结果 | 发布流程 → 并行执行 → 汇合 → 完成 | P4,[已实现示例](examples/workflow.md) |
|
||
| 审核与外部回执 | 提交流程 → 等待信号 → 授权信号注入 → 继续 | P4,[已实现模拟外部回执示例](examples/workflow.md);实际外部系统由接入方对接 |
|
||
| 外部作业轮询 | 提交一次 → 有界查询处理中状态 → 回执或最终结果 → 超限核查 | P5,[已实现轮询与耗尽示例](examples/workflow-poll.md) |
|
||
| 暂停与人工恢复 | 暂停 → 保存结果 → 核查/恢复 → 查看审计 | P5,[已实现断线后的核查与暂停恢复示例](examples/workflow-recovery.md) |
|
||
| 故障恢复 | 节点/连接中断 → 相同身份核对 → 恢复或人工核查 | P2–P6 |
|
||
| 执行历史核对 | 读取尝试 → 查看冲突/迟到证据 → 对照权威结果 | P2,已实现完整示例 |
|
||
|
||
每个正式示例需要:前置配置、完整可运行源码、启动命令、输入、预期输出、失败路径、幂等/清理说明。SDK API 尚未实现时,文档只能标为规划,不能给出伪装可运行的代码。
|
||
|
||
## 5. 回归规则
|
||
|
||
- 每次模型或迁移变化:执行真实 MySQL 集成测试,验证外键为 0、服务端关联归属、唯一约束与升级数据保留。
|
||
- 每次状态或协议变化:更新服务端、SDK、兼容说明与异常场景。
|
||
- 每次执行/恢复变化:增加对应断线、超时、重复、迟到、宕机或竞争用例。
|
||
- 每次发布候选:全量回归、示例回归、迁移检查、故障和负载报告。
|
||
- 验证失败先修复再推进,未执行的项目明确记为未验证。
|
||
|
||
## 6. 性能与高可用验收边界
|
||
|
||
不直接用租户总数作为容量结论。P6 先固定硬件、数据库拓扑、消息大小、任务时长、连接数、峰值与积压模型,再记录受理/派发/推进/恢复的吞吐、延迟和资源消耗。
|
||
|
||
本地多实例与故障注入可以验证恢复逻辑;实际生产复制确认、跨故障域部署、备份介质、RPO/RTO 及峰值余量,需要在对应部署环境复测。所有报告分别标注已验证、未验证和当前限制。
|
||
|
||
## 7. 文档入口
|
||
|
||
- [实例筛选分页与SDK](api/workflow-queries.md)
|
||
- [实例查询示例](examples/workflow-query.md)
|
||
- [实例查询验证记录](reports/phase-5-queries.md)
|
||
|
||
- [流程历史查询与SDK](api/workflow-history.md)
|
||
- [历史查询验证记录](reports/phase-5-history.md)
|
||
- [流程实例公共API](api/workflows.md)
|
||
- [流程恢复API及SDK](api/workflow-recovery.md)
|
||
- [并行作业与回执示例](examples/workflow.md)
|
||
- [公共接入验证记录](reports/phase-5-public-api.md)
|
||
|
||
- [等待恢复](18-workflow-wait-recovery.md)
|
||
- [等待恢复验证记录](reports/phase-5-wait-recovery.md)
|
||
- [有界查询恢复](17-workflow-poll-recovery.md)
|
||
- [POLL恢复验证记录](reports/phase-5-poll-recovery.md)
|
||
- [数据模型](07-data-model.md)
|
||
- [可靠结果订阅核心](09-result-subscription-core.md)
|
||
- [P3 订阅核心回归](reports/phase-3-result-subscription-core.md)
|
||
- [P3 订阅通信与管理 SDK 回归](reports/phase-3-result-subscription-transport.md)
|
||
- [P3 消费 SDK 与节点故障回归](reports/phase-3-event-consumer-sdk.md)
|
||
- [P3 业务 Inbox 与消费者故障回归](reports/phase-3-result-inbox.md)
|
||
- [P3 批量任务受理回归](reports/phase-3-batch-tasks.md)
|
||
- [P3 人工核查与重试回归](reports/phase-3-task-recovery.md)
|
||
- [P3 业务键与时间查询回归](reports/phase-3-task-queries.md)
|
||
- [P3 任务直接来源回归](reports/phase-3-task-source.md)
|
||
- [P3 业务事务Outbox回归](reports/phase-3-task-outbox.md)
|
||
- [P3 相对延迟与全停恢复回归](reports/phase-3-delay-recovery.md)
|
||
- [P3 原功能范围核对](reports/phase-3.md)
|
||
- [接口手册](api/README.md)
|
||
- [SDK 接入](sdk/README.md)
|
||
- [通用场景示例](examples/README.md)
|
||
- [生产验收总清单](05-production-acceptance.md)
|
||
- [P0 验证记录](reports/phase-0.md)
|
||
- [P1 验证记录](reports/phase-1.md)
|
||
- [P2 阶段验收与进程故障记录](reports/phase-2.md)
|
||
- [P3 安全重试阶段记录](reports/phase-3-safe-retry.md)
|
||
- [P3 计划调度阶段记录](reports/phase-3-schedules.md)
|
||
- [P3 取消与无外键回归](reports/phase-3-cancellation.md)
|
||
- [P3 队列资源控制回归](reports/phase-3-queue-resources.md)
|
||
- [P3 应用共享配额回归](reports/phase-3-application-resources.md)
|
||
- [P3 资源键许可回归](reports/phase-3-keyed-concurrency.md)
|
||
- [P3 优先级和公平派发回归](reports/phase-3-priority-fairness.md)
|
||
- [P2 服务端阶段记录](reports/phase-2-server.md)
|
||
- [P2 SDK 协议阶段记录](reports/phase-2-sdk-protocol.md)
|
||
- [P2 自动 Worker 运行器记录](reports/phase-2-worker-runtime.md)
|
||
- [P2 执行历史与大载荷记录](reports/phase-2-execution-history.md)
|
||
- [P1 稳定性与归档定向回归](reports/phase-6-stability-p1.md)
|
||
- [持久文件归档作业回归](reports/phase-6-retention-jobs.md)
|
||
|
||
### 状态事件时间线子项
|
||
|
||
已接入流程/步骤/信号状态事件的公共HTTP、独立SDK、原元数据详情与完整运行例子。000025仅派生索引,历史原字段保持;新增信号转换与状态同事务,批量失败整体回滚。当前阶段验证见[时间线报告](reports/phase-5-events.md),P4/P5原功能范围及独立POLL/人工恢复示例已验收,提交故障及竞争证据见[专项报告](reports/phase-6-fault-boundaries.md),P6/P7仍未完成。
|
||
|
||
### P4/P5 阶段结论与下一批
|
||
|
||
[逐项证据与生产边界](reports/phase-4-5.md)已落表,P4/P5平台功能阶段验收通过。W06/W09/W14/W15真实竞争和全停、A04未送达、W01/W13提交断线及W16旧结果重放竞争均有对应回归,不重复列为待开发。运行指标、凭据轮换、保留策略及只读归档、隔离容量样本和备份恢复均已按上方 P6 留有验证记录;后续重点是归档介质与删除执行器、长期磁盘增长、目标生产拓扑的容量/数据库故障及 RPO/RTO 验收。P7 负责剩余场景和版本发布。完整首版目标保持进行中。
|
||
|
||
### 周期归档与控制台作业(本批)
|
||
|
||
- 已实现:000031 无外键计划/作业模型及中文注释;按类别配置周期与预算;数据库时间合并错过周期;固定版本/卷身份;有界领取、过期接管与迟到隔离;连续文件链和数据库前缀核验;单作业及全卷预算;单管理员页面、分页、失败重试/关闭、幂等与审计。
|
||
- 已验证:真实 MySQL 多节点竞争、落盘后确认丢失、文件损坏、策略变化、预算提高与卷预算、分页;标准测试、容器端到端、页面实际操作与全量集成回归均已通过。
|
||
- 不计入本批完成项:源数据删除、跨作业增量去重、对象存储、任意网络文件系统语义及目标生产跨故障域验收。
|
||
- [接口/部署/恢复示例](api/archive-scheduler.md)与[验证记录](reports/phase-6-archive-scheduler.md)。
|
||
|
||
### 可复用 Outbox 与 HTTP 服务生命周期(本批已完成)
|
||
|
||
- 已交付独立 MySQL 适配模块,支持调用方 EnqueueTx、受理确认钩子和有界 Run;旧 CLI 改用公共包,原有表结构及命令兼容。
|
||
- 已交付完整 HTTP 宿主:业务接口、发送器、Worker、持久 Inbox、健康检查、后台错误传播、有界关闭和数据库最后释放。
|
||
- 已通过:标准竞态测试、vet/build、SDK隔离和文档链接;定向真实MySQL/平台回归与平台全量 integration 均退出0。包括事务回滚/重复/旧快照、确认回滚、提交回执丢失、强杀恢复和SIGTERM收尾。
|
||
- [公共包接口](sdk/outbox-mysql.md)、[完整调用和故障示例](examples/http-service.md)、[验收报告](reports/outbox-http-integration.md)。本批不扩展到其他数据库/ORM、流程命令Outbox或源数据删除。
|
||
|
||
### main、正式版本与统一示例(本批已完成)
|
||
|
||
- 根 examples 统一 27 个可运行场景,各目录 README 说明用途、权限、运行和结果;首页改为完整功能与接入入口。
|
||
- 开发工作区、构建、MySQL/控制台/历史 SDK 回归同步迁移路径;SDK 保持独立模块。
|
||
- 使用 main 与 v0.1.1 / sdk/go/v0.1.1 / adapters/outbox/mysql/v0.1.1 交付,旧标签不变;业务固定版本,无需开发分支或提交号。
|
||
- 标准 7 模块回归、SDK/协议/文档门禁、真实 MySQL 全量、控制台端到端及历史任务 API 双向 smoke 均通过;main 与三组 v0.1.1 标签已推送,仓库外空缓存安装两个模块、构建、HTTP smoke 及校验和验证通过,无 replace;证据见[发布记录](reports/v0.1.1-release.md)。
|
||
|
||
### 本地 Compose 联调环境(2026-09-27)
|
||
|
||
- 已提供 `scripts/orbit-local.py` 和本地 Compose 覆盖文件,部署在独立项目 orbit-test,主机端口 18080;MySQL/归档卷持久保存,迁移账号与运行账号分离。
|
||
- 初始化单管理员、完整测试身份和 host.env/docker.env,私密内容位于被 Git 与 Docker 构建排除的 .local/compose-test;重复启动复用原身份,不重置密码或数据。
|
||
- 提供 orbit-test-services 共享网络与 http://orbit-test:8080 地址,固定可配置子网,解决本机默认 Docker 地址池耗尽的问题。
|
||
- 已验证:真实容器构建/迁移/零外键/权限收紧;浏览器登录协议和未登录跳转;另一容器运行 Worker 完成三项任务及事件 ACK 重报;定时/流程示例;重复部署与 Orbit/MySQL 停止再启动后原任务、身份保持。
|
||
- 接入、账号位置、启动/停止及网络声明见[本地部署手册](../deploy/local/README.md)。这是本地联调环境,不改变平台或 SDK 协议。
|
||
|
||
### 单管理员应用接入(2026-09-27)
|
||
|
||
- 新增独立应用接入页:应用/环境分页、队列及凭据详情、选择业务能力新建应用、重新生成 Token、复制/下载 SDK 配置;沿用单管理员,不引入角色系统。
|
||
- 新增 Cookie 专用管理接口,部署显式指定唯一登录名;同事务校验管理员与有效会话,写入要求同源与专用请求头。最初采用摘要模式;后续管理员接入信息功能已改为当前 Token 加密保管,普通列表仍无秘密。
|
||
- 新建资源/审计/幂等回执同事务,轮换复用现有凭据 ID 与轮换核心。请求不明保留原操作,原样重报;原有任务、订阅和交付身份不变。无新表、无外键、无 SDK 协议修改。
|
||
- 已通过定向 MySQL 并发创建、幂等冲突、重名回滚、轮换/旧 Token 拒绝、退出失效与审计脱敏;真实 HTTP 已验证创建、轮换后原任务和订阅可读。标准/全量集成和页面验收记录见[本批报告](reports/console-applications.md)。
|
||
- [页面使用、HTTP 接口及故障恢复](api/console-applications.md)。
|
||
|
||
### 长期凭据与平滑换证(2026-09-27)
|
||
|
||
- 新建应用和 bootstrap 默认长期 Token,可选定期;既有 Token 可通过管理端/CLI 原地调整有效期,无需改业务配置。
|
||
- 000032 与基线增加旧摘要/固定截止,无外键。控制台/CLI 默认 7 天过渡;同一身份的 API、WS 控制命令和跨节点重连均核验两代有效性,权限与任务归属保持不变。
|
||
- 结束过渡、两代同时撤销、过渡期防重复换证、旧 v1 固定操作兼容、幂等审计及中文模型注释随功能交付。
|
||
- 验证结果见[长期凭据与平滑换证](reports/credential-overlap.md)。SDK 无接口修改;调用方须在截止前滚动更新配置并收尾在途执行。
|
||
|
||
### 控制台应用范围与列表归属(2026-09-27)
|
||
|
||
- 已实现:页顶应用/环境与队列筛选、列表和详情应用标签、URL 保持筛选;切换隔离旧请求和表单,错误范围不降级读取默认数据。
|
||
- 单管理员通过 Cookie 显式选择范围;业务事务重新核验会话与目标应用,SDK 不支持范围覆盖,订阅原凭据绑定不变。
|
||
- 同步提供[范围接口](api/console-scope.md)、真实 MySQL 授权/审计/退出后拒绝测试和 HTTP 列表及订阅管理回归。最终结果见[本批报告](reports/console-scope.md)。
|
||
|
||
### 换证过渡状态提示(2026-09-27)
|
||
|
||
- 凭据卡片明确区分过渡中与已撤销状态,展示旧 Token 实际截止及服务切换步骤;入口可点击「查看原因」打开只读说明,到期后页面刷新恢复换证入口。
|
||
- 单独说明当前 Token 的获取位置、凭据 ID 与 Token 的区别、过渡期配置可能仍是旧代,以及未保存时的处理方式;新建/换证前、成功交付与关闭确认均提示原文只显示一次。
|
||
- 保留过渡期禁止重复换证的保护;提前结束仍需管理员确认服务全部切换、在途任务收尾,不自动结束过渡或替换现有凭据。
|
||
- 回归范围:标准竞态测试、vet/build、JavaScript 语法和文档链接;本地页面核对过渡原因可点击、凭据获取说明、正常换证入口与结束过渡确认弹窗。说明同步到[应用接入手册](api/console-applications.md)。
|
||
- 已完成验收:基础回归通过;浏览器验证过渡原因点击、说明展开/关闭/再次打开、普通换证与新建保存提醒、结束过渡确认。验收没有轮换或停用现有应用凭据。
|
||
- 本地接入命令已实跑:仓库外独立模块安装 SDK v0.1.1、读取队列及校验和通过;真实 Worker 三项成功且排空、结果订阅跨连接 ACK 去重、共享 Docker 网络就绪检查均通过。本地部署手册同步修正旧 Token 过渡语义。
|
||
|
||
### 管理员接入信息与 Token 保管(本批)
|
||
|
||
- [x] 当前 Token 加密保存;查看/导入同事务审计,单管理员 Cookie 与同源校验,列表脱敏。
|
||
- [x] 「查看接入信息」「复制接入配置」「下载 orbit.env」,包含地址、应用/命名空间/队列与当前 Token。
|
||
- [x] 新建/换证/撤销密文与摘要同步,原有效期和过渡策略保持;历史凭据导入校验当前摘要。
|
||
- [x] 前向迁移 000033、中文模型注释、无外键;本地 Compose 持久主密钥与丢失保护。
|
||
- [x] 标准回归、完整 MySQL/SDK/进程恢复、控制台端到端和浏览器验证通过;本地数据库升级为 33,原身份保持。见[验收报告](reports/credential-token-vault.md)。历史凭据仅有摘要时仍需导入当前原文,不会自动重置。
|
||
|
||
## 2026-09-27:通用资源退役与接入选择
|
||
|
||
范围:不含接入方名称或业务判断。迁移 000034、队列/订阅退役 API 与 SDK、活动订阅名额提示、管理端退役入口、按命名空间记忆队列、未补存 Token 文案、可运行示例。
|
||
|
||
保护:未完成/未知任务、执行许可、活动计划和流程、未退役订阅阻止队列退役;积压、未确认和耗尽交付阻止订阅退役。退役不删历史或审计,不修改凭据。
|
||
|
||
进度:实现完成;标准七模块竞态回归、vet/build、SDK/协议/文档门禁、真实 MySQL 完整 integration、控制台 HTTP 端到端均通过。浏览器与本地部署、远端版本交付记录见[本批报告](reports/resource-retirement.md)。
|
||
|
||
|
||
## 2026-09-29:管理端简化与操作体验
|
||
|
||
- [x] 全站统一浅色工作台、分组导航、紧凑统计、中文状态、响应式布局和登录页。
|
||
- [x] 任务/流程按状态、业务键、时间服务端筛选;四个资源列表真实游标翻页与 ID 定位,刷新保持范围与筛选。
|
||
- [x] 首页明确最近窗口口径,提供待处理入口;应用页集中接入配置,收起技术细节和低频管理操作。
|
||
- [x] 浏览器验证、查询/翻页回归、基础构建与控制台端到端,本地 Docker 更新和对接说明同步。验收见[管理端改版记录](reports/console-refresh.md)。
|
||
|
||
不修改业务执行内核、权限、Token、数据库模型或既有业务资源。
|
||
|
||
## 2026-09-29:筛选、分页与大屏布局细化
|
||
|
||
- [x] 应用/队列搜索选择、统一状态和每页条数菜单、筛选控件对齐。
|
||
- [x] 四个资源列表默认每页 10 条,保留服务端游标与原条件。
|
||
- [x] 登录页左侧内容居中、主工作区最大宽度与移动布局调整。
|
||
- [x] 浏览器交互及分页回归、基础构建、本地 Docker 部署与文档同步;见[验收记录](reports/console-refresh.md)。
|
||
|
||
## 2026-09-29:滚动稳定性与登录保护核对
|
||
|
||
- [x] 控制台独立内容滚动,固定导航与页头,保留移动端导航和表格横向滚动。
|
||
- [x] 应用详情相同快照不重建,后台刷新在滚动/编辑/展开详情时让位,检查请求返回时的交互状态。
|
||
- [x] 核对当时登录实现的失败次数封控和登录限流缺口;后续已在下方专项补齐。
|
||
- [x] 浏览器滚动、刷新和切页回归,基础检查及持久 Docker 部署;验收见[管理端改版记录](reports/console-refresh.md)。
|
||
|
||
## 2026-09-30:滚动边界补修与登录保护
|
||
|
||
- [x] 关闭根页面、侧栏及各内容滚动区的边界回弹;验证连续滚动与短屏导航。
|
||
- [x] MySQL 持久化失败窗口、临时锁定及账号/IP 限流,配置校验、可信代理识别。
|
||
- [x] 登录成功/失败/拒绝审计,单管理员查询、保留期及有界清理,登录页等待提示。
|
||
- [x] 真实 MySQL 并发/跨实例/恢复/审计失败回归,基础检查、浏览器验证、Docker 部署与文档同步。
|
||
|
||
本地部署修订 `f56f233704700d43c6733b7f0fa14d67e1feddf7`,Schema 35,无外键。基础检查、真实 MySQL、双节点登录与控制台端到端通过;广泛集成在 Docker 暂时无响应处中断,原参数补跑剩余链路全部通过。证据与验证边界见[验收记录](reports/console-refresh.md),默认策略和部署配置见[登录保护](console-login-security.md)。
|
||
|
||
## 2026-09-30:浏览器页签图标
|
||
|
||
- [x] 复用现有 Orbit 品牌图形,增加 SVG 和 16/32/48 像素 ICO 图标,登录页与管理端共用。
|
||
- [x] `make test vet build docs-check` 通过;本地部署修订 `d47d0d361d7edbcadf5728013cebcf1a2b908cc7`。未登录可请求两种图标,HTTP 200、媒体类型与文件内容正确;登录页与实际控制台均引用图标,readiness 为 ready。
|