62794b3857
- migration 379: documents +parent_id/doc_kind/clause_code/clause_part/clause_order + clause_links/document_tags - _license_sql 에 doc_kind=standard 필터(절-문서 read/nav 전용, 검색 제외; 전 문서 standard=동작보존) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
38 lines
1.8 KiB
SQL
38 lines
1.8 KiB
SQL
-- 379_asme_clause_kb.sql
|
|
-- ASME 절-지식베이스: 절 = 개별 documents 행(parent_id) + 절↔절 백링크 + 태깅 (additive, idempotent)
|
|
-- 검색 무접촉: 절 doc 은 embedding NULL(벡터 제외) + doc_kind='clause'(retrieval doc-leg 필터로 제외).
|
|
|
|
ALTER TABLE documents
|
|
ADD COLUMN IF NOT EXISTS parent_id bigint REFERENCES documents(id),
|
|
ADD COLUMN IF NOT EXISTS doc_kind text NOT NULL DEFAULT 'standard',
|
|
ADD COLUMN IF NOT EXISTS clause_code text,
|
|
ADD COLUMN IF NOT EXISTS clause_part text,
|
|
ADD COLUMN IF NOT EXISTS clause_order int;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_documents_parent_id ON documents(parent_id) WHERE parent_id IS NOT NULL;
|
|
CREATE INDEX IF NOT EXISTS idx_documents_doc_kind ON documents(doc_kind);
|
|
CREATE INDEX IF NOT EXISTS idx_documents_clause_code ON documents(clause_code) WHERE clause_code IS NOT NULL;
|
|
|
|
-- 절↔절 백링크 (dangling 허용: dst_doc_id nullable)
|
|
CREATE TABLE IF NOT EXISTS clause_links (
|
|
id bigserial PRIMARY KEY,
|
|
src_doc_id bigint NOT NULL REFERENCES documents(id) ON DELETE CASCADE,
|
|
dst_code text NOT NULL,
|
|
dst_doc_id bigint REFERENCES documents(id) ON DELETE SET NULL,
|
|
anchor text,
|
|
ctx text,
|
|
char_off int
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_clause_links_src ON clause_links(src_doc_id);
|
|
CREATE INDEX IF NOT EXISTS idx_clause_links_dst ON clause_links(dst_doc_id) WHERE dst_doc_id IS NOT NULL;
|
|
CREATE INDEX IF NOT EXISTS idx_clause_links_dstcode ON clause_links(dst_code);
|
|
|
|
-- 태깅 (Part 자동 + 주제)
|
|
CREATE TABLE IF NOT EXISTS document_tags (
|
|
doc_id bigint NOT NULL REFERENCES documents(id) ON DELETE CASCADE,
|
|
tag text NOT NULL,
|
|
tag_kind text NOT NULL DEFAULT 'topic',
|
|
PRIMARY KEY (doc_id, tag)
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_document_tags_tag ON document_tags(tag);
|