tasks: целевая картина пересобрана — три цели, тринадцать задач, сдвинутые границы

- паспорт: сервис объявлен архивом с бессрочным хранением записей и текстов,
  машинная вычитка расшифровки внутри границ, приложение — основной вход;
  добавлены две границы: не файловое хранилище общего назначения и не биллинг;
- заведены цели upload-reliability, user-settings, usage-stats и тринадцать
  задач; очередь пересобрана — сперва починки, затем разведки о хранилище,
  затем доступ и владелец, и только потом экраны;
- архитектура: четыре новых открытых вопроса — приём большого файла, учёт
  расхода, срок хранения, потолок шести часов.
This commit is contained in:
av
2026-08-11 10:05:22 +03:00
parent 2333e80633
commit d2c85af80a
28 changed files with 730 additions and 61 deletions
+47
View File
@@ -0,0 +1,47 @@
# ✨ Считать заголовок, темы и пересказ внешней моделью
- **Тип:** feature
- **Категория:** Очередь
- **Зачем:** Расшифровка доходит стеной текста: ни заголовка, ни тем, ни пересказа сервис не считает, и клиента языковой модели в нём нет.
- **Теги:** goal:text-insights
Двигает пункты 1, 3, 4 и 5 «Завершения» цели: у готовой записи появляются
заголовок (1), пересказ (3) и темы (4), а отказ и молчание модели не роняют
задачу (5).
Здесь появляется пятая внешняя зависимость — языковая модель с
OpenAI-совместимым интерфейсом за шлюзом bifrost, — и текст расшифровки уходит
ещё на одну сторону.
## Затрагивает
- `internal/contract` — интерфейс расчёта выводов из текста;
- новый адаптер OpenAI-совместимого клиента и подставной адаптер для тестов;
- конвейер: шаг после `transcribe`, его состояние и место в цепочке;
- колонки заголовка, тем и пересказа у задачи и их миграция;
- контракт чтения записи: новые поля ответа;
- секция конфигурации: адрес шлюза, имя модели, ключ;
- `docs/architecture.md` — внешняя зависимость и чем она отказывает;
- `docs/security.md` — текст расшифровки уходит на внешний сервис.
## Критерии приёмки
- Дошедшая до `done` запись несёт заголовок в одну строку, список тем и пересказ
в два-три предложения. Оракул — тест конвейера на подставной модели: три поля
заполнены, заголовок без переносов строки.
- Отказ и молчание модели не роняют задачу: текст доходит до человека без
выводов. Оракул — тест с моделью, возвращающей ошибку и таймаут: задача в
`done`, текст на месте, в журнале одна запись уровня `WARN`.
- Уровень, выключенный в настройках пользователя, у модели не запрашивается, а
настройка берётся та, что действовала на приёме записи. Оракул — тест с
выключенными темами и тест с настройкой, изменённой после приёма: вызовов за
темами нет в обоих случаях.
- Ключ и адрес шлюза не попадают ни в журнал, ни в ответ. Оракул — тест шага с
перехваченным журналом.
## Рамки
Литературный текст сюда не входит — это `literary-text-level`. Своей модели не
держим и промптов в код не зашиваем сверх необходимого. Прогон на боевом ключе
ради проверки запрещён: подставной адаптер. Обращение к модели платное, и
объём расхода учитывает `usage-accounting`.