Files
hyungi_document_server/migrations/260_documents_email_metadata.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

10 lines
457 B
SQL

-- PR-4 Email Ingest — documents.email_metadata JSONB 컬럼 추가
-- 구조: {from, to[], cc[], subject, folder, uidvalidity, uid, received_at,
-- mailplus_link, attachments: [{filename, mime, size, part_id}],
-- parse_error?: string}
-- mailplus_archive (기존 INBOX root archive 워커) 가 만든 row 는 NULL 유지.
-- inbox_ingest 가 만든 row 만 채움.
ALTER TABLE documents
ADD COLUMN IF NOT EXISTS email_metadata JSONB;