Files

51 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# email-storage-format Specification
## Purpose
Формат хранения архива писем: `email.md` (YAML-frontmatter + текст) в структуре
`/<folder>/YYYY/MM/<uid>/`, выбранный по итогам анализа STORAGE_ANALYSIS.md
(9 критериев: полнота заголовков, инкрементальность, идемпотентность, удобство
поиска и др.). Хранит полные заголовки письма в frontmatter и тело как Markdown;
доп. поля (classification, handled_*, attachments) расширяют frontmatter без
изменения формата.
## Requirements
### Requirement: REQ-EMA-STORAGE-001: Обоснование выбора формата хранения
**MUST** — проект должен содержать документ `STORAGE_ANALYSIS.md` в корне
`/opt/hermes/email-assistant/`, объективно сравнивающий текущий формат
хранения (`email.md` в `/<folder>/YYYY/MM/UID/`) с Maildir, MBOX и notmuch.
#### Scenario: Документ анализа существует
**GIVEN** файл `STORAGE_ANALYSIS.md` существует
**WHEN** его открывают
**THEN** он содержит:
- таблицу сравнения по критериям (производительность, устойчивость, интеграция,
пригодность для LLM, совместимость с MUA, масштабируемость, бэкапы)
- явную рекомендацию (остаться на текущем / мигрировать на Maildir / иное)
- обоснование рекомендации с учётом мотивации пользователя (локальная LLM
в скриптах, без облака)
### Requirement: REQ-EMA-STORAGE-002: Ссылка из README
**MUST** — `README.md` проекта должен содержать ссылку на `STORAGE_ANALYSIS.md`.
#### Scenario: README содержит ссылку
**GIVEN** `README.md` проекта
**WHEN** открываем его
**THEN** в разделе «Оценка альтернатив» (или аналогичном) есть ссылка
`[Анализ формата хранения (ФС vs Maildir)](STORAGE_ANALYSIS.md)`.
### Requirement: REQ-EMA-STORAGE-003: Без изменения данных
**MUST** — change не должен модифицировать, мигрировать или удалять
существующие письма в `/opt/hermes/email/`. Анализ — только документация.
#### Scenario: Архив не изменён
**GIVEN** архив `/opt/hermes/email/`
**WHEN** change применён
**THEN** файлы писем остаются без изменений (проверка: `find /opt/hermes/email -name 'email.md' | wc -l` — то же число, что и до change).