Files
hyungi_document_server/migrations/259_documents_source_external_id.sql
T
hyungi c49047bf2a feat(email): schema for email source_external_id + metadata
migrations 259~261:
- documents.source_external_id TEXT NULL (email 에선 always non-null, ingest 책임)
- documents.email_metadata JSONB NULL (from/to/cc/subject/folder/uidvalidity/uid/received_at/attachments)
- partial unique on (source_external_id) WHERE source_channel = email AND source_external_id IS NOT NULL

ORM:
- Document.source_external_id / email_metadata mapped_column 추가

dedup 진실원장 = DB unique index. server-side IMAP \\Seen flag 는 best-effort.
mailplus_archive 의 INBOX root archive row 는 source_external_id=NULL 이라 unique 에서 자연 제외.

plan: ~/.claude/plans/document-enchanted-candy.md
2026-05-12 06:56:23 +00:00

8 lines
412 B
SQL

-- PR-4 Email Ingest — documents.source_external_id 컬럼 추가
-- 외부 source 의 dedup key. email source 에서는 always non-null (ingest 코드 책임).
-- Message-ID 정규화 또는 imap:{folder}:{uidvalidity}:{uid} fallback.
-- 다른 source_channel 에서는 NULL 허용 (별 의미 부여 시 nullable→unique 검토).
ALTER TABLE documents
ADD COLUMN IF NOT EXISTS source_external_id TEXT;