-- ============================================================================
-- Carboany Harness System — 방법론 임베딩 (Vector DB)
-- Migration: 007_methodology_embeddings
--
-- 설계 원칙:
--   1. pgvector: 방법론 설명 텍스트의 시맨틱 검색
--   2. CDM/K-VER/GS/VCS 레지스트리 통합 관리
--   3. Ollama 또는 OpenAI 임베딩 모델 연동
-- ============================================================================

-- pgvector 확장 활성화 (슈퍼유저 권한 필요)
CREATE EXTENSION IF NOT EXISTS vector;

-- ────────────────────────────────────────────────────────────────────────────
-- 1. 방법론 임베딩 (Methodology Embeddings)
--    활동 유형 설명 → 최적 방법론 자동 매칭용 벡터 저장소
-- ────────────────────────────────────────────────────────────────────────────

CREATE TABLE methodology_embeddings (
    id                  UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    methodology_code    VARCHAR(50) NOT NULL,         -- 예: 'CDM-AMS-III.AJ', 'K-VER-Energy'
    name                VARCHAR(300) NOT NULL,         -- 방법론 정식 명칭
    registry            VARCHAR(30) NOT NULL
                            CHECK (registry IN ('CDM', 'K-VER', 'GS', 'VCS')),
    description         TEXT,                          -- 방법론 설명 (임베딩 원본)
    embedding           vector(1536) NOT NULL,         -- 임베딩 벡터 (OpenAI ada-002 / Ollama)
    metadata            JSONB,                         -- 추가 메타 (적용 가능 활동 유형, 배출 계수 등)
    created_at          TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP NOT NULL
);

-- 코사인 유사도 검색용 인덱스 (IVFFlat — 1000개 미만 레코드)
CREATE INDEX idx_methodology_embedding ON methodology_embeddings
    USING ivfflat (embedding vector_cosine_ops) WITH (lists = 10);

CREATE INDEX idx_methodology_code ON methodology_embeddings(methodology_code);
CREATE INDEX idx_methodology_registry ON methodology_embeddings(registry);
