Разработка 4 мин чтения

PageTrace: все запросы 200 OK, а часть данных потеряна

PageTrace читает записанные запросы к API и показывает зависший курсор, повторы между страницами и расхождение итога, когда все ответы 200. Разобрал лицензию, возраст проекта, коды выхода для CI и то, чего он не видит: данные в источнике.

Open SourceAPIИнтеграцииПагинация
Коротко. PageTrace (репозиторий Corner324/PageTrace, лицензия MIT) читает записанные запросы к API, браузерный HAR или JSONL, и проверяет, как отработала постраничная выгрузка: не завис ли курсор, нет ли повторов между страницами, сходится ли заявленный итог с числом найденных строк. Работает офлайн, ставится через pip, понимает курсор, номер страницы, offset и ссылку next в заголовке Link. Проект очень молодой: создан 11 сентября 2026, один автор, версия 0.1.0, 3 звезды, последний коммит 12 сентября. Он анализирует запись и не сверяет её с данными в системе-источнике.
Хотите внедрить это у себя?

Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.

Аудит выгрузок из API: поиск тихой потери данных

Все запросы 200 OK, а строк не хватает

Выгрузка заказов или остатков идёт страница за страницей. Каждый ответ 200, цикл завершился, в логах чисто. Через три недели бухгалтерия замечает, что отчёт короче на четыреста строк, а склад показывает лишние остатки. Записи обмена уже нет, воспроизвести ошибку нечем.

Так ломается всё, что забирает данные из маркетплейсов, банков, CRM и 1С: ошибка сидит между двумя соседними запросами. Как устроены сами интеграции с площадками, я описывал в статье про API Wildberries и Ozon, а общий разбор причин поломок есть в материале про то, кто виноват, когда интеграция сломалась. Здесь про узкую задачу: как найти тихую потерю данных по записи запросов.

Что это за проект и что я проверил

Проверял 19.10.2026 по репозиторию, API GitHub и странице на PyPI. Описание проекта: офлайн-проверка записанных трейсов пагинации, без обращения в сеть. Файл LICENSE это MIT, правообладатель указан как «PageTrace maintainers». Репозиторий создан 11.09.2026, не архивирован, 32 коммита, все с одного аккаунта Corner324. Последний коммит 12.09.2026, там же единственный релиз v0.1.0. Звёзд 3, форков нет. Язык Python, нужна версия 3.11 или новее, единственная зависимость это библиотека JSONPath.

В метаданных пакета стоит статус «Pre-Alpha». В pyproject в адресе проекта остался шаблон OWNER вместо имени. В репозитории лежат CLAUDE.md и AGENTS.md, то есть судя по файлам, автор работает с ИИ-агентами. Заявленные 425 тестов я не воспроизводил. Сам инструмент не запускал, всё ниже по README, спецификации и коду.

Как это запускается

Установка: pip install pagetrace, также работают pipx и uv. Запуск: pagetrace check запись.jsonl. Формат JSONL это одна строка на пару запрос и ответ, обязательны поля v и response.status. HAR сохраняется из вкладки Network в браузере, и его нужно сузить до нужных вызовов флагом --url-filter. Запросы OPTIONS и HEAD отбрасываются заранее, иначе предварительный запрос CORS выглядит как зависший клиент.

Типов пагинации четыре, они называются пресетами: cursor (по умолчанию), page, offset и link для заголовка Link с rel="next". Поля в ответе задаются путями JSONPath, у каждого пресета есть значения по умолчанию, их можно переопределить флагами. Если нужного поля в записи нет, инструмент пишет «недостаточно доказательств» и называет флаг, который стоит задать.

HAR хранит живые заголовки Authorization и cookie. По README инструмент оставляет один заголовок ответа (Link), тела не печатает, но сам файл на диске остаётся секретным. Не прикладывайте его к публичным обращениям.

Что он ловит

В спецификации одиннадцать проверок. Главные для выгрузок: страница запрошена токеном, которого предыдущая не возвращала; курсор повторился на соседних страницах; курсор вернулся к уже виденному значению; один и тот же элемент встретился на двух страницах; номер страницы или offset прыгнул; запись оборвалась при has_more=true; заявленный итог не совпал с числом уникальных элементов. Проверки порядка сортировки в списке я не нашёл.

Каждая находка получает два независимых признака. Достоверность: PROVEN (доказано записью), SUSPICIOUS (подходит под баг, но подходит и под безобидное объяснение), INSUFFICIENT_EVIDENCE. И серьёзность, ERROR или WARNING. Коды выхода для CI: 0 если нет находки, одновременно доказанной и с уровнем ERROR, 1 если есть, 2 при неверном входе или настройках. Отчёт бывает в терминале, JSON или JUnit. Для CI автор советует читать JSON, формат терминала не обещан стабильным.

