# AWOOOI 專案開發憲法與行為準則

> **本文件為 AWOOOI 專案的最高行為準則。所有開發成員必須 100% 嚴格遵守，沒有例外！**

---

## 第一章：Triage (傷患分級) 異常處理鐵律

### 🔴 紅燈異常 (立刻停機修復)

以下情況視為紅燈異常，必須**立刻停止所有新功能開發**：

- 架構阻斷
- API 無法連線 (CORS / Failed to fetch)
- 編譯失敗
- 嚴重的資安漏洞 (如 Multi-Sig 邏輯錯誤)

**行為準則：**
> 底層斷了，上面蓋的 UI 也只是壞的。優先修復紅燈，禁止繞過！

### 🟡 黃燈異常 (記錄 Backlog，延後處理)

以下情況視為黃燈異常，不應打斷開發心流：

- UI 排版稍微跑位
- 非關鍵字的 i18n 翻譯遺漏
- 非阻斷性的 Warning

**行為準則：**
> 記錄進 WBS 待辦清單，集中在 Phase 結束前的「Bug Bash」一次解決。

---

## 第二章：0 個 Hardcode 字串與 i18n 清零鐵律

### 最高憲法

**前端 UI 代碼絕對禁止出現任何寫死的中文或英文字串！**

所有 UI 文字必須 100% 透過 `next-intl` 從字典檔提取，包含但不限於：

- 按鈕文字
- 標籤與標題
- 狀態文字
- 列舉值顯示 (如 CRITICAL → 危急)
- 錯誤訊息
- 表單欄位標籤
- Tooltip 與提示文字

### 優先級

| 優先級 | 語系 | 說明 |
|--------|------|------|
| 1 | 繁體中文 (zh-TW) | **最高優先級預設顯示** |
| 2 | 英文 (EN) | 雙軌並行 |

**Hardcoded English 視為開發失敗！**

### 範例

```tsx
// ❌ 錯誤 - Hardcode (違憲)
<span>CRITICAL</span>
<button>Approve</button>
<span>No recent backup!</span>

// ✅ 正確 - 使用 next-intl
const t = useTranslations('risk')
const tDryRun = useTranslations('dryRun')
<span>{t('critical')}</span>
<button>{t('approve')}</button>
<span>{tDryRun('noRecentBackup')}</span>
```

### 違規處理

**違背此規則視為開發失敗，必須立即修正後才能繼續其他任務！**

---

## 第三章：防禦性工程與 Zero Trust 鐵律

### 1. 先質疑，後實作 (Fail Fast & Ask)

遇到以下架構盲區時，**絕對禁止自行假設或使用脆弱的臨時方案**：

- 缺乏認證憑證
- 狀態機定義不完整
- 可能導致資料遺失 (如 In-memory 儲存稽核日誌)

**行為準則：**
> 必須立刻暫停實作，列出選項並向統帥回報 Blocker。

### 2. 零信任預設 (Zero Trust Defaults)

所有環境變數與安全配置，必須預設為最嚴格狀態：

- `MOCK_MODE=False`
- 禁止 CORS `*`
- 禁止重複簽核
- 禁止跳過驗證

### 3. 強制乾跑 (Dry-run Mandatory)

任何牽涉到基礎設施變更的破壞性操作，**必須在程式碼層級實作並呼叫 Dry-run（預檢）機制**：

- K8s API 操作
- SSH 命令執行
- Database Drop/Truncate
- 任何不可逆操作

### 4. 邊界預判 (Edge Case Anticipation)

寫任何邏輯前，必須先思考並實作防呆機制：

- 「如果網路斷線怎麼辦？」→ 重試機制
- 「如果使用者連按兩次怎麼辦？」→ 冪等性設計
- 「如果 K8s API 回應超時怎麼辦？」→ 超時處理

---

## 第四章：CPO 絕對美學與品牌靈魂鐵律

### 1. Pixel-Perfect 細節至上

