feat(library): Phase 2A facet 탐색 기반 — 컬럼 + API + 필터

documents 테이블에 facet_company/topic/year/doctype 4개 축 추가.
facet_values 사전 테이블 + CRUD API.
facet-counts 집계 API (교차 필터링 지원).
문서 목록 API에 facet 필터 파라미터 추가.
DocumentResponse/DocumentUpdate 스키마에 facet 필드 포함.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-04-15 10:09:25 +09:00
parent 32aab7784b
commit ba19c6fb79
14 changed files with 259 additions and 2 deletions
+1
View File
@@ -0,0 +1 @@
ALTER TABLE documents ADD COLUMN IF NOT EXISTS facet_company TEXT
+1
View File
@@ -0,0 +1 @@
ALTER TABLE documents ADD COLUMN IF NOT EXISTS facet_topic TEXT
+1
View File
@@ -0,0 +1 @@
ALTER TABLE documents ADD COLUMN IF NOT EXISTS facet_year INT
+1
View File
@@ -0,0 +1 @@
ALTER TABLE documents ADD COLUMN IF NOT EXISTS facet_doctype TEXT
+1
View File
@@ -0,0 +1 @@
CREATE INDEX IF NOT EXISTS idx_documents_facet_company ON documents (facet_company) WHERE facet_company IS NOT NULL
+1
View File
@@ -0,0 +1 @@
CREATE INDEX IF NOT EXISTS idx_documents_facet_topic ON documents (facet_topic) WHERE facet_topic IS NOT NULL
+1
View File
@@ -0,0 +1 @@
CREATE INDEX IF NOT EXISTS idx_documents_facet_year ON documents (facet_year) WHERE facet_year IS NOT NULL
+1
View File
@@ -0,0 +1 @@
CREATE INDEX IF NOT EXISTS idx_documents_facet_doctype ON documents (facet_doctype) WHERE facet_doctype IS NOT NULL
+7
View File
@@ -0,0 +1,7 @@
CREATE TABLE IF NOT EXISTS facet_values (
id BIGSERIAL PRIMARY KEY,
facet_type TEXT NOT NULL,
value TEXT NOT NULL,
is_system BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
)
+1
View File
@@ -0,0 +1 @@
CREATE UNIQUE INDEX IF NOT EXISTS uq_facet_values_type_value ON facet_values (facet_type, value)