Session 2026-09-15 code: imap_client (auth+metrics), handlers (TG date format), cron fix (venv python), openspec imap-realtime-sync proposal

This commit is contained in:
2026-09-15 17:48:05 +00:00
parent 65c167acc2
commit defcf53d75
10 changed files with 982 additions and 28 deletions
@@ -0,0 +1,27 @@
# email-attachments Specification
## MODIFIED Requirements
### Requirement: Вложения сохраняются в каталог письма
Для каждого письма с вложениями (флаг `has_attachment: true` в frontmatter)
вложения MUST быть сохранены в подкаталог `attachments/` каталога письма
(`/opt/hermes/email/<folder>/YYYY/MM/<uid>/attachments/`). Скачивание выполняется
как при опросе по расписанию (текущее поведение), так и при событийной
синхронизации (сервис `imap-realtime-sync`). Скачивание вложений MUST NOT
выставлять флаг `\Seen`.
#### Scenario: Письмо с вложением архивировано
- **WHEN** `mail_archive.py` заархивировал письмо с `has_attachment: true`
- **THEN** файлы вложений лежат в `<msg_dir>/attachments/` и совпадают с вложениями на IMAP-сервере
#### Scenario: Вложения при событийной синхронизации
- **GIVEN** новое письмо с вложением обнаружено сервисом `email-imap-stream`
- **WHEN** письмо архивируется по событию IDLE
- **THEN** вложения скачаны в `<msg_dir>/attachments/`, флаг `\Seen` не выставлен
#### Scenario: Вложения при reconcile
- **GIVEN** письмо с вложением было пропущено (обрыв соединения)
- **WHEN** сервис выполняет reconcile
- **THEN** вложения докачиваются в `<msg_dir>/attachments/` (то же поведение,
что существующий `--attachments-backfill`)