UI 實作必須嚴格講究：

| 要素 | 標準 |
|------|------|
| Padding/Margin | 必須有「呼吸感」，絕不允許擁擠 |
| Typography | 字體大小與粗細必須建立清晰的視覺層級 |
| 邊框與陰影 | 使用微妙的 border-opacity 與 subtle shadows |
| 質感 | Nothing.tech 那種「通透感與極簡」 |

**禁止事項：**
- 禁止使用預設的、廉價的樣式
- 禁止元素不對齊
- 禁止忽略 hover/active 狀態的視覺回饋

### 2. 生物機械有機進化

IT AI 的 UI 不要硬綁綁！視覺上必須融合：

| 風格來源 | 精髓 |
|----------|------|
| openclaw.ai | 有機、流線、親和力 |
| Nothing.tech | 通透、工業風、極簡 |

**禁止生硬的幾何設計！**

### 3. 品牌靈魂 - Claw 設計語言

AWOOOI 的核心品牌意象為「智慧之眼機械爪 (Mechanical Claw)」：

- Logo 必須體現「Claw」精密抓取的意象
- 側邊欄展開/折疊應模擬爪子開合
- HITL 批准動畫應呈現爪子鎖定的效果
- 顏色基調：純白工業風、金屬光澤、科技感

### 4. CSS 代碼去背 SOP (CRITICAL)

當整合 Raster 圖像 (JPEG/PNG) 資產時：

**絕對禁止直接放上死白貼紙！**

必須強制套用 CSS 技術，將純白背景濾除：

```tsx
// ✅ 正確 - mix-blend-mode 去背
<img
  src="/logo-claw.png"
  className="mix-blend-multiply contrast-[1.1] saturate-[1.1]"
/>

// ✅ 備選 - mask-image 去背
<div
  style={{
    maskImage: 'url(/logo-claw.png)',
    maskSize: 'contain',
    backgroundColor: 'currentColor',
  }}
/>
```

**目標：讓有機設計看起來刻在玻璃 UI 上！**

### 5. 跨界協作 - Gemini 資產生成 SOP

本專案嚴禁使用：
- 醜陋的純文字 Placeholder
- 隨便找的開源 Icon 來充當核心視覺資產

**當需要高質感視覺資產時：**
1. 在終端機輸出一段『給 Gemini 的圖像生成提示詞 (Prompt)』
2. 標註資產規格（尺寸、格式、透明背景需求）
3. 統帥將該提示詞交給 Gemini 生成完美圖檔
4. 收到圖檔後整合至專案（使用 CSS 去背 SOP）

---

## 第五章：開發階段與視覺素材戰略 (Phased Visual Strategy)

### Phase 1 & 2 (當前階段) - 核心引擎與真實數據 (Function over Form)

**絕對禁止**在此階段耗費時間進行：
- UI 打磨
- 複雜 SVG/PNG 素材替換
- 微動畫設計
- Logo 視覺調整

**視覺降級為『乾淨的 Wireframe 級別』**：
- 使用純文字 Typography
- 標準 Tailwind CSS 即可
- 簡潔的 CSS 呼吸燈代替圖片 Logo

**唯一目標**：
1. 100% 真實 API 資料貫通
2. Multi-Sig 邏輯實作
3. i18n 字串清零
4. **消滅所有 Mock Data**

### Phase 4 (未來階段) - 視覺靈魂注入 (Visual Soul Injection)

**啟動條件**：所有後端資料欄位、狀態機與 API **100% 確定不改動**後，才准啟動此階段。

**屆時將統一實作**：
- Q 版、玩具感 (Toy-ish) 的流線型 OpenClaw 品牌資產
- 色彩鮮明的視覺設計
- 精緻的微動畫效果
- 統帥親自批准的品牌視覺素材

---

## 第六章：決策支援協定 (Decision Support Protocol)

### 情報完整性

