feat: Worker 进程拆分(F20)

- 新增 worker 进程入口(npm run worker)只跑作业不监听端口
- trialrun compose 增加 worker profile(server 可 JOBS_ENABLED=false)
- 更新 runbook/.env.example/README 说明与 v3 CSV 状态推进
这个提交包含在:
2026-02-09 20:22:33 +08:00
父节点 dff1aabc26
当前提交 55924c8ff8
共修改 8 个文件,包含 129 行新增和 2 行删除
+6 -1
查看文件
@@ -54,9 +54,14 @@ DELEGATION_REVOKE_CRON="0 * * * *"
# ===== 作业系统(pg-boss,可回滚到 cron)=====
JOB_DRIVER="pgboss" # cron|pgboss
JOBS_ENABLED="true" # false 时整体关闭作业(排障/回滚)
JOBS_ENABLED="true" # false 时整体关闭作业(排障/回滚/或启用 worker 拆分)
PG_BOSS_SCHEMA="pgboss" # pg-boss 在 PG 内的 schema
# ===== Worker 拆分(可选,F20)=====
# 如需启用“API 进程 + Worker 进程”:
# 1) 设置 JOBS_ENABLED="false"(server 不跑作业)
# 2) 启动 compose 时加:--profile worker(会启动 worker 容器,worker 内强制 JOBS_ENABLED=true)
# ===== 试运行引导管理员(E20)=====
TRIALRUN_ADMIN_EMAIL="[email protected]"
TRIALRUN_ADMIN_PHONE="13800000000"
+38
查看文件
@@ -64,6 +64,44 @@ services:
volumes:
- ./data/storage:${STORAGE_DIR}
worker:
build:
context: ../..
dockerfile: deploy/trialrun/Dockerfile
container_name: hyb-oa-trialrun-worker
restart: unless-stopped
profiles: ["worker"]
depends_on:
db:
condition: service_healthy
command: ["npm", "run", "worker"]
environment:
NODE_ENV: production
APP_ORIGIN: ${APP_ORIGIN}
JWT_SECRET: ${JWT_SECRET}
DATABASE_URL: ${DATABASE_URL}
STORAGE_DIR: ${STORAGE_DIR}
SERVE_CLIENT_DIST: "false"
CLIENT_DIST_DIR: ${CLIENT_DIST_DIR}
OCR_PROVIDER: ${OCR_PROVIDER}
OCR_MAX_ATTEMPTS: ${OCR_MAX_ATTEMPTS}
OCR_POLL_CRON: ${OCR_POLL_CRON}
OCR_BATCH_SIZE: ${OCR_BATCH_SIZE}
OCR_LOCK_TTL_SECONDS: ${OCR_LOCK_TTL_SECONDS}
OCR_TIMEOUT_MS: ${OCR_TIMEOUT_MS}
TENCENT_SECRET_ID: ${TENCENT_SECRET_ID}
TENCENT_SECRET_KEY: ${TENCENT_SECRET_KEY}
TENCENT_OCR_REGION: ${TENCENT_OCR_REGION}
DELEGATION_REVOKE_CRON: ${DELEGATION_REVOKE_CRON}
JOB_DRIVER: ${JOB_DRIVER}
JOBS_ENABLED: "true"
PG_BOSS_SCHEMA: ${PG_BOSS_SCHEMA}
volumes:
- ./data/storage:${STORAGE_DIR}
init:
build:
context: ../..
+9
查看文件
@@ -21,6 +21,7 @@ cp deploy/trialrun/.env.example deploy/trialrun/.env
作业系统建议:
- 试运行默认 `JOB_DRIVER=pgboss`(基于 Postgres 的队列调度,单机/多进程语义更稳)
- 如需快速回滚作业调度:将 `JOB_DRIVER` 改回 `cron`
- 可选 Worker 拆分(F20):将 `JOBS_ENABLED=false` 并启用 `--profile worker`(worker 进程会强制跑作业)
### 1.2 启动数据库与服务
```bash
@@ -29,6 +30,14 @@ docker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/
docker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env up -d --build server
```
可选:启用 Worker 进程(推荐在试运行/多进程模式使用):
```bash
cd /path/to/hyb-oa
# 1) 在 deploy/trialrun/.env 中设置:JOBS_ENABLED="false"
# 2) 启用 worker profile(会额外启动 worker 容器)
docker compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env --profile worker up -d --build server worker
```
### 1.3 初始化(迁移 + 配置 seed + 试运行管理员)
```bash
cd /path/to/hyb-oa