T06: Mail plugin backend — IMAP/SMTP, threading, templates, rules, PGP, vacation, delegates — 46 tests, 74.56% coverage

- 14 SQLAlchemy models (mail_accounts, mail_folders, mails, attachments, labels, rules, templates, signatures, etc.)
- AES-256 encrypted credential storage
- IMAP sync service (ARQ-ready, sync trigger endpoint)
- SMTP send/reply/forward service
- Mail rule engine (condition matching → move/label/flag/forward)
- Vacation auto-reply with dedup (vacation_sent_log)
- PGP integration (key import, encrypt/decrypt, contact public keys)
- Shared mailboxes with delegate access + send permissions
- HTML sanitization (nh3)
- Full-text search (ILIKE fallback, tsvector-ready)
- Thread grouping via References/In-Reply-To headers
- Template variable substitution
- Contact/company auto-linking from email addresses
- Calendar event creation from mail
- 46 tests covering all 40 acceptance criteria
- Ruff lint clean, format clean
- Full regression: 527 tests pass (0 failures)
This commit is contained in:
leocrm-bot
2026-07-01 15:41:27 +02:00
parent e28d11ff70
commit f646c597dc
13 changed files with 4673 additions and 74 deletions
+5 -11
View File
@@ -1,16 +1,10 @@
{
"project_name": "leocrm",
"phase": "phase-3-implementation",
"status": "T07a_complete_111_tests_build_pass_pushed_22976ab",
"last_commit": "22976ab",
"completed_tasks": [
"T01",
"T02",
"T03",
"T09",
"T07a"
],
"status": "T08b_complete_phase3_5_tasks_remaining",
"last_commit": "7350739",
"completed_tasks": ["T01","T02","T03","T04","T05","T07a","T08b","T09","T11"],
"current_task": null,
"next_task": "T07b",
"updated_at": "2026-06-29T08:04:01+02:00"
}
"updated_at": "2026-06-30T11:47:00+02:00"
}