- 11 записей типа goal закрыты с причиной, называющей задачи-наследники; ROADMAP.md удалён, индекс остался один — BACKLOG.md; - 33 записи переписаны: ссылка «Двигает пункты N «Завершения» цели» уступила место прямому утверждению — без целей номера пунктов вели в никуда; - шапка BACKLOG.md размечена парой <!-- стадия -->, порядок строк теперь объявлен зависимостью, а не важностью.
41 lines
3.0 KiB
Markdown
41 lines
3.0 KiB
Markdown
# ✨ Слать готовый текст на почту из учётной записи
|
||
|
||
- **Тип:** feature
|
||
- **Категория:** Очередь — Второй канал на той же доставке.
|
||
- **Зачем:** Адрес почты приходит вместе с входом через OIDC, но почтового отправителя в сервисе нет.
|
||
|
||
Готовый текст и отказ доходят письмом, а адрес берётся у учётной записи, а не из
|
||
общего конфига.
|
||
|
||
Почта — второй канал рядом с тем, что заводит `ntfy-delivery`; выбор канала
|
||
остаётся в той же единой точке, что и сейчас.
|
||
|
||
## Затрагивает
|
||
|
||
- реализация интерфейса отправителя уведомления — почтовый адаптер;
|
||
- адрес почты из данных учётной записи OIDC и его хранение;
|
||
- выбор канала по настройке пользователя в `completeJob` и `failJob`;
|
||
- секция конфигурации: сервер отправки почты, учётные данные, адрес отправителя;
|
||
- `docs/architecture.md` — внешняя зависимость и чем она отказывает;
|
||
- `docs/security.md` — текст расшифровки уходит на почтовый сервер.
|
||
|
||
## Критерии приёмки
|
||
|
||
- Задача, дошедшая до `done` у пользователя с выбранной почтой, отправляет одно
|
||
письмо на адрес владельца. Оракул — тест с подставным отправителем: ровно один
|
||
вызов, адрес владельца, текст задачи в теле.
|
||
- Недоступный почтовый сервер не мешает задаче завершиться. Оракул — тест с
|
||
отправителем, возвращающим ошибку: задача в `done`, в журнале одна запись
|
||
уровня `WARN`.
|
||
- Отказ задачи доходит письмом тем же человекочитаемым текстом, что видит
|
||
пользователь Telegram. Оракул — тест на ветке `failJob`.
|
||
- Пароль почтового сервера не попадает ни в журнал, ни в текст письма. Оракул —
|
||
тест отправки с перехваченным журналом.
|
||
|
||
## Рамки
|
||
|
||
Берётся после `ntfy-delivery` — интерфейс отправителя заводит она — и после
|
||
`settings-screen`, где канал выбирают. Своего почтового сервера не поднимаем.
|
||
Длинный текст в письме не делится на части: предел сообщения есть у Telegram, а
|
||
не у почты.
|