Files
awoooi/CLAUDE.md
OG T 9145faf24b
Some checks failed
CD Pipeline / build-and-deploy (push) Has been cancelled
E2E Health Check / e2e-health (push) Has been cancelled
docs: 前端內網 IP 禁令 - RCA + Hard Rule v1.6
事故: 2026-03-30 瀏覽器區域網路權限對話框
根因: CD 用 http://192.168.0.125:32334 建置 NEXT_PUBLIC_API_URL

已更新:
- CLAUDE.md: 新增 🔴🔴🔴 前端內網 IP 禁令章節
- HARD_RULES.md: v1.6 新增 Frontend Internal IP 規則
- LOGBOOK.md: RCA 事故回顧

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-30 01:28:38 +08:00

221 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AWOOOI Project Configuration
> Claude Code 自動載入,定義核心原則
---
## 🚨🚨🚨 強制提醒 (每小時自我檢查)
**你有確實執行以下動作嗎?沒有就立刻執行!**
```
□ 讀過 MEMORY.md 索引?
□ 讀過 docs/LOGBOOK.md 最新進度?
□ 讀過 docs/HARD_RULES.md 絕對禁止規則?
□ 涉及特定主題時,讀過對應 feedback_*.md
□ 修改檔案前,讀過該檔案的所有註解? 🔴 NEW
```
**違反後果**: 重複犯錯、統帥需要反覆提醒、信任度下降
---
## 🔴 絕對禁止 (Hard Rules)
**做任何修改前,先讀對應的鐵律文件:**
→ [HARD_RULES.md](docs/HARD_RULES.md)
---
## ⚠️ Session 啟動第一步
**在做任何事之前,先讀:**
1. `MEMORY.md` - 記憶索引
2. `docs/LOGBOOK.md` - 最新進度
3. `docs/HARD_RULES.md` - 絕對禁止規則
4. 涉及主題的 `feedback_*.md`
**不要讓統帥說「你讀過 Memory 了嗎?」**
---
## 四大核心原則
1. **變更前 → 先讀註解** (理解設計意圖再動手) 🔴 NEW
2. **不可逆操作 → 人工確認** (刪除、logOut、DROP、force push)
3. **有疑問 → 先問統帥** (不確定就停下來)
4. **任務完成 → 更新 Memory** (不等被問)
---
## 🔴 紅區治理
**詳細文件:** [RED_ZONES.md](docs/RED_ZONES.md)
**簡述**: Tier 3 核心檔案 (decision_manager, trust_engine, config 等) 修改需首席架構師授權
## 專案架構
- `apps/api/` - FastAPI 後端
- `apps/web/` - Next.js 前端
- `k8s/` - Kubernetes 配置
## 🏗️ 基礎設施參考
→ [SERVICE-ENDPOINTS.md](docs/reference/SERVICE-ENDPOINTS.md) - 五主機架構與服務端點
→ [K3S-OPTIMIZATION-RUNBOOK.md](docs/runbooks/K3S-OPTIMIZATION-RUNBOOK.md) - K3s 維運手冊
## 🔴 Gitea CI/CD (ADR-039)
**從 2026-03-29 起,所有 CI/CD 從 Gitea 執行!**
**詳細文件:** [reference_gitea_mirror.md](~/.claude/projects/-Users-ogt-awoooi/memory/reference_gitea_mirror.md)
| 項目 | 值 |
|------|-----|
| Gitea URL | http://192.168.0.110:3001 |
| 推版方式 | `git push gitea main` |
| Workflows | `.gitea/workflows/` |
| GitHub | 只讀備份,已停用 Actions |
## 🎨 靈感實驗室
→ [INSPIRATION_LAB.md](docs/INSPIRATION_LAB.md) - 學習/模仿/發想/待定案內容
**用途**: 收集外部參考、突發奇想、待討論項目
**分類**: 視覺/UI/UX/風格/功能/工具/服務/突發奇想
**注意**: 內容皆為「待評估」,採用前需統帥批准
## 🛑 修改前
修改以下檔案前,**必須先讀** [HARD_RULES.md](docs/HARD_RULES.md)
- `.github/workflows/*` → GitHub Billing 章節
- `*telegram*` → Telegram Token 章節
- `apps/web/**` → i18n 章節
- Incident/Approval 流程 → 確認 Telegram + DB 鏈路
- **Alertmanager/NetworkPolicy** → ADR-025 告警鏈路 E2E 驗證 🔴🔴
---
## 任務前必讀
涉及以下主題時,**先讀取對應 Memory**
| 主題 | Memory 路徑 |
|------|-------------|
| **變更前必讀** | `feedback_read_comments_first.md` 🔴 先讀註解 |
| **變更註解** | `feedback_change_annotation_standard.md` 🔴🔴 人事物+版本+時區 |
| **重大變更** | `feedback_product_survival_principles.md` |
| Telegram | `feedback_telegram_token_disaster.md` |
| OpenClaw | `feedback_architecture_openclaw_core.md` |
| 命名規範 | `feedback_openclaw_naming.md` |
| i18n | `feedback_i18n_zero_hardcode.md` |
| 防禦性工程 | `feedback_defensive_engineering.md` |
| 模組化 | `feedback_modular_architecture.md` |
| **🔴🔴 積木化強制** | `feedback_lewooogo_modular_enforcement.md` 🔴🔴 修改前 5 問 |
| API 整合 | `feedback_api_response_verification.md` |
| 構建部署 | `feedback_build_from_git_only.md` |
| **測試** | `feedback_no_mock_testing.md` 🔴🔴 禁止 Mock |
| **API 路徑** | `feedback_api_path_naming.md` 🔴 修改需同步前端 |
| **部署驗證** | `feedback_deployment_verification.md` 🔴🔴 必須驗證 Pod 版本 |
| **部署層級** | `feedback_deployment_layer_decision.md` 🔴🔴🔴 主機/容器/K3s 必須評估 |
| **告警鏈路** | `feedback_alertchain_e2e_validation.md` 🔴🔴🔴 Alertmanager→API→Telegram |
| **Telegram Secrets** | `feedback_telegram_secrets_injection.md` 🔴🔴🔴 CD 必須自動注入 K8s Secrets |
| **🔴🔴🔴 前端內網禁令** | `feedback_docker_nextjs_api_url.md` + `feedback_sentry_local_network.md` |
---
## 🔴🔴🔴 前端內網 IP 禁令 (2026-03-30)
**詳細文件:** `feedback_docker_nextjs_api_url.md` + `feedback_sentry_local_network.md`
**絕對禁止** 在 CD 建置時使用內網 IP
```yaml
# ❌ 觸發瀏覽器「存取區域網路」權限對話框
--build-arg NEXT_PUBLIC_API_URL=http://192.168.0.125:32334
--build-arg NEXT_PUBLIC_SENTRY_DSN=http://...@192.168.0.110:9000/2
# ✅ 必須使用公網域名
--build-arg NEXT_PUBLIC_API_URL=https://awoooi.wooo.work
```
**原因**: `NEXT_PUBLIC_*` 是 build-time 變數,會寫死到 JS Bundle
---
## 🔴 部署層級決策
**詳細文件:** [feedback_deployment_layer_decision.md](~/.claude/projects/-Users-ogt-awoooi/memory/feedback_deployment_layer_decision.md)
**簡述**: 部署新服務前必須評估 主機/容器/K3s 層級,禁止直接 `docker run``kubectl apply`
---
## 🔴🔴 leWOOOgo 積木化
**詳細文件:** [feedback_lewooogo_modular_enforcement.md](~/.claude/projects/-Users-ogt-awoooi/memory/feedback_lewooogo_modular_enforcement.md)
**簡述**: 修改 `apps/api/` 前必問 5 題Router 層禁止直接存取 Redis/DB
---
## 🔴🔴🔴 Telegram 告警鏈路 (ADR-035)
**ADR**: [ADR-035-telegram-alert-chain-enforcement.md](docs/adr/ADR-035-telegram-alert-chain-enforcement.md)
**Memory**: [feedback_telegram_secrets_injection.md](~/.claude/projects/-Users-ogt-awoooi/memory/feedback_telegram_secrets_injection.md)
### 強制規則
1. **CD 必須自動注入 K8s Secrets**
- 每次部署都 `kubectl patch secret`
- 禁止依賴 `03-secrets.yaml` 模板值
2. **Pre-flight 必須檢查 Telegram Secrets**
- `OPENCLAW_TG_BOT_TOKEN` 必須存在
- 缺少則 CI 失敗
3. **部署後必須 E2E 驗證**
- 發送測試告警驗證鏈路
- 失敗則繞過 API 直接告警
### 禁止事項
```yaml
# ❌ 禁止: secrets.yaml 使用 CHANGE_ME
OPENCLAW_TG_BOT_TOKEN: "CHANGE_ME"
# ❌ 禁止: CD 不處理 secrets
# (沒有 kubectl patch secret 步驟)
```
---
## Skills 載入
| 任務類型 | Skill 路徑 |
|---------|-----------|
| 前端 | `.agents/skills/01-awoooi-frontend-aesthetics.md` |
| 後端 | `.agents/skills/02-lewooogo-backend-core.md` |
| AI/決策 | `.agents/skills/03-openclaw-cognitive-expert.md` |
| DevOps | `.agents/skills/04-awoooi-devops-commander.md` |
| 測試 | `.agents/skills/05-awoooi-sre-qa.md` |
| Git | `.agents/skills/06-awoooi-monorepo-master.md` |
| Tool 整合 | `.agents/skills/07-tool-integration-expert.md` |
| 模型路由 | `.agents/skills/08-model-router-expert.md` |
| **絞殺者重構** | `.agents/skills/09-strangler-pattern-expert.md` 🆕 |
## Memory 系統
- 長期記憶:`~/.claude/projects/-Users-ogt-awoooi/memory/`
- 索引:`MEMORY.md`
- 進度:`docs/LOGBOOK.md`
## Session 協議
**啟動時**:讀 MEMORY.md → LOGBOOK.md → 確認當前任務
**結束前**:更新相關 Memory → 更新 LOGBOOK → 標記下一步