18 lines
1.6 KiB
SQL
18 lines
1.6 KiB
SQL
-- 0.8.16: 수신 메일 자동 처리 기록(메일 전달·자동 응답).
|
|||
|
|
-- 설정 화면의 "메일 전달"(지정 주소로 받은 메일 전부 전달)과 "자동 응답"(지정 기간 동안 정해진 메시지로 회신)이
|
||
|
|
-- 메일 한 통에 무엇을 했는지 남깁니다. 같은 메일에 같은 작업을 두 번 하지 않게 (message_id, kind) 를 기본 키로 둡니다
|
||
|
|
-- (웹훅과 동기화가 같은 메일을 거의 동시에 저장하려 할 때, 또는 원본 없이 저장했던 메일을 다시 채울 때 중복 발송 방지).
|
||
|
|
CREATE TABLE auto_actions (
|
||
|
|
message_id TEXT NOT NULL REFERENCES messages(id) ON DELETE CASCADE,
|
||
|
|
kind TEXT NOT NULL CHECK(kind IN ('forward','reply')),
|
||
|
|
mailbox TEXT NOT NULL, -- 작업을 설정한 메일함(받은 메일의 메일함)
|
||
|
|
target TEXT NOT NULL DEFAULT '', -- 전달: 전달한 주소 목록(쉼표 구분) / 자동 응답: 회신한 상대 주소
|
||
|
|
status TEXT NOT NULL CHECK(status IN ('pending','sent','skipped','failed')), -- pending: 처리 중(먼저 행을 넣어 중복 처리를 막음)
|
||
|
|
detail TEXT, -- 건너뛴 이유(loop·stale·recent·bulk …) 또는 오류 메시지, 보냈으면 발송 id
|
||
|
|
sent_message_id TEXT, -- 자동 응답을 보낸 메일함(sent)에 저장한 메시지 id
|
||
|
|
created_at TEXT NOT NULL,
|
||
|
|
PRIMARY KEY(message_id, kind)
|
||
|
|
);
|
||
|
|
-- 자동 응답 "같은 상대에게는 하루 한 번" 검사: 메일함·종류·상대 주소로 최근 기록을 찾습니다.
|
||
|
|
CREATE INDEX auto_actions_target ON auto_actions(mailbox, kind, target, created_at DESC);
|