Files
awoooi/apps/api/migrations/phase29_pr_reviews.sql
OG T 63e840ae42
Some checks are pending
CD Pipeline / build-and-deploy (push) Has started running
feat(ollama): Phase 31-34 ADR-067 — Log摘要/PR審查/RAG知識庫/圖片分析
Phase 31: log_summary_service.py — deepseek-r1:14b K8s Pod日誌異常摘要
  - 觸發: signoz_webhook 告警時背景呼叫
  - Redis快取 log_summary:{pod}:{date} TTL 24h
  - 敏感資料regex遮蔽

Phase 32: local_code_review_service.py — qwen2.5-coder:7b PR自動審查
  - Fallback: Gemini (diff > 50KB 或 Ollama超時)
  - semaphore 最多2個同時審查
  - 雙寫: Redis TTL 7d + pr_reviews表 (phase29 migration)

Phase 33: knowledge_rag_service.py — nomic-embed-text 768維 pgvector RAG
  - 向量化(188) + 生成(111) 雙Ollama
  - rag_chunks表 (phase28 migration)
  - 初期線性搜尋,>100筆啟用ivfflat索引

Phase 34: image_analysis_service.py — llava:latest Telegram圖片分析
  - download_and_analyze: Bot API getFile → 下載 → llava → 回應
  - Rate limit: 每chat_id每分鐘3次 (Redis sliding window)
  - telegram.py webhook新增photo分支

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 01:50:22 +08:00

22 lines
1.0 KiB
SQL

-- Phase 29 (ADR-067): PR 自動審查記錄表
-- 2026-04-10 Claude Sonnet 4.6 Asia/Taipei
-- 雙寫: Redis TTL 7d (熱) + PostgreSQL 永久 (冷)
CREATE TABLE IF NOT EXISTS pr_reviews (
id SERIAL PRIMARY KEY,
pr_id TEXT NOT NULL, -- Gitea PR number (字串化)
repo TEXT NOT NULL, -- "wooo/awoooi"
title TEXT, -- PR 標題
diff_size_bytes INTEGER, -- diff 大小 (bytes)
model TEXT NOT NULL, -- qwen2.5-coder:7b / gemini-fallback
provider TEXT NOT NULL DEFAULT 'ollama',
review_text TEXT NOT NULL, -- 審查全文
issues_count INTEGER DEFAULT 0, -- 發現問題數
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS ix_pr_reviews_pr_id ON pr_reviews (pr_id);
CREATE INDEX IF NOT EXISTS ix_pr_reviews_created ON pr_reviews (created_at DESC);
COMMENT ON TABLE pr_reviews IS 'PR 自動審查記錄 — Phase 29 ADR-067 (2026-04-10)';