Изменения в форме (Шаг 1): - Полис в одну строку: E1000-302538524 (было: отдельно серия и номер) - Email теперь обязателен (было: опционально) - Убран ИНН (было: опционально) - Автозамена кириллицы на латиницу (Е→E, О→O и т.д.) - Валидация формата: буква + 4 цифры + тире + 9 цифр Изменения в Backend API: - PolicyCheckRequest: voucher + email (убран inn) - policy_service: упрощен запрос к MySQL - Добавлено подключение MySQL в lifespan Изменения в ClaimForm: - FormData обновлен: voucher вместо policyNumber/policySeries - Убрано поле inn из всей логики Статус: Frontend работает, MySQL требует настройки доступа
46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
"""
|
|
Policy API Routes - Проверка полисов
|
|
"""
|
|
from fastapi import APIRouter, HTTPException
|
|
from pydantic import BaseModel
|
|
from ..services.policy_service import policy_service
|
|
|
|
router = APIRouter(prefix="/api/v1/policy", tags=["Policy"])
|
|
|
|
|
|
class PolicyCheckRequest(BaseModel):
|
|
"""Запрос на проверку полиса"""
|
|
voucher: str # Полный номер полиса вида E1000-302538524
|
|
email: str # Email обязателен
|
|
|
|
|
|
@router.post("/check")
|
|
async def check_policy(request: PolicyCheckRequest):
|
|
"""
|
|
Проверить полис в БД
|
|
|
|
- **voucher**: Номер полиса вида E1000-302538524
|
|
- **email**: Email заявителя (обязательно)
|
|
|
|
Returns:
|
|
- found: true/false
|
|
- policy_data: данные полиса если найден
|
|
"""
|
|
policy = await policy_service.check_policy(request.voucher)
|
|
|
|
if policy:
|
|
return {
|
|
"success": True,
|
|
"found": True,
|
|
"message": "Полис найден в базе",
|
|
"policy_data": policy
|
|
}
|
|
else:
|
|
return {
|
|
"success": True,
|
|
"found": False,
|
|
"message": "Полис не найден. Загрузите скан полиса.",
|
|
"policy_data": None
|
|
}
|
|
|