Files
awoooi/docs/superpowers/specs/2026-04-02-knowledge-base-design.md
OG T 5959855a71
Some checks failed
E2E Health Check / e2e-health (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
feat(web): 字體系統升級 + NemoClaw SVG 還原 + Knowledge Base 設計文件
- 字體:Syne (標題) + DM Mono (內文) + VT323 (品牌點陣),替換 Inter
- Tailwind: fontFamily 更新 + 5 層文字色彩 token (primary→disabled)
- Sidebar: NemoClaw 白瓷龍蝦爪 SVG + AWOOOI 用 VT323 放大
- OpenClaw Panel: 還原 NemoClaw 3D 白瓷龍蝦爪 (替換 NemoNodeAnimation)
- Knowledge Base 設計文件 (B分離/A K8s Job/Phase1跳過向量搜尋)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 00:48:42 +08:00

5.6 KiB
Raw Blame History

Knowledge Base 設計文件

版本: v1.0 日期: 2026-04-02 作者: ogt + Claude Code 狀態: 已批准,待實作


背景與目標

打造 AWOOOI 知識庫系統,讓工程師與 AI 管理人員可查閱 SRE 知識,同時作為 OpenClaw 決策的 Context 來源。

已確認決策:

  • 使用者:工程師 + AI 管理人員
  • 知識來源AI 自動萃取為主,人工審核補充
  • 用途:人工查閱 + AI 自動引用(兩者兼備)
  • 資料結構:兩層架構(底層知識條目 + Playbook 為特殊關聯)
  • UI左側分類導航 + 頂部搜尋 + 右側詳情

架構決策

項目 決策 理由
Playbook 邊界 分離,用 related_playbook_id 關聯 執行語意 ≠ 查閱知識,職責不同
Migration K8s Job(沿用現有方式) 4 個 tableAlembic 是過度工程
Vector Search Phase 1 跳過,關鍵字 + tag Phase 2 再評估 pgvector

資料模型

KnowledgeEntry新 PostgreSQL table

CREATE TABLE knowledge_entries (
  id              UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  title           VARCHAR(255) NOT NULL,
  content         TEXT NOT NULL,           -- Markdown
  entry_type      VARCHAR(50) NOT NULL,    -- 'incident_case' | 'runbook' | 'best_practice' | 'postmortem'
  category        VARCHAR(100) NOT NULL,   -- 對應左側分類樹
  tags            JSONB DEFAULT '[]',      -- string[]
  source          VARCHAR(20) NOT NULL,    -- 'ai_extracted' | 'human'
  status          VARCHAR(20) NOT NULL DEFAULT 'draft', -- 'draft' | 'review' | 'approved'
  related_incident_id UUID REFERENCES incidents(id) ON DELETE SET NULL,
  related_playbook_id VARCHAR(255),        -- Playbook Redis key非 FK
  view_count      INTEGER DEFAULT 0,
  created_by      VARCHAR(100),
  created_at      TIMESTAMPTZ DEFAULT NOW(),
  updated_at      TIMESTAMPTZ DEFAULT NOW()
);

CREATE INDEX idx_knowledge_entries_type     ON knowledge_entries(entry_type);
CREATE INDEX idx_knowledge_entries_category ON knowledge_entries(category);
CREATE INDEX idx_knowledge_entries_status   ON knowledge_entries(status);

entry_type 分類

type 說明
incident_case AI 從 Incident 萃取的案例分析
runbook 手動建立的操作手冊
best_practice 最佳實踐文章
postmortem 事後分析報告

category 分類樹(左側導航)

全部
├── 基礎設施
│   ├── K8s / K3s
│   ├── 資料庫
│   └── 網路
├── 應用層
│   ├── API 服務
│   └── 前端
├── AI 系統
│   ├── OpenClaw
│   └── Playbook
└── 安全 / 合規

API 設計

Base path: /api/v1/knowledge

Method Path 說明
GET / 列表(支援 category, type, status, q 搜尋, tags 篩選)
GET /{id} 單筆(同時 view_count +1
POST / 建立新條目
PATCH /{id} 更新(含狀態流轉)
POST /{id}/approve 審核通過status: draft/review → approved
DELETE /{id} 軟刪除status → archived
GET /categories 取得分類樹(含各類數量)
GET /search 關鍵字搜尋title + content + tags

後端分層架構

遵循 leWOOOgo 積木化原則:

apps/api/src/
├── db/models.py              # 新增 KnowledgeEntry ORM class
├── models/knowledge.py       # Pydantic Schema (Request/Response)
├── repositories/
│   ├── interfaces.py         # 新增 IKnowledgeRepository Protocol
│   └── knowledge_repository.py  # PostgreSQL CRUD 實作
├── services/
│   └── knowledge_service.py  # 業務邏輯搜尋、狀態流轉、view_count
└── api/v1/
    └── knowledge.py          # Routerprefix /knowledge

前端設計

頁面結構

/knowledge-base
├── 左側分類導航 (w-52, 固定)
│   ├── 全部 (N)
│   ├── 基礎設施 (N)
│   ├── 應用層 (N)
│   ├── AI 系統 (N)
│   └── 安全/合規 (N)
├── 主區域
│   ├── 頂部搜尋欄 + 篩選 (type / source / status)
│   ├── 結果列表
│   │   └── KnowledgeCard (title, type badge, tags, view_count, 相關 Playbook)
│   └── 空態
└── 右側詳情 Panel (抽屜式,點擊條目開啟)
    ├── 標題 + meta
    ├── Markdown 渲染
    ├── 相關 Playbook 連結
    └── 審核操作approve / 回 review

KnowledgeCard

┌─────────────────────────────────────────┐
│ [type badge]  標題文字               👁 12 │
│ category · source · 2026-04-01          │
│ [tag] [tag] [tag]                       │
│ 🔗 相關 Playbook: restart-api-server    │
└─────────────────────────────────────────┘

狀態標示

status 顯示 顏色
draft 草稿 gray
review 審核中 warning
approved 已批准 healthy

Migration K8s Job

參考 k8s/jobs/migrate-phase18-audit-logs.yaml,建立:

k8s/jobs/migrate-knowledge-entries.yaml

執行 CREATE TABLE knowledge_entries ... + index。


Phase 2未來

  • pgvector 語意搜尋
  • OpenClaw 在評估 Incident 時自動 RAG 查詢 Knowledge Base
  • Embedding 自動化(建立 entry 時觸發)