docs: record phase 7.6 watchdog go-live

This commit is contained in:
Codex
2026-05-01 13:42:12 +08:00
parent feffd5487c
commit 215ee0863f
4 changed files with 223 additions and 2 deletions
+32
View File
@@ -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
@@ -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`。
---
@@ -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、脚本、文档、计划任务命令或产物。
@@ -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。