- порядок беклога и роадмапа назначен слоями: проверки, которым можно верить → долги входа → владелец записи и контракт API → конвейер под тестами → приложение и возможности поверх; у каждого движения записана причина; - заведены восемь задач под пункты «Завершения», которых не закрывала ни одна запись, — цель any-audio-source была без задач вовсе; - у четырёх задач сняты критерии, требовавшие того, что делает задача ниже по очереди; исправлены ссылки на несуществующий repo/sqlite и на отменённую разведку об очереди.
42 lines
3.3 KiB
Markdown
42 lines
3.3 KiB
Markdown
# ✨ Отдавать текст в сотни килобайт файлом, а не сотней сообщений
|
|
|
|
- **Тип:** feature
|
|
- **Категория:** Очередь — Сотни килобайт текста появляются только после долгих записей.
|
|
- **Зачем:** Отправитель Telegram режет текст по 4000 знаков: расшифровка шестичасовой записи придёт сотней сообщений подряд.
|
|
- **Теги:** goal:long-recordings
|
|
|
|
Двигает пункт 4 «Завершения» цели: текст в несколько сотен килобайт доходит и в
|
|
Telegram, и в браузере.
|
|
|
|
Деление по словам (`internal/adapter/telegram/split.go`) остаётся для обычной
|
|
расшифровки; сверх названного числа частей вместо потока сообщений уходит один
|
|
файл.
|
|
|
|
## Затрагивает
|
|
|
|
- `internal/adapter/telegram` — отправка документа помимо текстовых сообщений;
|
|
- порог, за которым текст уходит файлом, и его место в конфигурации;
|
|
- формат отправляемого файла и его имя, которое не раскрывает имени, данного
|
|
пользователем;
|
|
- экран чтения записи: показ текста в сотни килобайт и его выгрузка файлом;
|
|
- `docs/database.md` — порог числом.
|
|
|
|
## Критерии приёмки
|
|
|
|
- Текст, разбиваемый более чем на названное число частей, уходит в Telegram одним
|
|
файлом, а не потоком сообщений. Оракул — тест отправителя на тексте в 300 КиБ:
|
|
вызов отправки документа один, вызовов отправки сообщения нет.
|
|
- Обычная расшифровка по-прежнему приходит сообщениями, разбитыми по словам.
|
|
Оракул — существующий тест деления плюс тест на тексте в две части.
|
|
- Имя отправляемого файла не содержит имени, данного пользователем, и текста
|
|
записи. Оракул — тест: имя собрано из идентификатора задачи.
|
|
- Экран чтения открывает текст в сотни килобайт целиком и даёт выгрузить его
|
|
файлом. Оракул — тест экрана на подставном API с текстом в 300 КиБ.
|
|
|
|
## Рамки
|
|
|
|
Порог считается в частях, а не в байтах: он производен от предела сообщения
|
|
Telegram, который задаёт не наш сервис. Формат файла — простой текст, разметки
|
|
не добавляем. Инвариант приватности: имя файла пользователя в журнал и в имя
|
|
отправляемого документа не попадает.
|