feat(tradein/pdf): редизайн отчёта в реальном языке МЕРА (v2 HUD) #2434
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#2434
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/pdf-mera-hud-redesign"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что и почему
Оба предыдущих раунда (#2327, #2427) опирались на
frontend/public/tradein.html+trade-in.css— старый демо-мокап «PRINZIP», стилизованный под конкурента Брусника (footer файла:data: brusnika-obmen-style). Реальный бренд «МЕРА» — это/trade-in/v2, HUD/blueprint-дэшборд с другой палитрой (v2/tokens.ts), другими шрифтами (Manrope + IBM Plex Mono вместо PT Sans/Serif) и другим словарём компонентов (glass-карточки с угловыми HUD-скобками, нумерованные секции, donut-гейдж качества данных, пунктирные разделители, source-pill).Что сделано
fonttools varLib.instancer— WeasyPrint не поддерживает variable-font@font-face) + IBM Plex Mono 400/500, embedded тем же_font_data_url()-паттерном, что PT Sans/Serif в #2427._ACCENT*/_BORDER*заменены на полный набор токенов 1:1 изv2/tokens.ts;_page_header/_page_footerпереписаны по мотивамHeroBar.tsx/Footer.tsx(mono meta-ячейки, пунктирная градиентная линия с акцентной серединой, wordmark наbrand.name— white-label не сломан).ObjectSummary.tsx), угловые HUD-скобки на карточках, нумерованные заголовки секций (01-04), пунктирные разделители строк — метрики качества данных считаются из реальных полейAggregatedEstimate, не выдуманы.overflow-wrap:anywhereна всех data-производных строках (адрес,brand.name, названия аналогов, дисклаймер с UUID), никакогоnowrapкроме заведомо ограниченных полей,table-layout:fixedна таблице примеров,break-inside:avoidна карточках преимуществ.Верификация
Реальный рендер в Docker (WeasyPrint) на normal + stress фикстурах (длинный адрес, длинный white-label бренд, экстремальные цены) + объективный PyMuPDF bbox-overlap детектор поверх текста — 2 итерации fix (переполнение страницы на cover, перенос wordmark посреди слова в футере), 3-я verify — ALL_CLEAR (единственная оставшаяся "находка" детектора — подтверждённый false-positive на переносе строки одного заголовка, без реального наложения).
Полный
pytest(2265 passed, 6 skipped) +ruffчисты; 1 непроходящий тест (test_search_cache_hit) и 3 ruff-находки (RUF059) подтверждены pre-existing на main (git diff mainпуст на этих файлах).Test plan
ruff check— чистоpytest— 2265 passed (1 pre-existing failure не связан с этим PR)