diff --git a/deploy.sh b/deploy.sh index e03ca63..4ce284b 100755 --- a/deploy.sh +++ b/deploy.sh @@ -107,7 +107,8 @@ cmd_deploy() { echo "等待服务启动..." # 健康检查 - for i in $(seq 1 15); do + # 30 秒不够:mysql 一起重建时应用就绪约 35 秒,会误报「启动超时」。 + for i in $(seq 1 40); do if curl -s "http://localhost:${APP_PORT}/api/health" | grep -q "ok" 2>/dev/null; then echo "" echo "==============================" @@ -124,7 +125,7 @@ cmd_deploy() { echo "==============================" exit 0 fi - echo " 等待中... ($i/15)" + echo " 等待中... ($i/40)" sleep 2 done diff --git a/docker-compose.yml b/docker-compose.yml index d7302d1..1b65de9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -61,6 +61,20 @@ services: - MAIL_ROUNDCUBE_URL=${MAIL_ROUNDCUBE_URL:-} # 生产容器禁止 reload;开发环境由 dev.sh 单独启动 reload。 - UVICORN_RELOAD=false + # 自动化调度(见 docs/自动化与资料收集规划.md §7)。 + # 这个开关只决定「是否起调度线程」;各作业还有自己的开关,默认关闭, + # 在 /automation 页面打开。 + - AUTOMATION_ENABLED=${AUTOMATION_ENABLED:-false} + # order_site 订单只读库(P0 订单读取适配层用;未配置时适配层整体降级) + - ORDER_SITE_DATABASE_URL=${ORDER_SITE_DATABASE_URL:-} + - ORDER_SITE_LOOKUP_ENABLED=${ORDER_SITE_LOOKUP_ENABLED:-false} + - ORDER_SITE_LOOKUP_TIMEOUT_SECONDS=${ORDER_SITE_LOOKUP_TIMEOUT_SECONDS:-3} + # 用户上传图片的 OSS(P2 资料收集用) + - OSS_ENDPOINT=${OSS_ENDPOINT:-} + - OSS_BUCKET=${OSS_BUCKET:-} + - OSS_ACCESS_KEY_ID=${OSS_ACCESS_KEY_ID:-} + - OSS_ACCESS_KEY_SECRET=${OSS_ACCESS_KEY_SECRET:-} + - OSS_PREFIX=${OSS_PREFIX:-collect} networks: - default - order-site-net diff --git a/docs/自动化与资料收集规划.md b/docs/自动化与资料收集规划.md index 5611ab3..4bfcfe0 100644 --- a/docs/自动化与资料收集规划.md +++ b/docs/自动化与资料收集规划.md @@ -1171,6 +1171,11 @@ OSS_PREFIX=collect - **纯函数优先**:匹配打分、别名归一、365 天判定、订单号归一、模板必填校验都做成纯函数重点覆盖; - **写操作不进自动回归**:兑换/重登/支付用 mock 客户端做契约测试(沿用 `tests/test_douyu_write_path_contracts.py`); - 提交门禁:pre-commit 跑 `ruff format --check`(仅暂存文件)+ `tsc -b`;pre-push 跑全量 pytest; +- **新增环境变量必须同步改 `docker-compose.yml`**:本项目的 compose 用的是 + `environment:` **显式列表**(不是 `env_file`),只写进 `.env` **不会传进容器**。 + P1a 踩过一次:`.env` 加了 `AUTOMATION_ENABLED=true`,容器里查不到,调度器照旧不启动; + 早先 §15.1 写入的 `ORDER_SITE_*` 与 `OSS_*` 同样没生效。新增变量时三处都要动: + `.env`(服务器实值)+ `docker-compose.yml`(透传)+ `.env.example`(留档); - **DB 读出来的时间是 naive UTC**:`datetime` 列取回后不带时区,直接和 `datetime.now(UTC)` 比较会 `TypeError: can't compare offset-naive and offset-aware`(P1a 踩过一次)。比较前一律用 `_as_utc()`(`services/yyb_service.py` 与 `services/automation/scheduler.py` 各有一份)补时区。