You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Обнаружено при перепроверке #11 на коммите 45512d402cd75e8c30703c2bfdb86cb1a7a059e5 (2026-08-21). Это отдельная проблема от #11: #11 — про то, что top_popular/top_related физически пустые; здесь — про то, что manifest.jsonне сигнализирует об этой пустоте потребителю.
Два прогона wordstat collect --keep-raw («купить телефон», «курсы английского языка», регион «Россия», --cdp-url http://127.0.0.1:9223) дали:
Фраза
top_popular rows
top_related rows
dynamics rows
regions rows
купить телефон
0
0
24
950
курсы английского языка
0
0
24
813
При этом оба manifest.json содержат:
{
"missing_views": [],
"status": "complete"
}
То есть манифест утверждает, что сбор полностью успешен и ни одно представление не пропущено — при том что два из четырёх представлений физически не содержат ни одной строки данных.
missing_views/status — это единственный программный сигнал, по которому потребитель манифеста (без ручного похода в CSV/parquet и проверки row_count) решает, доверять ли данным конкретного прогона. Если пустое представление помечается как complete наравне с непустым:
wordstat-trends#10 (загрузчик) не отличит «Топы запросов реально пусты в этом окне» от «сбор прошёл штатно, просто нечего показывать» — оба случая выглядят как status: complete.
wordstat-trends#16 (мониторинг) не сможет алертить на деградацию конкретно этих представлений, потому что манифест не даёт для этого сигнала — алерт видит только status, а не row_count по каждому view.
Представление с row_count == 0 не должно попадать в status: "complete" неотличимо от непустого представления. Варианты (на усмотрение мейнтейнера):
Пустое представление (row_count == 0) добавляется в missing_views, даже если файл технически скачан и сконвертирован — семантически это «не собрано» с точки зрения потребителя.
Либо: у каждого export в manifest.json появляется явный признак пустоты (например "empty": true рядом с "row_count": 0"), а status на верхнем уровне становится не бинарным (complete/incomplete), а различает complete/complete_with_empty_views/аналог.
Любой из двух достаточен — важно, чтобы потребитель манифеста мог отличить «успешный сбор с нулевым результатом» от «успешный сбор с данными», не открывая каждый CSV/parquet руками.
Данные для воспроизведения
Оба замера (2026-08-21, коммит 45512d4) — сырые manifest.json из соответствующих прогонов, доступны по запросу (сохранены локально при проверке, не приложены к этому issue — уже задокументированы построчно выше и в #11).
Наблюдение
Обнаружено при перепроверке #11 на коммите
45512d402cd75e8c30703c2bfdb86cb1a7a059e5(2026-08-21). Это отдельная проблема от #11: #11 — про то, чтоtop_popular/top_relatedфизически пустые; здесь — про то, чтоmanifest.jsonне сигнализирует об этой пустоте потребителю.Два прогона
wordstat collect --keep-raw(«купить телефон», «курсы английского языка», регион «Россия»,--cdp-url http://127.0.0.1:9223) дали:top_popularrowstop_relatedrowsdynamicsrowsregionsrowsПри этом оба
manifest.jsonсодержат:{ "missing_views": [], "status": "complete" }То есть манифест утверждает, что сбор полностью успешен и ни одно представление не пропущено — при том что два из четырёх представлений физически не содержат ни одной строки данных.
Почему это важно (возможно, важнее самого #11)
missing_views/status— это единственный программный сигнал, по которому потребитель манифеста (без ручного похода в CSV/parquet и проверкиrow_count) решает, доверять ли данным конкретного прогона. Если пустое представление помечается какcompleteнаравне с непустым:wordstat-trends#10(загрузчик) не отличит «Топы запросов реально пусты в этом окне» от «сбор прошёл штатно, просто нечего показывать» — оба случая выглядят какstatus: complete.wordstat-trends#16(мониторинг) не сможет алертить на деградацию конкретно этих представлений, потому что манифест не даёт для этого сигнала — алерт видит толькоstatus, а неrow_countпо каждому view.Предлагаемый инвариант
Представление с
row_count == 0не должно попадать вstatus: "complete"неотличимо от непустого представления. Варианты (на усмотрение мейнтейнера):row_count == 0) добавляется вmissing_views, даже если файл технически скачан и сконвертирован — семантически это «не собрано» с точки зрения потребителя.exportвmanifest.jsonпоявляется явный признак пустоты (например"empty": trueрядом с"row_count": 0"), аstatusна верхнем уровне становится не бинарным (complete/incomplete), а различаетcomplete/complete_with_empty_views/аналог.Любой из двух достаточен — важно, чтобы потребитель манифеста мог отличить «успешный сбор с нулевым результатом» от «успешный сбор с данными», не открывая каждый CSV/parquet руками.
Данные для воспроизведения
Оба замера (2026-08-21, коммит
45512d4) — сырыеmanifest.jsonиз соответствующих прогонов, доступны по запросу (сохранены локально при проверке, не приложены к этому issue — уже задокументированы построчно выше и в #11).Связанное
top_popular/top_relatedпустые (эта issue не про причину пустоты, а про то, что манифест её не отражает).