# AWOOOI 維運指引

> 維運、部署、CI/CD 的核心原則與規範

## 快速索引

| 主題 | 核心原則 | 詳細章節 |
|------|---------|---------|
| Telegram | 絕對禁止 logOut | [→ Telegram](#telegram-整合) |
| 部署 | Dev + Prod (禁止 UAT) | [→ 部署拓撲](#部署拓撲) |
| CI/CD | self-hosted runner | [→ CI/CD](#cicd) |
| 構建 | Git Clone Only | [→ 構建流程](#構建流程) |

---

## Telegram 整合

**Memory 來源:** `feedback_telegram_token_disaster.md`, `feedback_openclaw_security.md`

### 2026-03-23 災難事件

```python
# ❌ 禁止 - 會導致 Token 永久失效！
await bot.log_out()

# ✅ 正確流程
1. 先停止舊 Bot 的 Long Polling
2. 確認舊 Bot 完全停止
3. 再啟動新 Bot
```

### Long Polling 規則

```
一個 Bot Token 只能有一個 Long Polling 實例！

✅ OpenClaw (192.168.0.188) - 唯一 Polling 實例
❌ AWOOOI API - 只發送，不接收
```

### 心跳監控

```python
# 防止 Telegram 靜默盲點
heartbeat_interval = 30 minutes
silence_threshold = 2 hours

# 超過 2 小時沒訊息 → 主動告警
```

### 安全規則

```
✅ Webhook Secret 驗證
✅ Chat ID 白名單
✅ Rate Limiting
❌ 禁止在 Telegram 傳送敏感資訊 (密碼、Token)
```

---

## 部署拓撲

**Memory 來源:** `feedback_deployment_topology.md`, `feedback_no_uat_environment.md`

### 環境

```
✅ Dev  - 開發環境 (localhost)
✅ Prod - 生產環境 (K3s)
❌ UAT  - 禁止 (資源浪費)
```

### 五主機架構

| Host | IP | 角色 | 服務 |
|------|-----|------|------|
| wooo-nas | 192.168.0.100 | NAS + 監控 | Grafana, ClickHouse |
| wooo-k3s | 192.168.0.101 | K3s Master | API 調度 |
| awoooi-110 | 192.168.0.110 | K3s Worker | GitHub Runner |
| openclaw-188 | 192.168.0.188 | AI 服務 | OpenClaw, Ollama |
| wooo-router | 192.168.0.1 | 路由 | DDNS, 防火牆 |

### Port 分配

```
:3000  - Next.js (Web)
:8000  - FastAPI (API)
:8088  - OpenClaw Legacy
:11434 - Ollama
:8123  - ClickHouse
:3001  - Grafana
:4317  - OTEL gRPC
```

---

## CI/CD

**Memory 來源:** `feedback_github_billing.md`

### 鐵律

```yaml
# ❌ 禁止 - 帳單額度限制
runs-on: ubuntu-latest

# ✅ 正確 - self-hosted runner
runs-on: self-hosted
```

### Self-Hosted Runner

```
位置: 192.168.0.110 (awoooi-110)
名稱: awoooi-110
狀態: 需確認是否在線
```

### 自動檢查

Pre-commit 腳本自動檢查:
```bash
# .claude/hooks/pre-commit-check.sh
grep -r "runs-on: ubuntu-latest" .github/workflows/
```

---

## 構建流程

**Memory 來源:** `feedback_build_from_git_only.md`

### 鐵律

```bash
# ❌ 禁止 - 直接在伺服器編輯
vim /path/to/file.py
nano /path/to/config.yaml

# ✅ 正確 - 只從 Git 部署
git clone → build → deploy
```

### 部署流程

```
1. 本地開發 → 2. git push → 3. CI/CD 構建 → 4. K3s 部署
```

### Docker 構建

```yaml
# Next.js 必須 build-time 注入環境變數
ARG NEXT_PUBLIC_API_URL
ENV NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL}
```

---

## 相關 ADR

- [ADR-005: BFF 架構](adr/ADR-005-bff-architecture.md)
- [ADR-010: Secrets 管理](adr/ADR-010-secrets-management.md)
- [ADR-011: NetworkPolicy 治理](adr/ADR-011-networkpolicy-governance.md)