在遇到需要統帥（使用者）進行重大架構、功能或視覺決策的十字路口時，**絕對禁止只拋出問題而不給予分析**。

### 標準回報格式

任何決策請求，**必須包含以下三個完整板塊**：

#### 1. 現況盤點 (Context)
- 我們現在在哪裡？
- 遇到了什麼瓶頸或機會？
- 相關的技術背景與約束條件

#### 2. 戰略選項 (Options)
列出可行的路線，並詳述各自的優劣：

| 選項 | 優勢 (Pros) | 風險與代價 (Cons) |
|------|-------------|-------------------|
| Path A | ... | ... |
| Path B | ... | ... |
| Path C | ... | ... |

#### 3. 首席架構師的明確建議 (Architect's Recommendation)

AI 必須根據專案的最終目標，給出**一個最推薦的選項**，並附上強而有力的理由：

```
📌 建議選擇：Path X

理由：
1. [具體原因 1]
2. [具體原因 2]
3. [與專案目標的契合度]
```

### 禁止事項

- ❌ 只拋出問題，讓統帥自己想答案
- ❌ 列出選項但不給建議
- ❌ 給出模稜兩可的「都可以」回答
- ❌ 缺乏具體分析的空泛建議

---

## 第七章：視覺資產協作規範 (Asset Collaboration Protocol)

### 1. 前期階段 (當前) - 純代碼視覺鐵律

**絕對禁止**要求統帥（使用者）手動下載、搬運實體圖檔 (PNG/JPG/SVG)。

**替代方案：**

| 場景 | 正確做法 |
|------|----------|
| Logo | 使用 lucide-react 圖示 + CSS Typography (如 `Bot`, `Cpu`, `Brain`) |
| 圖示 | 使用 lucide-react 圖標庫 (`AlertTriangle`, `Shield`, `Server` 等) |
| 狀態指示器 | 使用純 CSS 呼吸燈、脈動效果 (`animate-ping`, `animate-pulse`) |
| 品牌色塊 | 使用 Tailwind 漸層背景 (`bg-gradient-to-br`) |
| Placeholder | 使用高質感的 CSS 色塊 + 字體排版 |

**範例：**

```tsx
// ❌ 錯誤 - 依賴實體圖片
<img src="/logo-claw.png" alt="Logo" />

// ✅ 正確 - 純代碼方案
import { Bot, Sparkles } from 'lucide-react'

<div className="flex items-center gap-3">
  <div className="w-10 h-10 rounded-xl bg-claw-blue/10 flex items-center justify-center">
    <Bot className="w-6 h-6 text-claw-blue" />
  </div>
  <span className="font-mono font-bold tracking-widest">AWOOOI</span>
</div>
```

### 2. 最終階段 (延後執行) - 品牌資產批次替換

**啟動條件**：專案準備正式上線前，所有功能與 API 100% 穩定。

**屆時執行**：
1. 由統帥統一提供高畫質 3D 渲染品牌圖檔
2. 一次性批次替換所有 Placeholder
3. 確保零破損的視覺升級

### 3. 違規處理

- ❌ 嘗試讀取 `/logo-claw.png` 或任何不存在的圖片
- ❌ 要求統帥下載並放入圖片檔案
- ❌ 使用 404 圖片導致 UI 破損

**以上行為視為開發失敗，必須立即修正！**

---

## 附錄：其他強制規則

| 規則 | 說明 |
|------|------|
| 禁止 UAT 環境 | 只有 Dev + Prod |
| API 路由規範 | 使用路徑路由 `/api/v1/` (非子域名) |
| Playwright 測試 | 必須啟用截圖與錄影 |
| 紅燈優先 | 遇到 API 阻斷等紅燈問題，必須優先修復才能開發新功能 |
| 純代碼視覺 | 前期階段使用 lucide-react + CSS，禁止依賴實體圖片 |

---

*最後更新: 2026-03-20*
*版本: 2.3 (加入第七章：視覺資產協作規範)*
