Some checks failed
CD Pipeline / deploy (push) Failing after 3m24s
架構(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>
72 lines
3.5 KiB
Markdown
72 lines
3.5 KiB
Markdown
# 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` |
|
||
| 部署模式 | sync(Python 變動 ~30s)/ rebuild(Dockerfile 變動) |
|
||
| 健康檢查 | `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 文件或統帥的直接指示。
|