- порядок беклога и роадмапа назначен слоями: проверки, которым можно верить → долги входа → владелец записи и контракт API → конвейер под тестами → приложение и возможности поверх; у каждого движения записана причина; - заведены восемь задач под пункты «Завершения», которых не закрывала ни одна запись, — цель any-audio-source была без задач вовсе; - у четырёх задач сняты критерии, требовавшие того, что делает задача ниже по очереди; исправлены ссылки на несуществующий repo/sqlite и на отменённую разведку об очереди.
3.1 KiB
3.1 KiB
✨ Слать готовый текст на почту из учётной записи
- Тип: feature
- Категория: Очередь — Второй канал на той же доставке.
- Зачем: Адрес почты приходит вместе с входом через OIDC, но почтового отправителя в сервисе нет.
- Теги: goal:ready-notification
Двигает пункты 1, 2 и 3 «Завершения» цели: готовый текст и отказ доходят письмом, а адрес берётся у учётной записи, а не из общего конфига.
Почта — второй канал рядом с тем, что заводит ntfy-delivery; выбор канала
остаётся в той же единой точке, что и сейчас.
Затрагивает
- реализация интерфейса отправителя уведомления — почтовый адаптер;
- адрес почты из данных учётной записи OIDC и его хранение;
- выбор канала по настройке пользователя в
completeJobиfailJob; - секция конфигурации: сервер отправки почты, учётные данные, адрес отправителя;
docs/architecture.md— внешняя зависимость и чем она отказывает;docs/security.md— текст расшифровки уходит на почтовый сервер.
Критерии приёмки
- Задача, дошедшая до
doneу пользователя с выбранной почтой, отправляет одно письмо на адрес владельца. Оракул — тест с подставным отправителем: ровно один вызов, адрес владельца, текст задачи в теле. - Недоступный почтовый сервер не мешает задаче завершиться. Оракул — тест с
отправителем, возвращающим ошибку: задача в
done, в журнале одна запись уровняWARN. - Отказ задачи доходит письмом тем же человекочитаемым текстом, что видит
пользователь Telegram. Оракул — тест на ветке
failJob. - Пароль почтового сервера не попадает ни в журнал, ни в текст письма. Оракул — тест отправки с перехваченным журналом.
Рамки
Берётся после ntfy-delivery — интерфейс отправителя заводит она — и после
settings-screen, где канал выбирают. Своего почтового сервера не поднимаем.
Длинный текст в письме не делится на части: предел сообщения есть у Telegram, а
не у почты.