mirror of
https://gitverse.ru/kpa39l/email-assistant.git
synced 2026-09-29 09:15:09 +00:00
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:
@@ -0,0 +1,26 @@
|
||||
# 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** классификация не выполняется заново (идемпотентно, как сейчас)
|
||||
Reference in New Issue
Block a user