131 行
7.0 KiB
Markdown
131 行
7.0 KiB
Markdown
# 发布试运行准备清单
|
||
|
||
**文档状态**:当前操作手册,用于首轮主线发布候选、live smoke 和小范围试运行准备。
|
||
**适用范围**:`hyb-oa` MVP 首轮主线 A1-A8 之后,部署前和部署后试运行前。
|
||
|
||
本文不替代 PRD、模块规约或 Issue CSV;它只回答“当前是否可以从本地可回归进入公网/企业微信/真实 OCR 验收”。
|
||
|
||
## 1. 当前结论
|
||
|
||
- Release candidate:`537e608 A8 完成首轮主线总回归门禁`。
|
||
- 主开发合同:`issues/2026-05-09_20-57-19-mvp-mainline-dev-kickoff.csv`,A1-A8 已全部 `DONE/DONE/DONE`。
|
||
- 剩余主线批次合同:`issues/2026-05-10_10-48-03-mvp-remaining-mainline-closeout.csv`,B1-B5 已全部 `DONE/DONE/DONE`。
|
||
- 当前状态:本地门禁已闭环,尚未部署本轮 release candidate。
|
||
- 当前最大缺口:公网真实账号、企业微信真机和真实 OCR 样票条件未闭环,仍按 `SKIP` 处理。
|
||
|
||
首轮路线保持不变:OA 是唯一业务主系统和正式审批中心;企业微信只做入口、身份、通知、deeplink 和打卡原始采集边界;不接飞书,不接企业微信原生审批。
|
||
|
||
## 2. 已完成证据
|
||
|
||
| 范围 | 证据 | 结论 |
|
||
| --- | --- | --- |
|
||
| A1 代码差距盘点 | `644852f A1 完成MVP主线代码差距盘点` | 已确认复用现有能力,不从零重写 |
|
||
| A2 统一审批中心 | `d871a40`、`f8c99c8`、`28be209` | PC/移动审批、状态展示和本地回归已闭环 |
|
||
| A3 报销/发票/OCR | `e79d252 A3 收口报销发票 OCR 主链路` | mock OCR、查重、主流程和视觉验证已通过 |
|
||
| A4 企业微信入口/通知 | `86451b3 A4 收口企业微信入口与通知回 OA` | 自动化入口和通知 deeplink 已收口,真机留到 live smoke |
|
||
| 测试与交付规约 | `9d6abc7 A1-A5 落地测试与交付规约` | 测试、视觉、SKIP、commit 规则已固定 |
|
||
| A5 请假考勤 | `d2bd4dc A5 收口请假考勤审批口径` | 请假审批、团队状态/日历本地通过 |
|
||
| A6 采购合同项目 | `d6ee25f A6 收口采购合同项目最小可用` | 采购、合同、项目最小可用验证已完成 |
|
||
| A7 权限导航 | `a18d477 A7 收口权限导航与备用模块护栏` | 导航护栏完成,部署前仍需直连权限审计 |
|
||
| A8 总回归 | `537e608 A8 完成首轮主线总回归门禁` | 本地总回归通过,公网/真机/真实 OCR 仍 SKIP |
|
||
|
||
## 3. 本地门禁复跑条件
|
||
|
||
A8 的本地门禁不是裸跑脚本即可完成,必须先用本地回归配置启动服务。推荐本地服务参数:
|
||
|
||
```bash
|
||
SERVE_CLIENT_DIST=true
|
||
OCR_PROVIDER=mock
|
||
IM_NOTIFIER_ENABLED=true
|
||
FIELD_ENCRYPTION_KEY=<local-test-key>
|
||
PROJECT_DOMAIN_ENABLED=true
|
||
PROJECT_LINKING_ENABLED=true
|
||
PROJECT_COMMUNICATION_LOG_ENABLED=true
|
||
PROJECT_CLOSURE_CHECKLIST_ENABLED=true
|
||
```
|
||
|
||
说明:
|
||
|
||
- `FIELD_ENCRYPTION_KEY` 必须只使用本地测试值;生产密钥不得提交、打印或写入文档。
|
||
- `OCR_PROVIDER=mock` 只证明本地 OCR 状态机和页面链路,不能替代真实 OCR 验收。
|
||
- `IM_NOTIFIER_ENABLED=true` 用于覆盖通知 outbox 和企业微信通知分支;缺真实企业微信配置时仍不能宣称真机通过。
|
||
- 项目相关开关用于复跑项目轻管理 E2E 和本地 smoke,不表示扩大 P2 范围。
|
||
|
||
部署前建议复跑:
|
||
|
||
```bash
|
||
cd server && npm run prisma:validate
|
||
cd server && ./scripts/regression-all.sh
|
||
cd client && npm run typecheck
|
||
cd client && npm run build
|
||
bash scripts/qa/run-web-gates.sh smoke-local
|
||
node scripts/qa/check-live-smoke-env.mjs
|
||
```
|
||
|
||
## 4. 权限直连审计矩阵
|
||
|
||
部署前必须补一轮“直连 URL / API 权限审计”。导航隐藏只能改善体验,不能替代服务端授权。
|
||
|
||
| 角色 | 必查主路径 | 备用或敏感路径 | 期望 |
|
||
| --- | --- | --- | --- |
|
||
| 普通员工 | `/portal`、`/workflow/tasks`、`/reimbursements`、`/leave`、`/purchase-requests`、`/mobile` | `/budgets`、`/ap`、`/integrations/erp`、`/travel`、`/invoice-pool`、`/contracts-registry`、`/payment-batches` | 主路径可用;备用或敏感路径不得泄露数据 |
|
||
| 主管/审批人 | `/workflow/tasks`、业务详情、移动审批 | 预算、ERP、票据中心、付款批次 | 只可见其审批和管理范围内数据 |
|
||
| 财务 | 报销复核、付款、导出、发票相关页面 | 管理员配置、员工敏感档案 | 财务能力可用,不越权到系统管理 |
|
||
| 管理员 | 系统配置、权限、审计、企业微信配置 | 真实凭据和密钥明文 | 可配置系统,但接口不得返回 secret 明文 |
|
||
|
||
如发现服务端权限缺口,必须停止部署并拆独立修复 Issue;不得用前端隐藏临时绕过。
|
||
|
||
R3 审计执行记录见 [`permission-direct-access-audit.md`](permission-direct-access-audit.md)。2026-05-10 本地自动化直连审计已通过,未发现权限泄漏;R4 部署预检仍未执行。
|
||
|
||
## 5. 部署预检
|
||
|
||
部署前只做只读确认,不直接改生产:
|
||
|
||
- 当前生产 commit、部署目录和本地 release candidate 是否一致。
|
||
- 生产 `.env` 必需项是否完整;检查时不得打印 secret。
|
||
- 数据库迁移状态是否干净;若存在 drift,先备份并拆数据库治理 Issue。
|
||
- 对象存储、附件目录、OCR provider、IM provider、企业微信回调域名是否与试运行目标一致。
|
||
- Caddy/systemd 或既有部署脚本状态是否健康。
|
||
- `/ready`、前端资源、企业微信 config 探活是否正常。
|
||
- 回滚方式是否明确:上一个部署包、上一个 commit、数据库备份和配置备份位置。
|
||
|
||
## 6. 公网 live smoke 条件
|
||
|
||
执行前必须准备以下环境变量或本机安全文件,不提交到仓库:
|
||
|
||
- `LIVE_SMOKE_ADMIN_IDENTIFIER` / `LIVE_SMOKE_ADMIN_PASSWORD`
|
||
- `LIVE_SMOKE_EMPLOYEE_IDENTIFIER` / `LIVE_SMOKE_EMPLOYEE_PASSWORD`
|
||
- `LIVE_EXPECT_WECOM_STATUS=ready`
|
||
- `PLAYWRIGHT_OCR_LIVE_FILE` 或 `PLAYWRIGHT_OCR_LIVE_DIR`
|
||
- 可选:`PLAYWRIGHT_OCR_LIVE_IDENTIFIER` / `PLAYWRIGHT_OCR_LIVE_PASSWORD`
|
||
|
||
命令:
|
||
|
||
```bash
|
||
node scripts/qa/check-live-smoke-env.mjs
|
||
LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh
|
||
```
|
||
|
||
判定:
|
||
|
||
- `liveSmokeReady=false` 时只能记录公网账号条件缺失。
|
||
- `liveOcrReady=false` 时只能记录真实 OCR 条件缺失。
|
||
- 手机企业微信入口必须用真实企业微信客户端补测;普通浏览器 UA 不等于真机通过。
|
||
|
||
## 7. 小范围试运行
|
||
|
||
只有 R3-R5 无阻断后,才开放 2-3 个内部用户试运行。
|
||
|
||
建议首批角色:
|
||
|
||
- 普通员工 1 人:提交报销、请假、采购,使用移动入口补资料。
|
||
- 审批人 1 人:处理待办、驳回或退回一条测试申请。
|
||
- 财务或管理员 1 人:复核发票、标记付款、导出、检查审计和通知记录。
|
||
|
||
试运行规则:
|
||
|
||
- 每日固定收集问题,按阻断、重要、体验、后续需求分级。
|
||
- 问题先登记到新 Issue CSV,不在试运行现场扩大范围。
|
||
- P2 的预算、ERP、AI、完整差旅、复杂 BPM 继续不进入首轮试运行。
|
||
- 出现权限泄漏、付款状态错乱、真实 OCR 大面积失败、企业微信入口无法进入时,应暂停试运行并回滚或修复。
|