feat(booking): add safe retries and operational metrics
This commit is contained in:
1 parent
c826b6e574
commit
7330ac853b
26 files changed
+749
-31
No files matched your search
@@ -18,3 +18,16 @@
|
||||
- 本地验证使用 H2,不使用远程数据库默认值。
|
||||
- 远程测试环境只允许通过 Secret 注入连接信息。
|
||||
- 真实邮件样本、密码和 `.planning` 过程文件不进入产品提交。
|
||||
|
||||
## 测试环境部署与回滚 Runbook
|
||||
|
||||
1. 先由数据库管理员完成历史凭据轮换,并在 Secret 系统注入新的 `TH_HOTEL_BOOKING_PG_URL`、`TH_HOTEL_BOOKING_PG_USERNAME`、`TH_HOTEL_BOOKING_PG_PASSWORD`;仓库不保存其值。
|
||||
2. 在应用启动前,以同一 Secret 在受控环境执行 `scripts/verify-booking-postgresql-migration.sh`。脚本必须先完成项目 schema preflight,再串行验证 V1/V2;没有 URL 时会以 exit 64 失败关闭。
|
||||
3. 仅在确认 schema 仅为 `th_hotel_booking` 且 pre/postflight 通过后,设置 `TH_HOTEL_BOOKING_PG_ENABLED=true`。旧 MySQL 仍只读兼容,不允许双写或跨库事务。
|
||||
4. 如需回滚应用行为,先停止 AgentBus 入口/worker,再将 `TH_HOTEL_BOOKING_PG_ENABLED=false` 并重启;不要执行 Flyway clean、不要删除 schema。已保存的 contracts artifact 与 attempt 供排障和三个月 retention 清理使用。
|
||||
5. 排障从受控查询 `GET /api/reservation/booking-processing-runs/{runId}` 开始;只有 `FAILED` run 可调用 `POST /api/reservation/booking-processing-runs/{runId}/retry`。重试只读取已脱敏的 contracts artifact,绝不重拉原件。
|
||||
6. 系统管理员用 `GET /api/reservation/booking-processing-metrics` 观察最近 24 小时的失败、Agent fallback、Risk、积压和重试趋势。该 API 不返回原始邮件、附件、团号或 Secret。
|
||||
|
||||
## 当前外部阻塞
|
||||
|
||||
- 远程 PostgreSQL 测试库在本轮的非写入 JDBC 预检中,于认证/SSL 协商前读取超时;没有执行 SQL、没有创建 schema。待网络或服务端恢复后,按上述 Runbook 的 preflight/migrate/postflight 路径继续,不能以重复重试替代环境修复。
|
||||
Reference in new issue
Block a user