Add service platform foundation
This commit is contained in:
65
README.md
65
README.md
@@ -22,7 +22,7 @@ https://drivers.smartsoltech.kr
|
||||
|
||||
```text
|
||||
/setdomain
|
||||
@seoulmate_officialbot
|
||||
@your_bot_username
|
||||
drivers.smartsoltech.kr
|
||||
```
|
||||
|
||||
@@ -43,7 +43,7 @@ POSTGRES_PORT=5433
|
||||
DATABASE_URL=postgresql+asyncpg://drivers:change-this-db-password@db:5432/drivers
|
||||
|
||||
BOT_TOKEN=123456:telegram-token
|
||||
BOT_USERNAME=seoulmate_officialbot
|
||||
BOT_USERNAME=your_bot_username
|
||||
WEBAPP_URL=https://drivers.smartsoltech.kr
|
||||
PUBLIC_WEBAPP_URL=https://drivers.smartsoltech.kr
|
||||
API_BASE_URL=http://api:8000
|
||||
@@ -122,6 +122,12 @@ Backend проверяет подпись Telegram, создает/обновл
|
||||
## Основные endpoint-ы
|
||||
|
||||
- `GET /api/users/me`
|
||||
- `GET /api/me`
|
||||
- `GET /api/my/vehicles`
|
||||
- `POST /api/my/vehicles`
|
||||
- `PATCH /api/my/vehicles/{vehicle_id}`
|
||||
- `GET /api/my/vehicles/{vehicle_id}/service-history`
|
||||
- `POST /api/my/vehicles/{vehicle_id}/grant-service-access`
|
||||
- `POST /api/cars`, `GET /api/cars`, `GET/PATCH/DELETE /api/cars/{id}`
|
||||
- `POST /api/fuel`, `GET /api/cars/{car_id}/fuel?limit=50&offset=0`
|
||||
- `PATCH /api/fuel/{id}`, `DELETE /api/fuel/{id}`
|
||||
@@ -129,10 +135,65 @@ Backend проверяет подпись Telegram, создает/обновл
|
||||
- `PATCH /api/service/{id}`, `DELETE /api/service/{id}`
|
||||
- `GET /api/cars/{car_id}/stats`
|
||||
- `GET /api/users/{user_id}/reminders?limit=50&offset=0`
|
||||
- `POST /api/service-centers`
|
||||
- `GET /api/service-centers/my`
|
||||
- `POST /api/service-centers/{id}/verification`
|
||||
- `POST /api/service-centers/{id}/employees/invite`
|
||||
- `GET /api/service-centers/{id}/visits`
|
||||
- `POST /api/service-centers/{id}/visits`
|
||||
- `POST /api/service-visits/{id}/work-items`
|
||||
- `POST /api/service-visits/{id}/complete`
|
||||
- `POST /api/service-visits/{id}/confirm`
|
||||
- `POST /api/service-visits/{id}/dispute`
|
||||
- `POST /api/service-visits/{id}/vehicle-change-requests`
|
||||
- `POST /api/vehicle-change-requests/{id}/approve`
|
||||
- `POST /api/vehicle-change-requests/{id}/reject`
|
||||
- `GET /api/admin/service-centers/pending`
|
||||
- `POST /api/admin/service-centers/{id}/verify`
|
||||
- `POST /api/admin/service-centers/{id}/reject`
|
||||
- `POST /api/admin/service-centers/{id}/suspend`
|
||||
- `GET /api/admin/audit-log`
|
||||
- `GET /api/admin/disputes`
|
||||
- `POST /api/ocr/parse-text-receipt`
|
||||
- `POST /api/ocr/license-plate`
|
||||
- `POST /api/ocr/vin`
|
||||
- `POST /api/ocr/service-document`
|
||||
|
||||
Расход топлива считается по интервалам между полными баками (`is_full_tank=true`). Если данных мало, API возвращает `null`, а не выдуманную цифру.
|
||||
|
||||
## OCR
|
||||
|
||||
Настоящий OCR по фото/PDF пока не подключен. Endpoint `POST /api/ocr/parse-text-receipt` честно разбирает только текстовый чек. Старый `/api/ocr/fuel-receipt` оставлен как deprecated-совместимость.
|
||||
|
||||
Новая OCR-архитектура использует заменяемый provider:
|
||||
|
||||
- `OCRProvider`
|
||||
- `StubOCRProvider`
|
||||
- будущие `TesseractOCRProvider`, cloud OCR или VLM provider
|
||||
|
||||
OCR возвращает кандидаты и не меняет данные автомобиля напрямую:
|
||||
|
||||
```json
|
||||
{
|
||||
"recognized_text": "VIN KMHCT41BAHU123456",
|
||||
"candidates": [
|
||||
{"type": "vin", "value": "KMHCT41BAHU123456", "confidence": 0.84}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Platform Roadmap
|
||||
|
||||
Проектное расширение в сторону владельцев авто и СТО описано в `PROJECT_PLAN.md`. В код добавлен первый совместимый слой платформы:
|
||||
|
||||
- расширенный `ServiceCenter`;
|
||||
- верификация СТО;
|
||||
- сотрудники СТО;
|
||||
- `VehicleAccess`;
|
||||
- `ServiceVisit`;
|
||||
- `ServiceWorkItem`;
|
||||
- `VehicleDataChangeRequest`;
|
||||
- `AuditLog`;
|
||||
- нормализация VIN и госномера.
|
||||
|
||||
СТО не получает персональные данные владельца по VIN/номеру. Поиск возвращает только минимальную маскированную карточку и пишет действие в аудит. Критичные изменения автомобиля проходят через запрос подтверждения владельцем.
|
||||
|
||||
Reference in New Issue
Block a user