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
453 B
SQL
8 lines
453 B
SQL
-- PR-4 Email Ingest — partial unique on (source_external_id) for email source
|
|
-- inbox_ingest 의 dedup 진실원장. 같은 메일 재 ingest 시 ON CONFLICT DO NOTHING.
|
|
-- mailplus_archive 의 INBOX root archive row 는 source_external_id=NULL 이라 자동 제외.
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS uq_documents_email_source_external_id
|
|
ON documents (source_external_id)
|
|
WHERE source_channel = 'email' AND source_external_id IS NOT NULL;
|