Files

26 lines
1.8 KiB
Markdown

# email-classification Specification
## MODIFIED Requirements
### Requirement: Классификация каждого нового письма
Классификация писем (Qwen3:8b через Ollama) MUST запускаться не только по
расписанию (cron `mail-classify-handlers`), но и по событиям из ChangeLog
(новое письмо / изменённое письмо), которые генерирует сервис
`email-imap-realtime-sync`. Механика классификации (теги info/urgent/task/meeting
+ `classification`/`classification_reason` в frontmatter) не меняется.
#### Scenario: Новое письмо после архивации
- **GIVEN** письмо заархивировано (`mail_archive.py`)
- **WHEN** `email_classifier.py` обрабатывает письмо
- **THEN** в frontmatter появляются `classification` и `classification_reason`
#### Scenario: Новое письмо классифицируется сразу
- **GIVEN** в ChangeLog появилось событие `added`
- **WHEN** анализатор `email-change-analyzer` обрабатывает событие
- **THEN** письмо классифицируется (тег + обоснование в frontmatter) без ожидания cron
#### Scenario: Событие обработано повторно (идемпотентность)
- **GIVEN** письмо уже классифицировано (есть `classification` в frontmatter)
- **WHEN** анализатор видит то же событие повторно (например, после рестарта)
- **THEN** классификация не выполняется заново (идемпотентно, как сейчас)