-- KIMS API 로그 테이블 스키마
-- AI 학습 데이터로 활용 예정

-- 1. API 호출 로그 (메인)
CREATE TABLE IF NOT EXISTS kims_api_logs (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    
    -- 호출 컨텍스트
    pre_serial TEXT,                    -- 처방번호
    user_id INTEGER,                    -- 마일리지 회원 ID (있으면)
    source TEXT DEFAULT 'admin',        -- 호출 소스 (admin, api, batch 등)
    
    -- 요청 데이터
    request_drug_codes TEXT NOT NULL,   -- JSON: ["055101150", "622801610"]
    request_drug_names TEXT,            -- JSON: ["오메프투캡슐", "락소펜엠정"]
    request_drug_count INTEGER,         -- 요청 약품 수
    
    -- 응답 데이터
    api_status TEXT NOT NULL,           -- SUCCESS, ERROR, TIMEOUT
    http_status INTEGER,                -- HTTP 상태 코드
    response_time_ms INTEGER,           -- 응답 시간 (밀리초)
    
    -- 상호작용 결과
    interaction_count INTEGER DEFAULT 0,     -- 발견된 상호작용 수
    has_severe_interaction INTEGER DEFAULT 0, -- 심각한 상호작용 여부 (1/2 등급)
    
    -- 상세 데이터 (JSON)
    interactions_json TEXT,             -- 상호작용 상세 정보 JSON
    response_raw TEXT,                  -- 전체 API 응답 (디버깅/학습용)
    
    -- 에러 정보
    error_message TEXT
);

-- 2. 상호작용 상세 (정규화, AI 학습용)
CREATE TABLE IF NOT EXISTS kims_interactions (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    log_id INTEGER NOT NULL,            -- kims_api_logs.id FK
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    
    -- 약품 1
    drug1_code TEXT NOT NULL,
    drug1_name TEXT,
    drug1_generic TEXT,                 -- 성분명 (영문)
    
    -- 약품 2
    drug2_code TEXT NOT NULL,
    drug2_name TEXT,
    drug2_generic TEXT,                 -- 성분명 (영문)
    
    -- 상호작용 정보
    severity_level INTEGER,             -- 1=심각, 2=중등도, 3=경미, 4=참고
    severity_desc TEXT,                 -- 심각도 설명 (중증, 경미 등)
    likelihood_level INTEGER,           -- 발생 가능성
    likelihood_desc TEXT,
    
    -- 상세 설명 (AI 학습 핵심 데이터)
    observation TEXT,                   -- 상호작용 설명 (한글)
    observation_generic TEXT,           -- 일반적 설명
    clinical_management TEXT,           -- 임상적 관리 방법
    action_to_take TEXT,                -- 권장 조치
    reference TEXT,                     -- 참고문헌
    
    FOREIGN KEY (log_id) REFERENCES kims_api_logs(id)
);

-- 인덱스
CREATE INDEX IF NOT EXISTS idx_kims_logs_created ON kims_api_logs(created_at);
CREATE INDEX IF NOT EXISTS idx_kims_logs_pre_serial ON kims_api_logs(pre_serial);
CREATE INDEX IF NOT EXISTS idx_kims_logs_status ON kims_api_logs(api_status);
CREATE INDEX IF NOT EXISTS idx_kims_interactions_log ON kims_interactions(log_id);
CREATE INDEX IF NOT EXISTS idx_kims_interactions_drugs ON kims_interactions(drug1_code, drug2_code);
CREATE INDEX IF NOT EXISTS idx_kims_interactions_severity ON kims_interactions(severity_level);

-- 통계 뷰
CREATE VIEW IF NOT EXISTS kims_stats AS
SELECT 
    DATE(created_at) as date,
    COUNT(*) as total_calls,
    SUM(CASE WHEN api_status = 'SUCCESS' THEN 1 ELSE 0 END) as success_count,
    SUM(CASE WHEN interaction_count > 0 THEN 1 ELSE 0 END) as with_interaction,
    SUM(CASE WHEN has_severe_interaction = 1 THEN 1 ELSE 0 END) as with_severe,
    AVG(response_time_ms) as avg_response_ms
FROM kims_api_logs
GROUP BY DATE(created_at);
