2.9 KiB
Purpose
Скачивание вложений письма в каталог этого письма. Сейчас mail_archive.py
вызывает himalaya attachment download --dir, но правильный флаг в Himalaya —
--downloads-dir, из-за чего команда падает (exit 2), ошибка молча глотается
except: pass, и папка attachments/ всегда пустая. Вложения теряются.
ADDED Requirements
Requirement: Вложения сохраняются в каталог письма
Для каждого письма с вложениями (флаг has_attachment: true в frontmatter)
вложения MUST быть сохранены в подкаталог attachments/ каталога письма
(/opt/hermes/email/<folder>/YYYY/MM/<uid>/attachments/).
Scenario: Письмо с вложением архивировано
- WHEN
mail_archive.pyзаархивировал письмо сhas_attachment: true - THEN файлы вложений лежат в
<msg_dir>/attachments/и совпадают с вложениями на IMAP-сервере
Requirement: Правильный флаг Himalaya
Скачивание вложений MUST использовать флаг --downloads-dir (а не несуществующий
--dir) команды himalaya attachment download, и передавать ему каталог письма.
Scenario: Вызов himalaya с корректным флагом
- WHEN
get_attachments()выполняется для письма - THEN используется
himalaya attachment download --folder <folder> --downloads-dir <msg_dir>/attachments <uid>, exit code 0 при успехе
Requirement: Учёт отсутствия вложений
Если письмо не имеет вложений (has_attachment: false или команда вернула
«нет вложений»), скрипт MUST NOT создавать пустую папку attachments/ и MUST NOT
считать это ошибкой.
Scenario: Письмо без вложений
- WHEN
mail_archive.pyобрабатывает письмо без вложений - THEN каталог
attachments/не создаётся, ошибка не логируется
Requirement: Повторная обработка существующих писем
Повторный запуск mail_archive.py MUST NOT повторно качать уже сохранённые
вложения (проверка по наличию каталога/файлов).
Scenario: Повторный запуск
- WHEN
mail_archive.pyзапущен повторно на письме с уже скачанными вложениями - THEN вложения не скачиваются повторно (идемпотентность)