feat(tradein): версионирование продукта — единый источник, подвал, PDF, /versions #2824

Merged
lekss361 merged 1 commit from feat/tradein-versioning into main 2026-08-10 16:00:54 +00:00

1 commit

Author SHA1 Message Date
bot-backend
b791a7a53c feat(tradein): версионирование продукта — единый источник, подвал, PDF, /versions
All checks were successful
CI Trade-In / backend-tests (pull_request) Successful in 4m2s
CI / changes (pull_request) Successful in 9s
CI Trade-In / changes (pull_request) Successful in 9s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 1m3s
До сих пор номер версии существовал как два независимых декоративных
хардкода («МЕРА v2.0.6» в подвале отчёта и в PDF), не связанных с тем,
что реально задеплоено. Заводим настоящее версионирование.

- tradein-mvp/VERSION — единственный источник правды (2.1.0). Номер
  продолжает ряд, который клиент уже видел в отчётах, чтобы не поехал назад.
- tradein-mvp/CHANGELOG.md — Keep a Changelog на русском, языком продукта.
  Заголовок версии машинно-парсим: `## <semver> — <YYYY-MM-DD>`.
- Проброс в сборку: build-args → APP_VERSION/BUILD_SHA/BUILD_DATE (backend,
  рантайм) и NEXT_PUBLIC_* (frontend, build-time — иначе не попадёт в статику).
  paths-filter теперь триггерит пересборку на изменение VERSION/CHANGELOG.
- GET /api/v1/trade-in/version → {version, sha, built_at}, публичный.
- Подвал веб-интерфейса и шапка PDF показывают «Мера vX.Y.Z · sha · дата».
- Страница /trade-in/versions — история версий из CHANGELOG.md, рендер
  простым текстом без dangerouslySetInnerHTML.
- Удалены оба старых хардкода версии, чтобы на экране и в отчёте не
  соседствовали два разных номера.
2026-08-10 18:46:53 +03:00