From 215ee0863f575fbbcb1a52fe349dbec8ac6db260 Mon Sep 17 00:00:00 2001 From: Codex Date: Fri, 1 May 2026 13:42:12 +0800 Subject: [PATCH] docs: record phase 7.6 watchdog go-live --- project-docs/运维手册-2026-05-01.md | 32 ++++ .../闭环交付与深度开发方案-2026-05-01.md | 4 +- ...真实值守上线与告警联调执行记录-2026-05-01.md | 142 ++++++++++++++++++ ...7.6-真实值守上线与告警联调方案-2026-05-01.md | 47 ++++++ 4 files changed, 223 insertions(+), 2 deletions(-) create mode 100644 project-docs/阶段7.6-真实值守上线与告警联调执行记录-2026-05-01.md create mode 100644 project-docs/阶段7.6-真实值守上线与告警联调方案-2026-05-01.md diff --git a/project-docs/运维手册-2026-05-01.md b/project-docs/运维手册-2026-05-01.md index c660c93f..bb6659f7 100644 --- a/project-docs/运维手册-2026-05-01.md +++ b/project-docs/运维手册-2026-05-01.md @@ -336,6 +336,38 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\run-production-w 计划任务默认不固化管理员密码,也不把 Webhook URL 写入产物。Webhook URL 只能通过运行时参数或 `AI_CONTRACT_WATCHDOG_WEBHOOK_URL` 注入;完整 release gate 仍应由人工或受控流水线在当前进程临时注入管理员密码后执行。 +真实上线值守任务: + +```powershell +powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\run-production-watchdog-scheduler.ps1 -Mode RegisterTask -RequireWebhook -NotifyOnStatus WarnOrFail +``` + +查看值守任务: + +```powershell +powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\run-production-watchdog-scheduler.ps1 -Mode ShowTask +``` + +暂停值守任务: + +```powershell +Disable-ScheduledTask -TaskName AIContractProductionWatchdog +``` + +恢复值守任务: + +```powershell +Enable-ScheduledTask -TaskName AIContractProductionWatchdog +``` + +删除值守任务: + +```powershell +powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\run-production-watchdog-scheduler.ps1 -Mode UnregisterTask +``` + +真实外部告警联调前,必须在运行环境中设置 `AI_CONTRACT_WATCHDOG_WEBHOOK_URL`。该值不得进入 Git、脚本、文档或计划任务命令。 + 列出可回滚的 frontend 备份: ```powershell diff --git a/project-docs/闭环交付与深度开发方案-2026-05-01.md b/project-docs/闭环交付与深度开发方案-2026-05-01.md index 376686d4..85ba9c84 100644 --- a/project-docs/闭环交付与深度开发方案-2026-05-01.md +++ b/project-docs/闭环交付与深度开发方案-2026-05-01.md @@ -16,11 +16,11 @@ | 阶段 4:试点运行监控与安全加固 | PASS | `project-docs/阶段4-试点运行监控与安全加固执行记录-2026-05-01.md` | | 阶段 5:生产运行、安全、监控、备份与依赖治理 | PASS | `project-docs/阶段5-生产运行安全监控备份与依赖治理执行记录-2026-05-01.md` | | 阶段 6:生产运营自动化与发布门禁固化 | PASS | `project-docs/阶段6-生产运营自动化与发布门禁固化执行记录-2026-05-01.md` | -| 阶段 7:生产运营常态化与一键发布 | PASS | `project-docs/阶段7-一键前端Docker发布执行记录-2026-05-01.md`、`project-docs/阶段7.2-一键回滚与生产巡检门禁执行记录-2026-05-01.md`、`project-docs/阶段7.3-容量治理与备份保留策略执行记录-2026-05-01.md`、`project-docs/阶段7.4-日常巡检与告警门禁执行记录-2026-05-01.md`、`project-docs/阶段7.5-定时巡检与告警投递执行记录-2026-05-01.md` | +| 阶段 7:生产运营常态化与一键发布 | PASS | `project-docs/阶段7-一键前端Docker发布执行记录-2026-05-01.md`、`project-docs/阶段7.2-一键回滚与生产巡检门禁执行记录-2026-05-01.md`、`project-docs/阶段7.3-容量治理与备份保留策略执行记录-2026-05-01.md`、`project-docs/阶段7.4-日常巡检与告警门禁执行记录-2026-05-01.md`、`project-docs/阶段7.5-定时巡检与告警投递执行记录-2026-05-01.md`、`project-docs/阶段7.6-真实值守上线与告警联调执行记录-2026-05-01.md` | 阶段 1 已完成源码闭环与生产入口闭环,生产无人 E2E `18/18` 通过。阶段 2 已完成 Review 重试、Knowledge Base 文档重试、Review -> Chat -> Contract 上下文联动、首页交付工作台和阶段 2 自动化无人闭环,本地与生产 E2E 均 `7/7` 通过。阶段 3 已完成系统 readiness、试点交付准备页、默认账号说明、演示样本数据、依赖健康门禁和阶段 3 自动化无人闭环,本地与生产 E2E 均 `5/5` 通过。 -当前后续重点已从“生产运营自动化与发布门禁固化”推进到“生产运营常态化与一键发布”:阶段 7 首批一键发布闭环已完成,阶段 7.2 一键回滚与生产巡检门禁也已完成首批闭环。阶段 7.3 容量治理已完成,备份保留策略、Docker build cache/旧镜像清理和磁盘告警阈值已固化;服务器磁盘从 `89%` 降至 `67%`。阶段 7.4 日常巡检与告警门禁已完成,将 ops check、capacity governance dry run 和可选 release gate 聚合为统一生产值守入口,完整值守验证 `PHASE7_PRODUCTION_WATCHDOG_PASS`。阶段 7.5 已完成定时任务包装和 Webhook dry-run 告警投递,最终调度门禁 `PHASE7_WATCHDOG_SCHEDULER_PASS`。 +当前后续重点已从“生产运营自动化与发布门禁固化”推进到“生产运营常态化与一键发布”:阶段 7 首批一键发布闭环已完成,阶段 7.2 一键回滚与生产巡检门禁也已完成首批闭环。阶段 7.3 容量治理已完成,备份保留策略、Docker build cache/旧镜像清理和磁盘告警阈值已固化;服务器磁盘从 `89%` 降至 `67%`。阶段 7.4 日常巡检与告警门禁已完成,将 ops check、capacity governance dry run 和可选 release gate 聚合为统一生产值守入口,完整值守验证 `PHASE7_PRODUCTION_WATCHDOG_PASS`。阶段 7.5 已完成定时任务包装和 Webhook dry-run 告警投递,最终调度门禁 `PHASE7_WATCHDOG_SCHEDULER_PASS`。阶段 7.6 正在推进真实计划任务上线与告警联调;当前外部告警到人需要运行时提供 `AI_CONTRACT_WATCHDOG_WEBHOOK_URL`。 --- diff --git a/project-docs/阶段7.6-真实值守上线与告警联调执行记录-2026-05-01.md b/project-docs/阶段7.6-真实值守上线与告警联调执行记录-2026-05-01.md new file mode 100644 index 00000000..e75e25fb --- /dev/null +++ b/project-docs/阶段7.6-真实值守上线与告警联调执行记录-2026-05-01.md @@ -0,0 +1,142 @@ +# 阶段 7.6:真实值守上线与告警联调执行记录(2026-05-01) + +> 当前目标:把阶段 7.5 的 dry run 变成真实上线值守,并验证告警投递链路可以完成真实 HTTP 发送。 + +--- + +## 一、当前执行结论 + +| 主线 | 状态 | 备注 | +|---|---|---| +| gstack 安装校验 | PASS | 已返回 `GSTACK_OK` | +| 阶段 7.6 方案 | READY | 已新增阶段 7.6 方案文档 | +| Webhook 运行时配置 | BLOCKED | 当前进程未配置 `AI_CONTRACT_WATCHDOG_WEBHOOK_URL` | +| 计划任务上线 | PASS | `AIContractProductionWatchdog` 已注册 | +| 计划任务状态验证 | PASS | 任务状态 `Ready` | +| 本地真实 POST 烟测 | PASS | 临时 HTTP 接收器收到真实 POST 并返回 200 | +| 外部告警到人验证 | BLOCKED | 需要真实 Webhook URL | +| 最终门禁 | PENDING | 待执行 | + +--- + +## 二、执行口径 + +正式注册计划任务: + +```powershell +powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\run-production-watchdog-scheduler.ps1 -Mode RegisterTask -RequireWebhook -NotifyOnStatus WarnOrFail +``` + +查看计划任务: + +```powershell +powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\run-production-watchdog-scheduler.ps1 -Mode ShowTask +``` + +最终门禁: + +```powershell +powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\run-production-watchdog-scheduler.ps1 -Mode RunOnce -RequireCleanWorktree -FailOnWarn -SkipWebhook +``` + +--- + +## 三、计划任务上线 + +命令: + +```powershell +powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\run-production-watchdog-scheduler.ps1 -Mode RegisterTask -RequireWebhook -NotifyOnStatus WarnOrFail +``` + +结果: + +```text +PHASE7_WATCHDOG_SCHEDULER_PASS D:\ai-contract-platform\project-docs\qa-artifacts\phase7.5-watchdog-scheduler\2026-05-01T13-40-03-817 +``` + +计划任务配置: + +```text +TaskName=AIContractProductionWatchdog +State=Ready +stores_admin_password=false +stores_webhook_url=false +``` + +注册命令包含: + +```text +-RequireCleanWorktree -FailOnWarn -RequireWebhook -WebhookUrlEnvVar "AI_CONTRACT_WATCHDOG_WEBHOOK_URL" -WebhookKind generic -NotifyOnStatus WarnOrFail +``` + +结论:真实值守任务已上线。任务不会保存管理员密码,也不会保存 Webhook URL。若后续生产值守出现 WARN/FAIL,任务会要求运行环境中存在 `AI_CONTRACT_WATCHDOG_WEBHOOK_URL`。 + +--- + +## 四、计划任务状态验证 + +命令: + +```powershell +powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\run-production-watchdog-scheduler.ps1 -Mode ShowTask +``` + +结果: + +```text +PHASE7_WATCHDOG_SCHEDULER_PASS D:\ai-contract-platform\project-docs\qa-artifacts\phase7.5-watchdog-scheduler\2026-05-01T13-40-12-173 +``` + +结论:`ShowTask` 查询 PASS,Windows Task Scheduler 中 `AIContractProductionWatchdog` 状态为 `Ready`。 + +--- + +## 五、本地真实 POST 烟测 + +方式:启动临时 `127.0.0.1` HTTP 接收器,执行非 dry-run Webhook 投递。 + +结果: + +```text +PHASE7_6_LOCAL_WEBHOOK_SMOKE_PASS D:\ai-contract-platform\project-docs\qa-artifacts\phase7.6-real-webhook-smoke\2026-05-01T13-40-43-497 +SCHEDULER_EXIT_CODE=0 +``` + +接收器日志: + +```text +LISTENING 127.0.0.1:53537 +RECEIVED_AND_RESPONDED +``` + +收到 payload: + +```text +project=ai-contract-platform +event=production_watchdog +status=WARN +severity=warning +``` + +结论:告警投递链路已完成真实 HTTP POST 验证。本次使用本地临时接收器,不等同于外部人员已收到。 + +--- + +## 六、外部告警到人阻塞点 + +当前进程检查结果: + +```text +WATCHDOG_WEBHOOK_ENV_MISSING +``` + +因此本轮不能声明“外部告警已经送到人手里”。要完成该项,需要在运行环境中注入真实 Webhook: + +```powershell +$env:AI_CONTRACT_WATCHDOG_WEBHOOK_URL = '<真实告警机器人或通知通道 URL>' +powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\run-production-watchdog-scheduler.ps1 -Mode RunOnce -RequireCleanWorktree -NotifyOnStatus All +Remove-Item Env:\AI_CONTRACT_WATCHDOG_WEBHOOK_URL +``` + +安全要求:Webhook URL 不得写入 Git、脚本、文档、计划任务命令或产物。 diff --git a/project-docs/阶段7.6-真实值守上线与告警联调方案-2026-05-01.md b/project-docs/阶段7.6-真实值守上线与告警联调方案-2026-05-01.md new file mode 100644 index 00000000..f1e8c3fb --- /dev/null +++ b/project-docs/阶段7.6-真实值守上线与告警联调方案-2026-05-01.md @@ -0,0 +1,47 @@ +# 阶段 7.6:真实值守上线与告警联调方案(2026-05-01) + +> 前置状态:阶段 7.5 已完成定时巡检包装、Webhook dry run 和计划任务 dry run。阶段 7.6 的目标是把 dry run 推进为真实上线值守,并验证告警投递链路可以完成真实 HTTP 发送。 + +--- + +## 一、阶段目标 + +1. 正式注册 Windows 计划任务 `AIContractProductionWatchdog`。 +2. 计划任务默认执行 `RunOnce -RequireCleanWorktree -FailOnWarn`。 +3. 计划任务不保存管理员密码、不保存 Webhook URL。 +4. 使用本地 HTTP 接收器验证非 dry-run Webhook POST 链路。 +5. 若运行环境提供 `AI_CONTRACT_WATCHDOG_WEBHOOK_URL`,执行真实外部告警投递验证。 +6. 若未提供真实 Webhook URL,明确记录为运行时阻塞,不伪造“送达人手”的结论。 + +--- + +## 二、交付范围 + +| 主线 | 目标 | 交付物 | +|---|---|---| +| A. 计划任务上线 | 注册真实定时任务 | Windows Task Scheduler task | +| B. 任务状态验证 | 查询任务状态和命令 | `ShowTask` 产物 | +| C. 投递链路验证 | 本地 HTTP 接收器真实接收 POST | `received-webhook.json` | +| D. 外部告警联调 | 使用运行时 Webhook URL 真实投递 | 仅在 `AI_CONTRACT_WATCHDOG_WEBHOOK_URL` 存在时执行 | +| E. 文档闭环 | 固化查看、暂停、恢复和手动运行方式 | 运维手册与执行记录 | + +--- + +## 三、安全口径 + +1. 管理员密码不得写入计划任务。 +2. Webhook URL 不得写入计划任务命令、Git、文档或产物。 +3. 真实外部 Webhook 只从 `AI_CONTRACT_WATCHDOG_WEBHOOK_URL` 读取。 +4. 本地 HTTP 烟测只使用 `127.0.0.1` 临时接收器,不代表外部人员已收到。 +5. 若没有真实 Webhook URL,阶段可以完成“值守上线”和“投递链路可用”,但不能声明“已送达到人”。 + +--- + +## 四、验收标准 + +1. `AIContractProductionWatchdog` 计划任务已注册。 +2. `ShowTask` 可查询任务状态。 +3. 任务命令不包含管理员密码和 Webhook URL。 +4. 本地真实 Webhook POST 烟测 PASS。 +5. clean worktree 下 scheduler gate PASS。 +6. 若 `AI_CONTRACT_WATCHDOG_WEBHOOK_URL` 存在,真实外部投递 PASS。