gendesign/tradein-mvp/backend/app/core
lekss361 95bada3855 feat(tradein): brand-by-account + result IA redesign (distinct asking/sale prices)
- Resolve brand from account: /me returns brand (praktika/kopylov->praktika);
  useBrand uses ?brand= param OR me.brand (param wins) -> praktika auto-branded
  on login (no manual ?brand= needed).
- Result IA (Brusnika-style): single «Ожидаемая цена сделки» headline (lower,
  -X% vs asking, 5-12% note); two DISTINCT reference figures (asking объявления
  vs ДКП Росреестр) + price bars; sources row; 3 always-on explainer cards
  (asking!=real, ремонт по состоянию, скрытые расходы <=15%).
- Defer commercial buyback value (Brusnika p.4): OfferCard stub + TODO, no
  invented numbers (pending Praktika commercial terms).
- tsc clean, ruff clean, 35 backend tests (7 new /me-brand).

Refs #657
2026-05-30 09:38:09 +03:00
..
__init__.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
auth.py feat(tradein): brand-by-account + result IA redesign (distinct asking/sale prices) 2026-05-30 09:38:09 +03:00
config.py feat(tradein): refine same-building anchor for within-building heterogeneity (#681) 2026-05-30 05:49:46 +00:00
db.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
fdw.py feat(tradein): postgres_fdw live read of gendesign.cad_buildings (replaces snapshot) (#493) 2026-05-24 08:57:30 +00:00
ratelimit.py fix(tradein): bypass rate-limit for authenticated pilots + configurable limit (#655) (#669) 2026-05-29 15:56:30 +00:00