Files
transcriber/docs/adr/ADR-2026-08-15-cursor-paging.md
T
av 3a2da3004b приём и чтение записей сведены к одному контракту приложения
- адреса приложения переехали в своё пространство `/app/`, опрос готовности
  убран целиком: рубеж и причину остановки владелец узнаёт карточкой записи,
  текст — отдельным адресом названного вида
- заведена единая точка отображения доменной ошибки и слой, приводящий к той же
  форме отказы библиотеки: тело несёт машиночитаемый код рядом с сообщением
- у записи появились имя файла отправителя, длительность и размер своими
  колонками, а у ленты владельца — свой индекс: без него страница сканировала
  весь архив сервиса
2026-08-15 13:51:23 +03:00

34 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Страница архива задаётся ключом, а не номером
- **Дата:** 2026-08-15
- **Источник:** openspec/changes/archive/2026-08-15-app-json-contract/design.md,
раздел «Страница задаётся ключом, а не номером»
## Решение
Постраничное чтение своих записей идёт непрозрачным ключом по паре «время
заведения и идентификатор». Номер страницы отвергнут.
## Почему
«Приём пишет в голову той же таблицы записей, которую читает список, и человек,
загрузивший запись и листающий свой архив, — штатный сценарий. Номер страницы
сдвинул бы окно на единицу: последний элемент первой страницы пришёл бы вторым
разом первым элементом второй, а один элемент между ними не пришёл бы никогда.
Отказ молчаливый — ни кода, ни строки в журнале, — и человек видел бы архив, в
котором записи нет.»
Ключ полный: у записей, принятых одним запросом, время совпадает, и порядок
между ними одним лишь временем не определён.
## Последствия
- `+` запись, заведённая между двумя страницами, не даёт ни повтора, ни
пропуска;
- `+` порядок между записями с равным временем устойчив;
- `` экран с нумерацией страниц так не сделать — листать можно только
«дальше». Архиву это не нужно;
- `` ключ приходит от клиента и потому разбирается: время приводится к виду
хранилища, иначе побайтовое сравнение молча обращает условие в постоянную
истину или ложь.