Условный пример

Условный пример, цифры придуманы. Выгрузка по курсору, 3 страницы по 100 строк. API заявляет total 300. Страница 1 отдала строки с 1 по 100 и курсор A. Страница 2 пришла по курсору A: строки 101 по 200 и курсор B. Страница 3 пришла по курсору B, но вернула те же строки 101 по 200 и закончила выгрузку. Клиент насчитал 300 строк, а уникальных 200.

По спецификации здесь ожидаются две находки. Дубликаты между страницами 2 и 3: PROVEN, но WARNING. Расхождение total (300 против 200): SUSPICIOUS, потому что при найденных дублях сравнивать нужно осторожнее. Обе находки уровня WARNING, значит код выхода 0 и сборка не упадёт. Это ожидание из документа, на этой записи я инструмент не гонял. Если бы клиент дважды послал курсор A подряд, зависание курсора считается ошибкой, и код был бы 1. Для первого случая в CI придётся самому проверять в JSON-отчёте код находки о дублях.

Что важно учесть

Проект молодой, один автор, 3 звезды, 0.1.0 и статус Pre-Alpha, последний коммит больше месяца назад. Для рабочего контура это риск: поддержка не гарантирована. Лицензия MIT позволяет форкнуть.

Инструмент видит только запись. Он не знает, сколько строк реально в системе-источнике, поэтому фразу «не хватает N записей» не произнесёт принципиально. Если курсор на самом деле пропустил окно данных и ничего не повторил, запись выглядит чистой. Авторизацию, повторы при ошибках и потоковые API он не проверяет и не воспроизводит.

По таблице автора на его машине 10 тысяч страниц и миллион элементов обрабатываются за 28 секунд, часть своих целевых значений он не достиг.

Что можно сделать уже сейчас

Запишите одну живую выгрузку в HAR или JSONL и прогоните через PageTrace на тестовых данных без реальных ключей.

Если в боевой выгрузке есть поле total, добавьте в сам скрипт сверку: число уникальных идентификаторов против заявленного итога. Это работает без всяких инструментов.

Раз в месяц сверяйте остатки или заказы в вашей учётной системе с тем, что отдаёт площадка. Это то, чего PageTrace не заменяет. Как строить клиента к API, показано в статье про OpenAPI Generator, а если API для вас новая тема, начните с простого объяснения.

Проверить выгрузки, найти места тихой потери и добавить автоматические сверки я могу в рамках технического аудита.

Частые вопросы

Ходит ли PageTrace в API сам?

Нет, в пакете нет сетевого кода. Он читает только файл, который вы ему дали.

Заменит ли он сверку остатков?

Нет. Он доказывает или не доказывает дефект пагинации в записи, а данные в источнике не видит.

Подходит ли он для боевого CI?

Пока осторожно. Версия 0.1.0 и один автор. Контракт кодов находок и выхода заявлен как публичный начиная с этой версии, но обещание держится на одном человеке.

Коротко о главном

PageTrace по записи запросов показывает зависший курсор, повторы страниц и расхождение итога, не обращаясь к API. Он молодой и лишь анализирует запись, сверка с источником остаётся за вами.

Если выгрузки из маркетплейсов, банка или CRM иногда расходятся с реальностью, напишите мне в Telegram кодовое слово «ПАГИНАЦИЯ». Разберём, где теряются строки, и добавим проверки.

Обсудим вашу задачу

Что я делаю для бизнеса

Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.

  • Боты в Telegram, MAX, VK
  • Автоматизация процессов и CRM
  • Аналитика и дашборды
  • Сайты и лендинги под ключ
Пишу о разработке, ИИ и законах для бизнеса

Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.

Готовые решения под ключTurnkey solutionsSoluciones llave en mano交钥匙解决方案Түлхүүр гардуулах шийдэл 451 готовых IT-решений для бизнеса451 ready-made IT solutions for business451 soluciones IT listas para empresas451 个面向企业的现成 IT 解决方案Бизнест зориулсан 451 бэлэн IT шийдэл Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультацияAutomation, bots, AI, data privacy and platforms · free consultationAutomatización, bots, IA, privacidad de datos y plataformas · consulta gratis自动化、机器人、AI、数据合规与平台 · 免费咨询Автоматжуулалт, бот, AI, өгөгдлийн хамгаалалт ба платформ · үнэгүй зөвлөгөө Смотреть каталогView catalogVer catálogo查看目录Каталог үзэх