feat(232): Mail-Scanner-Glue — Auto-Erkennung aus IMAP #236

Merged
admin-mrrm merged 1 commit from feat-232-mail-scanner into main 2026-05-12 22:37:00 +02:00
Owner

Summary

  • MailScannerService verbindet IMAP → TrackingParser → parcel_trackings
  • MailScannerCron läuft alle 15 min (per Env steuerbar)
  • Migration 0011_overjoyed_expediter.sql: mail_accounts.last_scan_at
  • Per-Account-Isolation: ein kaputter Account blockiert den Lauf nicht
  • Dedup via (ownerSub, trackingNumber)
  • 8 neue Specs; alle 187 API-Tests grün

Test plan

  • pnpm --filter api test — 187/187 grün
  • pnpm typecheck für api-client / web / mobile
  • In Dev gegen Live-Mailbox antesten nach Merge + Deploy

Closes #232

## Summary - MailScannerService verbindet IMAP → TrackingParser → `parcel_trackings` - MailScannerCron läuft alle 15 min (per Env steuerbar) - Migration `0011_overjoyed_expediter.sql`: `mail_accounts.last_scan_at` - Per-Account-Isolation: ein kaputter Account blockiert den Lauf nicht - Dedup via `(ownerSub, trackingNumber)` - 8 neue Specs; alle 187 API-Tests grün ## Test plan - [x] `pnpm --filter api test` — 187/187 grün - [x] `pnpm typecheck` für api-client / web / mobile - [ ] In Dev gegen Live-Mailbox antesten nach Merge + Deploy Closes #232
feat(232): Mail-Scanner-Glue — IMAP → TrackingParser → parcel_trackings
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
edeb690c77
- MailScannerService scant alle mail_accounts mit trackingScanEnabled=true,
  ruft IMAP SEARCH SINCE (lastScanAt oder Fallback initialScanDays),
  füttert TrackingParser, dedupliziert via (ownerSub, trackingNumber),
  legt parcel_trackings + optional order_infos an, aktualisiert lastScanAt.
- MailScannerCron läuft alle 15 min (MAIL_SCAN_CRON, MAIL_SCAN_DISABLED).
- ImapService.fetchMessagesSince als generischer Fetch-Helper.
- Migration 0011: mail_accounts.last_scan_at.
- Env-Vars: MAIL_SCAN_CRON, MAIL_SCAN_DISABLED, MAIL_SCAN_INITIAL_DAYS.
- 8 neue Specs + api-client mailAccountSchema mit lastScanAt.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
admin-mrrm/mrrmlabapp!236
No description provided.