- порядок беклога и роадмапа назначен слоями: проверки, которым можно верить → долги входа → владелец записи и контракт API → конвейер под тестами → приложение и возможности поверх; у каждого движения записана причина; - заведены восемь задач под пункты «Завершения», которых не закрывала ни одна запись, — цель any-audio-source была без задач вовсе; - у четырёх задач сняты критерии, требовавшие того, что делает задача ниже по очереди; исправлены ссылки на несуществующий repo/sqlite и на отменённую разведку об очереди.
43 lines
3.3 KiB
Markdown
43 lines
3.3 KiB
Markdown
# ✨ Сделать экран настроек и хранить настройки по пользователю
|
|
|
|
- **Тип:** feature
|
|
- **Категория:** Очередь — Дом настроек нужен раньше уровней текста и раньше выбора канала уведомлений.
|
|
- **Зачем:** Настроек у пользователя нет вовсе: уровни текста и канал уведомлений задаются общим конфигом сервиса.
|
|
- **Теги:** goal:user-settings
|
|
|
|
Двигает пункты 1, 2 и 3 «Завершения» цели: у каждого пользователя свои
|
|
переключатели уровней текста и свой канал уведомлений, и они переживают
|
|
повторный вход.
|
|
|
|
Здесь появляется дом настроек — таблица и эндпоинты; применяют их задачи
|
|
уровней текста и доставки уведомлений.
|
|
|
|
## Затрагивает
|
|
|
|
- таблица настроек пользователя: переключатели уровней текста, канал и адрес
|
|
уведомлений, и её миграция;
|
|
- эндпоинты чтения и записи своих настроек;
|
|
- новый экран приложения, и на нём же место выпуска и отзыва личного токена —
|
|
сам токен заводит `api-tokens`, экрана у него нет;
|
|
- значения по умолчанию для пользователя, у которого настроек ещё нет;
|
|
- `docs/database.md` — представление данных и значения по умолчанию.
|
|
|
|
## Критерии приёмки
|
|
|
|
- Изменённая настройка видна после повторного входа и не меняется у соседа.
|
|
Оракул — тест эндпоинта на двух учётных записях: запись первой, чтение обеими.
|
|
- Пользователь без сохранённых настроек читает значения по умолчанию, а не
|
|
пустой ответ. Оракул — тест чтения для новой учётной записи.
|
|
- Чужие настройки не читаются и не пишутся по идентификатору. Оракул — тест
|
|
запроса к настройкам другого владельца: `404` либо `403`, содержимое не
|
|
отдаётся.
|
|
- Экран показывает переключатели уровней и поле канала, а сохранение доходит до
|
|
эндпоинта. Оракул — тест экрана на подставном API.
|
|
|
|
## Рамки
|
|
|
|
Применением настроек к конвейеру занимаются `llm-insights-adapter`,
|
|
`literary-text-level` и `ntfy-delivery` — здесь только дом настроек и экран.
|
|
Выпуск токенов API живёт на этом же экране, но заводит его `api-tokens`.
|
|
Берётся после `oidc-login`: до неё настройки не к кому привязать.
|