feat(P25-1/P25-5/P26-1/P26-3/P24-1/P29-4): 落地内部OA够用版后端与试运行能力

关联 Issue: P25-1, P25-2, P25-3, P25-4, P25-5, P26-1, P26-3, P24-1, P24-2, P29-1, P29-2, P29-3, P29-4
这个提交包含在:
2026-03-21 18:03:20 +08:00
父节点 9b7cd818f7
当前提交 e39e41287e
共修改 45 个文件,包含 4571 行新增和 328 行删除
+13
查看文件
@@ -41,3 +41,16 @@
- [ ] `docker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env up -d --build server`
- [ ] `curl -fsS http://127.0.0.1:3000/ready`
## E. R12-lite 试点切换检查
- [ ] 已执行 `cd server && DATABASE_URL=postgresql://hyboa_user:[email protected]:5432/hyb_oa_r12?schema=public npm run seed:config`
- [ ] 运行环境已打开 R12-lite 所需 env 开关
- [ ] 功能开关页已将 `budget_precheck_v1`、`payment_batch_v1`、`portal_home_v1`、`global_search_v1`、`announcements_v1`、`workflow_definition_admin_v1`、`cutover_console_v1` 切到 `inherit` 或 `force_on`
- [ ] 旧 OA 主数据 CSV 已完成 dry-run,结果为 `dry_run_ok`
- [ ] `docs/migration-mapping.md` 已按试点范围人工核对
- [ ] 旧 OA 新单停用时间已公告,未完结事项已人工清空或冻结
- [ ] 仅按部门 / 法体 / 域粒度创建 `CutoverScope`
- [ ] 先开 `portal`,再逐域灰度打开业务入口
- [ ] Portal、待办、预算预校验、支付批次、公告、搜索已在试点部门可用
- [ ] 回退方案已演练:关闭 `CutoverScope` + 恢复旧入口
+33
查看文件
@@ -158,3 +158,36 @@ docker logs -f hyb-oa-trialrun-server
- 关闭 HTTP 监听
- 断开 Prisma/PG 连接
- 超时会强制退出(避免卡死导致升级失败)。
## 6. R12-lite 试点切换 Runbook
### 6.1 打开本轮功能前置条件
- 执行 `cd server && DATABASE_URL=postgresql://hyboa_user:[email protected]:5432/hyb_oa_r12?schema=public npm run seed:config`,确保 R12-lite 开关与默认配置落库。
- 在运行环境启用对应 env:`BUDGET_PRECHECK_ENABLED=true`、`PAYMENT_BATCH_ENABLED=true`、`PORTAL_HOME_ENABLED=true`、`GLOBAL_SEARCH_ENABLED=true`、`ANNOUNCEMENTS_ENABLED=true`、`WORKFLOW_DEFINITION_ADMIN_ENABLED=true`、`CUTOVER_CONSOLE_ENABLED=true`。
- 登录系统后在“功能开关”页将对应开关切到 `inherit` 或 `force_on`;仅设置 env 不会自动放开 DB 中的 `force_off` 记录。
### 6.2 旧 OA 主数据导出与 dry-run
1. 从旧 OA 导出人员、部门、预算或主数据 CSV。
2. 进入“切换控制台”,按 `employees | departments | budgets | masterdata_validation` 上传 CSV 执行 dry-run。
3. 只接受 `dry_run_ok` 结果进入下一步;若为 `dry_run_failed`,先修正列头和差异。
4. 以 `docs/migration-mapping.md` 为准完成人工差异核对。
### 6.3 试点切换步骤
1. 确认旧 OA 未完结事项已人工清空或冻结。
2. 在旧 OA 宣布“新单停用时间点”。
3. 在新系统创建 `CutoverScope`,粒度仅允许 `department | legal_entity | domain`。
4. 按试点范围打开对应 `CutoverScope`,先开 `portal`,再按域逐步打开 `expense / leave / procurement / travel / asset`。
5. 观察 Portal、待办、支付批次、AP 运营和消息深链是否正常。
### 6.4 验收证据
- 保留 dry-run 结果截图或导出记录。
- 保留切换范围配置、启停时间和操作人审计。
- 保留回归结果:`server/scripts/regression-all.sh`、`client npm run build`、`client npm run test:e2e`(如环境可用)。
- 保留试点部门首批新单在新系统流转与付款的样例单据编号。
### 6.5 回退步骤
1. 在“切换控制台”关闭目标 `CutoverScope`。
2. 恢复旧 OA 对应入口并重新开放新单。
3. 若需要代码/数据回退,按本文第 3 节恢复到最近备份。
4. 新系统中试点期间新建单据保留审计,不做 destructive 回写到旧 OA。