gendesign/tradein-mvp/.env.example
Light1YT b8f9213cd9 feat(tradein): persistent infra для backfill scripts
3 проблемы фиксятся:
1. tradein-mvp/backend/Dockerfile копировал только COPY app — scripts/
   слетал при каждом deploy, требовал manual docker cp.
2. docker-compose.prod.yml без env_file — .env.runtime не читался
   контейнером, переменные приходили только через host env.
3. Env-var name mismatch: compose YANDEX_GEOCODER_KEY vs script
   YANDEX_GEOCODER_API_KEY — script всегда видел None.

Изменения:
- backend/Dockerfile: COPY scripts ./scripts в builder + runner stage
- docker-compose.prod.yml:
  * env_file: ./backend/.env.runtime (required: false) — pattern из
    main backend (PR #585)
  * убран дубль `YANDEX_GEOCODER_API_KEY: ${...}` из environment:
    block — он бы overrideal env_file пустым значением. Reviewer nit
    applied inline.
- pydantic Settings (app/core/config.py): rename yandex_geocoder_key
  → yandex_geocoder_api_key. Case-insensitive env binding автоматически
  подхватывает `YANDEX_GEOCODER_API_KEY` (no Field alias нужен).
- All 5 call sites в app/services/geocoder.py обновлены.
- app/tasks/geocode_missing.py docstring + test mock обновлены.
- backend/scripts/README.md: canonical `docker exec` commands без
  manual `docker cp` workflow.
- DEPLOY.md + .env.example обновлены с новым именем переменной.

Verified:
- pytest tests/test_backfill_house_coords.py + test_audit_address_mismatch.py
  + test_cadastral_reverse.py → 56 pass
- docker compose -f docker-compose.prod.yml config → valid syntax
- pydantic binding: YANDEX_GEOCODER_API_KEY=foo → settings.yandex_geocoder_api_key=='foo'
- code-reviewer LGTM (nit applied inline)

После merge — на VPS уже создан /opt/gendesign/tradein-mvp/backend/.env.runtime
с YANDEX_GEOCODER_API_KEY (см. PR #591 deploy). deploy.yml triggers
force-recreate из-за нового image hash → env_file pick up автоматически.
2026-05-27 11:59:14 +05:00

23 lines
1.1 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Trade-In MVP — environment variables example.
# Скопируй в .env (или экспортируй в shell) для override defaults.
# === Backend ===
DATABASE_URL=postgresql+psycopg://tradein:tradein@postgres:5432/tradein
CORS_ORIGINS=["http://localhost:8080","http://localhost:3000"]
ENVIRONMENT=dev
# Yandex Geocoder API key (25k req/day free tier).
# Required for backfill scripts (scripts/backfill_house_coords.py + audit_address_mismatch.py).
# Empty = Nominatim fallback для backend геокодинга; backfill scripts требуют этот ключ
# и упадут с SystemExit без него.
YANDEX_GEOCODER_API_KEY=
# === Frontend (build-time) ===
# Backend URL для Next.js rewrites (browser обращается к /api/* — Next.js проксирует на BACKEND_URL/api/*).
# В docker compose это уже выставлено в http://backend:8000 — менять не нужно.
# BACKEND_URL=http://backend:8000
# === Postgres (если меняешь — синхронизируй с DATABASE_URL и docker-compose.yml) ===
POSTGRES_USER=tradein
POSTGRES_PASSWORD=tradein
POSTGRES_DB=tradein