- external-sentinel: if: false
- telegram-connectivity: if: false
Reason: GitHub account payment/spending limit restrictions
Only self-hosted runner jobs remain active
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Industry-standard AIOps UX patterns:
- Compact approval list in right panel
- SlidePanel for details (PagerDuty/ServiceNow style)
- Keyboard navigation (←/→ for prev/next, ESC to close)
- Quick access to approve/reject
- Maintains context while reviewing details
Fixes large empty space issue and endless scrolling.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fixes existing approvals created before b645981 that lack
corresponding incidents. Ensures "活躍事件" count matches
"待簽核" count.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sentry Tunnel is a Next.js API Route, not FastAPI endpoint.
Must be handled by frontend server to avoid 404.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
原錯誤: 'OpenClawDecision' object has no attribute 'get'
修正: 使用 Pydantic 模型屬性存取 (analysis_result.risk_level.value)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change REDIS_URL from DB 10 to DB 0
- AWOOOI and OpenClaw now share the same Redis database
- Incidents created by OpenClaw visible in AWOOOI UI
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- POST /api/v1/webhooks/alertmanager accepts Prometheus Alertmanager format
- Internal IPs (192.168.x.x, 10.x.x.x) bypass HMAC verification
- Converts Alertmanager alerts to Signal format → Redis Stream
- External IPs must use /signals with HMAC
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Container uses python:3.11-slim without curl
- httpx is already installed as API dependency
- Fixes: "curl: executable file not found in $PATH"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Allow egress to 192.168.0.110:9000 (Sentry Self-Hosted)
- Allow egress to 192.168.0.110:5000 (Harbor Registry)
- Enables Sentry Tunnel API Route to forward errors
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rename to deploy-prod.yml.disabled
- Keep only cd.yaml (v2.0) with full AIOPS features
- See: feedback_single_deploy_workflow.md
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add -c api to specify container name
- Increase sleep to 15s for pod startup
- Add fallback message to prevent workflow failure
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- CI: awoooi-ci service with sha + ci environment
- CD: awoooi-cd service with sha + production environment
- Exports to SignOz at 192.168.0.121:4318
Approved: 2026-03-24 統帥指令
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Root cause: Frontend was compiled with default localhost:8000
instead of production URL https://awoooi.wooo.work
This caused all API calls to fail in production because the
browser tried to call localhost:8000 which doesn't exist.
Next.js NEXT_PUBLIC_* variables are baked in at BUILD TIME,
not runtime, so they must be passed via --build-arg.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Problem: Self-hosted runner (192.168.0.110) cannot resolve
api.awoooi.wooo.work, causing health check to fail even though
deployments succeeded.
Solution:
- Use kubectl get pods to verify Pod is Running
- Use kubectl exec to test internal health endpoint (localhost:8000)
- More reliable than external DNS dependency
This follows mainstream K8s deployment practices.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Changes:
- Add change detection (only build what changed)
- Add skip_api/skip_web manual inputs for selective builds
- Use native Docker BuildKit (remove buildx-action overhead)
- Add local Next.js cache (/home/wooo/build-cache/awoooi/)
- Split build-images into build-api and build-web jobs
Reference: wooo-aiops ci.yml and fast-deploy-uat.yml
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The kustomize edit set image command requires the OLD_IMAGE to match
exactly what's in the deployment YAML files, including the tag.
Changes:
- Use full image name with :IMAGE_TAG_PLACEHOLDER suffix
- Update kustomization.yaml to match deployment YAML format
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>