9.2 KiB
9.2 KiB
hyb-oa 试运行发布 Checklist(E19)
目标:一次发布可追踪、可回归、可回滚(10 分钟内恢复到上个版本)。
0. 同机官网部署最小步骤
- 已确认官网继续走
hyinda.com / www.hyinda.com,OA 使用独立二级域名(建议oa.hyinda.com) - 服务器已执行
bash deploy/trialrun/setup-server.sh - 已在服务器创建 OA 目录(默认
/opt/hyb-oa-trialrun) - 已准备
deploy/trialrun/.env,并将APP_ORIGIN改为 OA 公网域名 - 已将
COOKIE_SECURE设为true - 已确认
deploy/trialrun/.env作为部署事实源,新增环境变量优先补到该文件 - 已尽量使用无引号 env 值;历史带引号值当前兼容,但建议逐步清理
- 已将 OA Nginx 配置放到
/etc/nginx/sites-available/hyb-oa - 已上传 OA 域名证书到
/etc/nginx/ssl/<oa-domain>/ - 已执行
nginx -t && systemctl reload nginx - 已从本地执行
bash scripts/qa/run-release-gate.sh all或至少执行bash deploy/trialrun/deploy.sh - 已通过
https://<oa-domain>/ready或首页登录完成最小探活 - 首次上线先执行系统初始化(migration + seed),不要直接导入旧库整库备份
- 若要导数据,仅准备最小主数据:部门、员工、角色、在用资产、活跃项目、合同元数据
- 不导入历史审批单、通知历史、审计日志、聊天记录和涉密正文附件
A. 发布前(Pre-flight)
- 确认当前版本已打 tag:
git tag -a trialrun-YYYYMMDD-NN -m "trialrun release" - 本地门禁:
./scripts/check-minimal.sh - 部署契约校验:
node deploy/trialrun/validate-env-contract.js - 网页 smoke 门禁:
bash scripts/qa/run-web-gates.sh smoke-local - 网页 full 门禁(建议发版前执行):
bash scripts/qa/run-web-gates.sh full-local - 全量回归(建议):
cd server && RUN_AUDIT_REGRESSION=1 RUN_OCR_REGRESSION=1 ./scripts/regression-all.sh - 备份(DB + 文件存储):
set -a && source deploy/trialrun/.env && set +a./scripts/backup-db.sh(记录输出文件名)./scripts/backup-storage.sh(记录输出文件名)
B. 发布(Deploy)
git checkout <tag>- 构建并启动:
docker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env up -d --build serverdocker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env run --rm init
- 探活:
curl -fsS http://127.0.0.1:3000/ready
- Runtime smoke:
docker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env exec -T server node src/scripts/smoke-trialrun-runtime.js
- external deps smoke:
docker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env exec -T server node src/scripts/smoke-external-deps.js
- 登录验证已由 live smoke 与 release gate 覆盖;仅首次接入或第三方后台配置变更时补做人工确认
C. 发布后(Post-check)
- 公网 live smoke(只读,不做写操作):
bash scripts/qa/run-web-gates.sh smoke-live - 若本地已配置
LIVE_SMOKE_*,确认bash deploy/trialrun/deploy.sh输出中包含 live smoke 结果 - 已确认 release gate / live smoke 结果为通过;关键链路不再作为每次发布的手工必做项
- 查看 server 日志(无异常错误风暴):
docker logs --tail=200 hyb-oa-trialrun-server
- 已确认 smoke 账号为独立账号(
smoke-admin/smoke-employee),且不参与真实业务 - 已确认 live smoke 仅检查
/ready、登录、Portal、项目、公告、个人设置和企微配置状态
D. 回滚(Rollback)
原则:如果涉及迁移,最快回滚通常是 “恢复备份 + 回到上个 tag”。
- 停止 server:
docker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env stop server - 恢复 DB:
./scripts/restore-db.sh <db.dump> - 恢复存储:
./scripts/restore-storage.sh <storage.tar.gz> deploy/trialrun/data/storage - 回到上个版本:
git checkout <previous-tag> - 重启并探活:
docker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env up -d --build servercurl -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+ 恢复旧入口
F. R17 小团队上线检查
- 工作区模式已确认为
small_team_internal - 主导航已收敛为
Portal / 团队 / 请假 / 报销 / 资产 / 周报 / 待办 / 公告 - 采购 / 差旅 / 预算 / 支付批次 / AP 运营已降级为管理员备用入口
- 已打开
portal_home_v1、announcements_v1、presence_board_v1、weekly_report_v1、employee_lifecycle_v1、todo_board_v1 - 员工账号、档案、部门、直属上级已补齐
- 资产台账与员工领用关系已核对
- 至少 1 条公告已发布并在
Portal可见 - 至少 1 次入职/离职/资产交接已演练
- 全员已知晓每周周报和今日状态使用要求
- 已建立连续 4 周观测记录方式(建议直接使用
deploy/trialrun/observation-template.md)
R18-R22 上线补充检查项
APP_ORIGIN已切到公网 HTTPS 域名COOKIE_SECURE=truePUBLIC_SECURITY_HARDENING_ENABLED=trueOPENAPI_DOCS_ENABLED=false- 企业微信应用已配置工作台入口和回调地址
- 至少 1 个管理员已完成企微绑定
- 项目模块、项目关联、合同台账已在试点环境可见
- 涉密正文与附件未上传到 OA
- 企业微信提醒仅包含脱敏标题 / 编号 / deeplink
- 员工可从企业微信进入
Portal,并继续完成周报、待办、项目更新
R23 试点收口 Checklist
project_communication_log_v1已开启并可在项目详情页使用project_closure_checklist_v1已开启并可自动 bootstrap- 管理员已知晓“软约束”策略,不把收口面板误认为硬阻断审批
- 员工已知晓“24h 回填”规则
- 至少 1 个项目已验证:沟通回填 -> Portal 待跟进统计生效
- 至少 1 个项目已验证:收口清单 -> Portal 待收口统计生效
- 至少 1 条涉密合同或资料引用已验证搜索边界
- 每周五复盘模板中已加入“聊天/表格补流程案例”字段
R27 企业微信正式接入与交互优化检查
- 登录页已区分普通浏览器与企业微信 WebView 场景
- 企业微信工作台入口 URL 已配置为
https://oa.hyinda.com/api/auth/wecom/login?returnTo=%2Fportal - OAuth 回调地址已配置为
https://oa.hyinda.com/api/auth/wecom/callback deploy/trialrun/.env已补齐WECOM_ENABLED / WECOM_ENTRY_ENABLED / WECOM_OAUTH_ENABLED / WECOM_CORP_ID / WECOM_AGENT_ID / WECOM_AGENT_SECRET / WECOM_REDIRECT_URI / WECOM_ALLOWED_RETURN_HOSTS- 至少 1 个管理员已在
个人设置成功完成企微绑定 - 已验证:已绑定员工从企业微信工作台进入后可直接落到
Portal - 已验证:未绑定员工会回退到登录页并看到明确绑定提示
- 已验证:Portal 首屏第一排卡片顺序符合员工 / 管理员视角设计
- 已验证:备用模块默认折叠,不干扰主导航
- 已验证:企业微信通知仍保持脱敏,不包含涉密正文与金额明细
R29 前端设计系统与工作台体验检查
- 主导航已稳定收敛为
Portal / 团队 / 请假 / 报销 / 资产 / 周报 / 待办 / 公告 / 项目 - 管理入口已单独分区,
备用模块默认折叠 - 登录页在普通浏览器与企业微信 WebView 场景下都只保留一个主 CTA
- 登录页未再展示测试账号暗示,错误提示贴近操作区
Portal员工第一屏已优先显示:待办 / 今日状态 / 周报 / 项目Portal管理第一屏已优先显示:审批 / 团队状态 / 周报缺口 / 需协助员工个人设置不再直出部门 ID / 上级 ID等内部标识topbar仅在企业微信 WebView 场景显示“当前通过企业微信进入”轻提示- 已执行
cd client && npm run typecheck - 已执行
cd client && npm run build - 已执行
bash scripts/qa/run-web-gates.sh smoke-local - 发版前建议执行
bash scripts/qa/run-web-gates.sh full-local