UI: один адрес на шаге с координатами + рабочее геокодирование + авто«прошло времени»

- Step3Circumstances: удалено дублирующее «Последнее известное место»
  (last_known_place); остаётся только tnp_address на шаге координат.
- Step4Environment: кнопка «Найти координаты» теперь РАБОЧАЯ — вызывает
  новый GET /api/v1/geocode (прокси Nominatim, countrycodes=by, короткий
  запрос «пункт, адрес» по граблям geocoding), заполняет lat/lon,
  показывает найденный display_name или ошибку. Без debounce-автоплейса
  (Pitfall 2) — только явный клик.
- Step3Circumstances: «Прошло времени» считается автоматически из
  lost_time (пересчёт каждые 30 с, округление до 0.1 ч); поле остаётся
  редактируемым для корректировки.
- БАГФИКС: форма шлёт lost_time, модель хранит loss_time — алиас в
  _normalize_case_data. Раньше время пропажи молча терялось
  (Pydantic игнорирует неизвестные поля) — elapsed_hours приходилось
  вводить руками.
- last_known_place убран из валидации шага 4.
- backend/routers/geocode.py: Nominatim-прокси с auth (operator/field/admin).

192 passed, JSX валиден.
This commit is contained in:
2026-09-09 19:18:20 +03:00
parent 6ec9536203
commit fa466fc5ed
6 changed files with 177 additions and 29 deletions
+2
View File
@@ -12,6 +12,7 @@ from backend.routers.analyze import router as analyze_router
from backend.routers.auth import router as auth_router
from backend.routers.cases import router as cases_router
from backend.routers.closed_cases import router as closed_cases_router
from backend.routers.geocode import router as geocode_router
from backend.routers.health import router as health_router
from backend.routers.stats import router as stats_router
from backend.routers.water import router as water_router
@@ -53,6 +54,7 @@ app.include_router(closed_cases_router)
app.include_router(stats_router)
app.include_router(admin_router)
app.include_router(water_router)
app.include_router(geocode_router)
@app.get('/')