feat(tradein/history): вернуть все параметры оценки в GET /history #2420

Merged
lekss361 merged 1 commit from feat/tradein-history-full-params into main 2026-07-04 13:09:23 +00:00
Owner

Summary

Живой запрос пользователя при тестировании «ПРЕДЫДУЩИЕ ОЦЕНКИ» (CacheView): таблица показывает только адрес, не хватает введённых параметров + строки не кликабельны для перехода к отчёту.

Проверено на проде (\d trade_in_estimates): floor, total_floors, year_built, house_type, repair_state, has_balcony уже персистятся при создании оценки — просто не выбирались в GET /history (только address/rooms/area_m2). Схему БД трогать не нужно, чистое расширение SELECT.

Изменения:

  • estimate_history() (trade_in.py) — добавлены 6 полей в SELECT, имена колонок 1:1 (без переименования) для прямого маппинга на фронте.
  • IDOR-скоуп (admin vs own-rows по created_by, #656) не тронут.
  • Новый тест на NULL-passthrough (legacy-строка без опциональных полей) + полностью заполненная строка.

Это backend-часть. Frontend follow-up (CacheRow/mapCache/CacheView + клик по строке → /v2?id=<uuid>) — отдельный PR после мержа/деплоя этого (нужен codegen против живого OpenAPI).

Test plan

  • uv run pytest -q tests/test_history_scope.py — 6 passed (5 существующих scoping-тестов + 1 новый)
  • pytest -q tests/ -k "history or trade_in" — 65 passed
  • Cross-check имён колонок против DDL (001_trade_in_estimates.sql, 065_trade_in_estimates_floor_optional.sql) и обоих INSERT call-sites в estimator.py — совпадают
  • Ruff чист
  • code-reviewer: approve

Без привязки к issue (ad-hoc фикс по живому запросу пользователя).

## Summary Живой запрос пользователя при тестировании «ПРЕДЫДУЩИЕ ОЦЕНКИ» (CacheView): таблица показывает только адрес, не хватает введённых параметров + строки не кликабельны для перехода к отчёту. Проверено на проде (`\d trade_in_estimates`): `floor`, `total_floors`, `year_built`, `house_type`, `repair_state`, `has_balcony` уже персистятся при создании оценки — просто не выбирались в `GET /history` (только `address/rooms/area_m2`). Схему БД трогать не нужно, чистое расширение SELECT. **Изменения:** - `estimate_history()` (`trade_in.py`) — добавлены 6 полей в SELECT, имена колонок 1:1 (без переименования) для прямого маппинга на фронте. - IDOR-скоуп (admin vs own-rows по `created_by`, #656) не тронут. - Новый тест на NULL-passthrough (legacy-строка без опциональных полей) + полностью заполненная строка. Это backend-часть. Frontend follow-up (`CacheRow`/`mapCache`/`CacheView` + клик по строке → `/v2?id=<uuid>`) — отдельный PR после мержа/деплоя этого (нужен codegen против живого OpenAPI). ## Test plan - [x] `uv run pytest -q tests/test_history_scope.py` — 6 passed (5 существующих scoping-тестов + 1 новый) - [x] `pytest -q tests/ -k "history or trade_in"` — 65 passed - [x] Cross-check имён колонок против DDL (`001_trade_in_estimates.sql`, `065_trade_in_estimates_floor_optional.sql`) и обоих INSERT call-sites в `estimator.py` — совпадают - [x] Ruff чист - [x] code-reviewer: approve Без привязки к issue (ad-hoc фикс по живому запросу пользователя).
lekss361 added 1 commit 2026-07-04 13:04:24 +00:00
feat(tradein/history): вернуть floor/total_floors/year_built/house_type/repair_state/has_balcony в GET /history
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
CI / changes (pull_request) Successful in 7s
CI Trade-In / frontend-checks (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 / backend-tests (pull_request) Successful in 1m0s
5cce0baf10
/history отдавал только address/rooms/area_m2 — остальные введённые параметры уже
персистятся в trade_in_estimates, но не выбирались; расширяем SELECT для витрины
«Предыдущие оценки» (CacheView) на фронте (follow-up фронт-PR).
lekss361 merged commit 921aba04b8 into main 2026-07-04 13:09:23 +00:00
lekss361 deleted branch feat/tradein-history-full-params 2026-07-04 13:09:23 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2420
No description provided.