Files
ewoooc/CLAUDE.md
ogt 77d3a1da48
Some checks failed
CD Pipeline / deploy (push) Failing after 3m24s
feat(ai-ops): ADR-013 AIOps 自動修復閉環完整實作
架構(Exception → Incident → PlayBook → Heal → KM → Telegram):

新增元件:
- database/autoheal_models.py: Incident/Playbook/HealLog 三張表 + 7 條種子 PlayBook
- migrations/013_autoheal.sql: 建表 DDL + 種子資料(冪等 INSERT)
- services/auto_heal_service.py: 核心引擎 7 步閉環
  - _classify_error: 8 類錯誤自動分類 (DNS_FAIL/DB_UNREACHABLE/OOM/...)
  - _match_playbook: error_type + keyword + 冷卻 + max_retries 保護
  - _execute_playbook: DOCKER_RESTART/SSH_CMD/ALERT_ONLY/WAIT_RETRY
  - _sink_to_km: 修復知識寫入 ai_insights (auto_heal_playbook)
  - SSH 白名單:僅允許 docker restart / compose restart / docker start

修改元件:
- database/manager.py: _init_autoheal_tables() 啟動時建表+種子 PlayBook
- scheduler.py: 3 個核心任務植入 handle_exception
  (run_auto_import_task / run_icaim_analysis_task / run_weekly_strategy_task)
- requirements.txt: paramiko(SSH 跳板;不可用時降級 subprocess+CLI ssh)

安全設計: CMD 白名單 + cooldown + max_retries escalation + DB 冪等 migration

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 16:03:49 +08:00

72 lines
3.5 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.
# EwoooC (MOMO Pro System) — 核心索引
> **版本**: V10.4 | **目標**: AI 驅動 MOMO 商品監控、業績分析、策略自動化與 AIOps 自愈
## 治理
- **憲法**: [CONSTITUTION.md](CONSTITUTION.md) — 所有開發必須遵守
- **ADR**: [docs/adr/](docs/adr/)
- **AI 策略師**: `services/openclaw_strategist_service.py` (Gemini 2.0)
## 環境
| 主機 | IP | 角色 |
|------|----|------|
| 110 (Gateway) | `192.168.0.110` | Nginx, Gitea, n8n, Superset |
| 188 (App/AI) | `192.168.0.188` | EwoooC App, DB, Ollama多專案共存見 ADR-011 |
## 核心容器(三動一 DB缺一不可
| 容器 | 角色 | 啟動入口 |
|------|------|---------|
| `momo-pro-system` | Flask/Gunicorn 主應用 | `app.py`(手動 docker run 歷史債,見 ADR-011 |
| `momo-scheduler` | 13 個排程任務(爬蟲/AI/備份/通知) | `run_scheduler.py` |
| `momo-telegram-bot` | Telegram 互動 + 每日 09:00 推播 | `run_telegram_bot.py`(根目錄副本) |
| `momo-db` | PostgreSQL + pgvector | compose service `momo-postgres` |
## 常用指令
```bash
# 本地開發
source venv/bin/activate && python app.py
# 部署(標準)→ push 即自動部署Gitea Actions同時重啟三容器
git push origin main
# 🔍 診斷黃金三句(任何 Telegram/排程異常先跑)
ssh wooo@192.168.0.110 "ssh ollama@192.168.0.188 \"\
docker ps --format '{{.Names}} | {{.Status}}' | grep momo-; \
docker exec momo-scheduler env | grep -iE 'TELEGRAM|NVIDIA'; \
docker logs momo-scheduler --since 1h | grep -E 'Telegram|Error' | tail -10\""
# 🆘 緊急重建單容器(不影響 momo-db 資料)
ssh wooo@192.168.0.110 "ssh ollama@192.168.0.188 \"\
cd /home/ollama/momo-pro && docker compose up -d --no-deps --force-recreate <service>\""
# ⚠️ 禁用 --remove-orphans會清掉 momo-db見 ADR-011
```
## CI/CD
| 項目 | 說明 |
|------|------|
| Gitea Repo | `http://192.168.0.110:3001/wooo/ewoooc` (Public) |
| CD Pipeline | `.gitea/workflows/cd.yaml` |
| 部署模式 | syncPython 變動 ~30s/ rebuildDockerfile 變動) |
| 健康檢查 | `https://mo.wooo.work/health` |
| Runner | `wooo-runner`user-level服務所有 wooo/* repo |
| 通知 | Telegram部署開始/成功/失敗) |
| 參考 | ADR-010 |
## 文檔索引
| 類型 | 路徑 |
|------|------|
| 部署 SOP | [docs/guides/deployment_sop.md](docs/guides/deployment_sop.md) |
| DevOps 手冊 | [docs/guides/devops_handbook.md](docs/guides/devops_handbook.md) |
| Google Drive | [docs/guides/google_drive_setup.md](docs/guides/google_drive_setup.md) |
| 歷史日誌 | [docs/memory/history_logs.md](docs/memory/history_logs.md) |
| 憑證對照表 | [docs/memory/credentials_passbook.md](docs/memory/credentials_passbook.md) |
| AIOps 存檔 | [docs/external/aiops_saas.md](docs/external/aiops_saas.md) |
| 跨專案隔離(**必讀**| [docs/adr/ADR-011-cross-project-resource-isolation.md](docs/adr/ADR-011-cross-project-resource-isolation.md) |
| **AIOps 自動修復ADR-013** | [docs/adr/ADR-013-aiops-autoheal.md](docs/adr/ADR-013-aiops-autoheal.md) |
## AI 開發鐵律Token 優化)
1. **狙擊手模式**:禁止在未獲授權的情況下,使用 `ls`, `grep`, `cat` 等指令在專案內進行盲搜。
2. **精準打擊**:統帥給定任務時,若已明確指出目標檔案路徑,請直接修改該檔案,嚴禁漫無目的地掃描其他關聯模組。
3. **上下文克制**:不要主動讀取超過 300 行以上的檔案,除非統帥明確要求。需要理解架構時,優先依賴本專案的 SOT 文件或統帥的直接指示。