fix(web): add cheap health probe endpoint
All checks were successful
CD Pipeline / tests (push) Successful in 1m30s
Code Review / ai-code-review (push) Successful in 12s
CD Pipeline / build-and-deploy (push) Successful in 4m34s
CD Pipeline / post-deploy-checks (push) Successful in 1m32s

This commit is contained in:
Your Name
2026-05-31 19:10:31 +08:00
parent fb9e8bffa6
commit 56c8a41e5b
3 changed files with 56 additions and 3 deletions

View File

@@ -0,0 +1,10 @@
import { NextResponse } from 'next/server';
export const dynamic = 'force-dynamic';
export async function GET() {
return NextResponse.json({
status: 'ok',
service: 'awoooi-web',
});
}

View File

@@ -1,3 +1,43 @@
## 2026-05-31Web probe health endpoint 收斂 rollout Smoke 警告
**背景**
- Work Items 稽核鏈 production 驗證後,`59b4943b` post-deploy 雖然成功,但 CI/CD summary 顯示 `Smoke=⚠️`
- 追 K8s events 後確認 rollout 期間 `awoooi-web` 兩個 pod 各重啟 2 次,曾出現 readiness / startup / liveness probe timeout瀏覽器短暫命中 `502 Bad Gateway`rollout settled 後頁面恢復。
- live deployment 的 web probes 打 `/`,而 `/` 會走 Next middleware 與 locale redirect / app shell這不是最小健康檢查面。
**本次調整**
- 新增 `apps/web/src/app/api/health/route.ts`
- 回傳 `{"status":"ok","service":"awoooi-web"}`
- 不讀 production API、不碰資料庫、不經 localized app shell。
- `k8s/awoooi-prod/05-deployment-web.yaml`
- `livenessProbe` / `readinessProbe` / `startupProbe` 全部改打 `/api/health`
- 保留原本 timeout / threshold先降低 probe surface不直接放寬重啟條件。
**驗證**
```text
python3 -m json.tool apps/web/messages/zh-TW.json / en.json -> pass
git diff --check -> pass
pnpm --dir apps/web exec tsc --noEmit --tsBuildInfoFile /tmp/awoooi-web-health-probe-20260531.tsbuildinfo -> pass
python3 scripts/security/security-mirror-progress-guard.py -> SECURITY_MIRROR_PROGRESS_GUARD_OK
kubectl kustomize k8s/awoooi-prod:
awoooi-web liveness/readiness/startup path=/api/health
kubectl kustomize k8s/awoooi-prod | kubectl apply --dry-run=server -f - -> pass
NEXT_PUBLIC_API_URL=https://awoooi.wooo.work pnpm --dir apps/web run build -> pass
local production server:
GET http://127.0.0.1:3107/api/health -> 200 {"status":"ok","service":"awoooi-web"}
GET http://127.0.0.1:3107/ -> 307 /zh-TW
```
**目前整體進度pre-deploy**
- Web rollout / Smoke 穩定性:約 82%;已完成 probe surface 修正,待 Gitea deploy 後驗證 restartCount 是否不再增加。
- 前端 AI 自動化管理介面同步:約 89%Work Items 已 production 驗證probe 修正避免下一輪 UI rollout 造成短暫 502。
- 整體 AI 自動化飛輪:約 74%;本輪是部署穩定性收斂,不改 24h auto-repair claim。
- 24h 完整 AI Agent 自動修復 production claim0%;仍不可宣稱全自動修復閉環。
## 2026-05-31IwoooS 視覺化資安指揮板與 Kali 維護就緒度
**背景**

View File

@@ -70,7 +70,10 @@ spec:
memory: "512Mi"
livenessProbe:
httpGet:
path: /
# 2026-05-31 Codex: probe a cheap API route instead of the
# localized app shell. The shell can block on SSR/middleware
# during rollout and caused transient 502 + liveness restarts.
path: /api/health
port: 3000
initialDelaySeconds: 30
periodSeconds: 10
@@ -78,7 +81,7 @@ spec:
failureThreshold: 3
readinessProbe:
httpGet:
path: /
path: /api/health
port: 3000
initialDelaySeconds: 5
periodSeconds: 5
@@ -87,7 +90,7 @@ spec:
# Phase K0.5: Startup Probe (允許最多 60 秒啟動時間)
startupProbe:
httpGet:
path: /
path: /api/health
port: 3000
initialDelaySeconds: 5
periodSeconds: 5