c49047bf2a
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
8 lines
412 B
SQL
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;
|