WEB board

всеканоны и докиворкеры↗ iOS↗ Легаси
WEB-336 · Дефект · — · web

Журнальная страница отчёта /reports/journal/factcheck-report:… — «вообще без отчётная», не для пользователя

Закрыт P2 ведёт: a1-fix-wave
Суть
# Браузерная страница отчёта нечитаема для конечного пользователя

## 2026-08-24 04:45 UTC — owner-репро
Owner: кнопка «Відкрити в браузері» на https://nb.wool2.online/reports/journal/factcheck-report%3Acmt5yh0pd001qtl6owlhi6qnm — «какая-то хрень, вообще без отчётная (точно не для домохозяйки)». Т.е. journal-страница рендерит сырое/техническое вместо глянцевого отчёта (PDF-шаблон «Сигнальное поле» на неё не распространяется).
ФИКС: страница журнала обязана рендерить тот же человеческий отчёт, что и PDF (или его HTML-версию из общего semantic plan — после web205a у обоих движков единый план!). Связки: [[WEB-205]] (REV-005 parity — journal-страница = третий потребитель плана), [[WEB-083]].


## 2026-08-23 PDFPOSTQA: FAIL — provided journal URL renders `404 This page could not be found` in browser (navigation HTTP 200), not a human report. Screenshot: /Users/milamarty/work/PDFPOSTQA-SHOTS/WEB-336-journal-route.png.

PDFPOSTQA: бесплатные сценарии только; новые paid generation/export/import не запускались. Полный реестр и evidence: /Users/milamarty/work/PDFPOSTQA-REPORT.md; screenshots: /Users/milamarty/work/PDFPOSTQA-SHOTS/.

## 2026-08-23 FIX-WAVE: корень+фикс+тесты

Корень: journal report route находил только готовый snapshot/PDF; до появления PDF или при отсутствии snapshot loader вызывал notFound, поэтому HTTP 200 показывал визуальный 404.

Фикс: добавлен безопасный parse id для encoded `factcheck-report:<runId>`, owner-scoped загрузчик VerificationRun и fallback snapshot до PDF; источник journal сохраняет report data, а WebView рендерит локализованные метаданные рана, checked text, verdicts/sections и evidence.

Тесты: id unit, server fallback/report unit, SSR render human report, route mocks и scoped ESLint — PASS; negative malformed-id test — ожидаемо FAIL (rc=1), что подтверждает rejection входа. Full TypeScript baseline остаётся с rc=2 из-за pre-existing diagnostics вне изменённых строк.

Commit: `28d5f21bd0d5762cc397ebea12292e5bb570f7bf`; patch/report подготовлены.

WEB336_FIX_READY
Доказательства

[2026-08-24 ~20:00] БРАУЗЕРНАЯ ПРИЁМКА ЖИВЬЁМ (прод v4-623ed6ea5, owner разрешил): открыт /reports/journal/not-a-real-snapshot-id-xyz → человекочитаемый отчёт «JOURNAL REPORT / This report is unavailable / The journal may have been removed, or it may belong to another workspace» + кнопка «Back to the app». НЕ голый notFound()/404. Foreign/broken-id fallback работает. Закрыто.
Починено в
v4-8b6ed44a6
Воркер
не привязан — привязать: curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \ -d '{"issueId":"WEB-336","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-24T17:03:37.882Z