tasks: целевая картина пересобрана — три цели, тринадцать задач, сдвинутые границы
- паспорт: сервис объявлен архивом с бессрочным хранением записей и текстов, машинная вычитка расшифровки внутри границ, приложение — основной вход; добавлены две границы: не файловое хранилище общего назначения и не биллинг; - заведены цели upload-reliability, user-settings, usage-stats и тринадцать задач; очередь пересобрана — сперва починки, затем разведки о хранилище, затем доступ и владелец, и только потом экраны; - архитектура: четыре новых открытых вопроса — приём большого файла, учёт расхода, срок хранения, потолок шести часов.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# ✨ Слать готовый текст на почту из учётной записи
|
||||
|
||||
- **Тип:** 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, а
|
||||
не у почты.
|
||||
Reference in New Issue
Block a user