2.8 KiB
2.8 KiB
TaxiDashboard backend — найденные пути для модуля mechanic
Записано по результатам Task A1 (recon существующего кода c:\NewProject\taxi-dashboard\backend\app\).
Корень backend
/opt/sites/taxi-dashboard/backend/app/ (на VDS)
c:\NewProject\taxi-dashboard\backend\app\ (локально)
Импорты для нового модуля mechanic
from app.models.base import Base, TimestampMixin # SQLAlchemy declarative + created_at/updated_at
from app.db import get_db, async_session, engine # async session factory + dependency
from app.auth.deps import get_current_user # OAuth2 Bearer JWT
from app.models.user import User # User модель
Auth
- OAuth2 Password Flow + Bearer JWT (не PIN, как я ошибочно писал в спеке).
- Логин:
POST /v1/auth/login(или похожий, нужно найти вapp/api/auth.py) с form-datausername+password→ возвращает{ "access_token": "...", "token_type": "bearer" }. - Дальнейшие запросы: header
Authorization: Bearer <token>.
Naming clash + решение
В TaxiDashboard уже есть модуль app.api.inspections (читает данные CarInspection, импортированные от вендора NaughtySoft через VendorBridge) под префиксом /v2/inspections.
Чтобы не конфликтовать:
- Наш новый модуль:
app/api/mechanic.py(илиapp/mechanic/router.pyкак подмодуль) — префикс/api/v1/mechanic - Наши новые таблицы:
mechanic_inspections(наша запись осмотров через PWA)mechanic_inspection_photosmechanic_damage_markers
- Наши новые модели:
app/models/mechanic_inspection.py—MechanicInspectionapp/models/mechanic_inspection_photo.py—MechanicInspectionPhotoapp/models/mechanic_damage_marker.py—MechanicDamageMarker
Существующие CarInspection, car_inspections, inspection_failed_photo — не трогаем. Они продолжают жить read-only от VendorBridge.
Существующий стек
- Python 3.x + FastAPI + SQLAlchemy 2.x async
- PostgreSQL (видна migration via Alembic — папку проверим в первом backend-task)
- Frontend:
c:\NewProject\taxi-dashboard\frontend\(React, существующий — НЕ наш target)
Vehicle model
В existing CarInspection авто указывается через car_number: String(100). Возможно есть отдельная модель Car в app/models/car_v2.py (видел в импортах). Проверим в backend task B2 при создании FK.