feat(mail): DB 저장 + 주기 동기화 + 전체 히스토리 수집 + 메일 숨김
build-and-push / build (push) Successful in 33s

- ProjectMailMsg(헤더 저장)·ProjectMailState(동기화 상태) 모델, AutoMigrate 등록
- mailsync.FetchForDomain: nextPageToken 따라 전체 히스토리 페이지네이션(maxPerBox=0=전부)
- 백그라운드 주기 동기화 StartMailSyncLoop(MAIL_SYNC_INTERVAL 기본 15m, 0=비활성)
  · 미동기화 프로젝트=full 백필, 이후=최신 페이지 top-up
- GET /mails는 DB에서 읽어 참여자(from/to/cc) 필터 + 공동 메모 인라인 결합 + lastSyncedAt
- POST /mails/sync(강제 풀싱크), PUT /mail-hide(프로젝트 단위 숨김)
- mailCache 제거(DB가 캐시), config MailSyncInterval

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
theorose49
2026-06-30 12:44:31 +09:00
co-authored by Claude Opus 4.8
parent b4b47e5ed1
commit c865baccd2
8 changed files with 281 additions and 79 deletions
+1
View File
@@ -49,6 +49,7 @@ func main() {
pusher := push.New(cfg.FCMCredentialsFile)
mailer := mailsync.New(cfg.GoogleSACredentialsFile)
router := httpapi.NewRouter(gdb, store, cfg, pusher, mailer)
httpapi.StartMailSyncLoop(context.Background(), gdb, mailer, cfg.MailSyncInterval)
addr := ":" + cfg.Port
srv := &http.Server{