Merge pull request #2120 from pikasTech/chore/pikaoa-production-backup-acceptance
Pipelines as Code CI / hwlab-web-probe-sentinel-nc01- Success
Pipelines as Code CI / platform-infra-gitea-nc01- Success
Pipelines as Code CI / unidesk-host- Success

docs: 收口 PikaOA 生产数据库备份验收
This commit is contained in:
Lyon
2026-07-15 12:29:34 +08:00
committed by GitHub
2 changed files with 17 additions and 38 deletions
@@ -2,48 +2,27 @@
## 结论
已实现 pikasTech/unidesk#2115,并提交 PR #2118。PK01 PostgreSQL 逻辑备份已从单个 Sub2API 特例正规化为 YAML-first `logicalDumps[]`;保留 Sub2API 既有 03:17 schedule、14 天 retention、目录与 systemd 资源语义,新增 PikaOA 独立 03:37 schedule、14 天 retention、脚本、service、timer 和目录
任务保持 `in_progress`。本次按派单边界未执行真实 `apply` 或手动 dump,等待主代理审核后完成运行面 mutation 与验收。
PikaOA 生产 PostgreSQL 逻辑备份已完成实现、合并和 PK01 真实运行面验收。PR pikasTech/unidesk#2118 已合并为 `2ce5b65f9510840b1fcd01e9327b1469654c481f`。PK01 现同时运行 Sub2API 与 PikaOA 两套 YAML-first 独立逻辑备份;PikaOA 首次手动备份已生成非空 dump,timer、最近成功、可恢复性均正常,warning 为空
## 变更
- `config/platform-db/postgres-pk01.yaml`每项完整声明 database、scriptPath、serviceName、timerName、目录、schedule、retention、warningAfterHours、pgDump 参数和 encryption 状态。
- `scripts/src/platform-db.ts`:按 YAML 解析、校验、生成远端 payload,动态渲染全部 dump 脚本与 systemd unit删除 Sub2API 专用路径、unit、timer schedule 硬编码。
- `scripts/src/platform-db-postgres-backups.ts`:集中生成每项备份的声明、timer、最近成功、最新非空 dump、可恢复性和 warning 投影
- `scripts/src/platform-db-postgres-backups.test.ts`:覆盖配置解析、renderer 去硬编码和 warning 非阻塞语义。
- `config/platform-db/postgres-pk01.yaml``logicalDumps[]` 完整声明 database、脚本、service、timer、目录、schedule、retention、warningAfterHours、pgDump 参数和 encryption 状态。
- `scripts/src/platform-db.ts`:按 YAML 解析、校验、采集状态和动态渲染远端脚本与 systemd unit删除 Sub2API 专用路径、unit schedule 硬编码。
- `scripts/src/platform-db-postgres-backups.ts`:集中投影每项备份的 timer、最近成功、最新非空 dump、可恢复性和非阻塞 warning。
- `scripts/src/platform-db-postgres-backups.test.ts`:覆盖双数据库解析、renderer 去硬编码和 warning 非阻塞语义。
## Primary Workspace 轻量准备
## 验证
Primary workspace 仅用于读取 `dad-dev``unidesk-ops``unidesk-ymalops``cli-spec``git-spec``unidesk-trans``unidesk-gh``mdtodo-edit``post-task` 技能;未在 runner 本地读取、编辑或验证目标源码,未把 runner 容器结果作为 Target 证据
## Target 原入口证据
全部源码、Git、测试和运行面命令均通过 `trans NC01:/root/unidesk/.worktree/pikaoa-production-backup ...` 执行。
- `bun --check scripts/src/platform-db-postgres-backups.ts`:通过。
- `bun --check scripts/src/platform-db.ts`:通过。
- `bun --check`远端 runner `sh -n``git diff --check` 通过
- `bun test scripts/src/platform-db-postgres-backups.test.ts`3 pass0 fail。
- 生成的远端 apply runner 经 `sh -n`:通过
- `git diff --check`:通过
- 只读 `platform-db postgres plan``ok=true``mutation=false`Sub2API timer active/enabled,最近成功为 2026-07-15 03:17:01 CST,最新非空 dump 为 90,798,991 bytes,可恢复性为 truePikaOA 未 apply,脚本/timer/最近成功/latest dump 缺失均只形成 warning
- 只读 `platform-db postgres status``ok=true``mutation=false``failure=null`;备份 warning 不阻塞 PikaOA MVP
- 合并前后受控 `platform-db postgres plan/status``ok=true``mutation=false``failure=null`Secret 未输出
- 受控 apply job `platform_db_postgres_apply_20260715042722566_116d8b`32 秒完成,exit 0;远端 job `pk01-pg16-20260715122724-1180092` 到达 `succeeded/complete`
- 通过受控 `trans PK01 sh` 手动启动 `unidesk-pk01-pikaoa-pgdump.service`Result=`success`ExecMainStatus=`0`
- 最终 PikaOA 备份状态:timer active/enabled,下一次执行为 2026-07-16 03:37:00 CST,最近成功为 2026-07-15 12:28:18 CST,最新 dump `pikaoa-20260715T122818.dump` 为 863 bytes`recoverable=true`warnings 为空
- Sub2API 既有备份保持 healthy,最近非空 dump 为 90,798,991 bytes`recoverable=true`
- PostgreSQL 主服务、TLS、9 个 role/database、11 个 Secret export 与应用连接在 apply 后继续 healthy。
## Git 与 PR
## 交付边界
- 分支:`feat/pikaoa-production-backup`
- 最新 master 已语义合入:merge commit `3086ea8d`
- 功能提交:`c483d6d508f5a9501f211d2b7bffd16a04494483`
- PRpikasTech/unidesk#2118,关联 pikasTech/unidesk#2115,未合并。
## 风险与下一步
- PikaOA 的 systemd 资源与 dump 文件在 apply 前不存在,当前 warning 与预期一致。
- 主代理审核后执行:
1. `bun scripts/cli.ts platform-db postgres plan --config config/platform-db/postgres-pk01.yaml`
2. `bun scripts/cli.ts platform-db postgres apply --config config/platform-db/postgres-pk01.yaml --confirm`
3. 按异步 job 返回的 `statusCommand` 短轮询至完成。
4. `bun scripts/cli.ts platform-db postgres status --config config/platform-db/postgres-pk01.yaml`
5. `sudo systemctl start unidesk-pk01-pikaoa-pgdump.service`
6. 再次执行 status,确认 PikaOA timer active/enabled、最近成功存在、最新非空 dump 大于 0 bytes、recoverable=true 且 warnings 为空。
- 上述 mutation 与手动 dump 验收完成后,再将 MDTODO R1.6.1.1 标记 complete。
- 当前备份目标为 PK01 本地目录,满足本阶段数据库逻辑备份;附件 off-node 备份仍属于 R1.6.1 生产上线任务,不由本子任务冒充完成
- 当前开发期不实现历史数据迁移、兼容升级、恢复编排或回滚框架
+1 -1
View File
@@ -139,7 +139,7 @@
#### R1.6.1 [in_progress]
建立仅跟随产品 release 的 PikaOA 生产 PaC/Tekton/GitOps/Argo lane,部署 NC01 pikaoa namespace,接入 PK01 host PostgreSQL、附件持久化、OTel/Prometheus、备份与 oa.pikapython.com TLS 公网入口(pikasTech/unidesk#2110),完成任务后将详细报告写入[任务报告](./details/pikaoa-enterprise-platform/R1.6.1_Task_Report.md)。
##### R1.6.1.1 [in_progress]
##### R1.6.1.1 [completed]
将 PK01 PostgreSQL 逻辑备份正规化为 YAML-first 多数据库 logicalDumps,保留 Sub2API 并新增 PikaOA 独立 dump、timer、retention 与受控状态/可恢复性摘要(pikasTech/unidesk#2115),完成任务后将详细报告写入[任务报告](./details/pikaoa-enterprise-platform/R1.6.1.1_Task_Report.md)。
### R1.7