Изменения в UX (Step1Policy): ✅ Автоматическая маска ввода E1000-302538524 - Тире вставляется автоматически - Не нужно вводить вручную ✅ Расширенная автозамена кириллицы: - А→A, а→A, С→C, с→C, Е→E, е→E и т.д. - Поддержка строчных и заглавных ✅ Автоматический uppercase - Все буквы автоматически заглавные ✅ Логика при ненайденном полисе: - НЕ переходит на следующий шаг - Показывает поле загрузки скана прямо на месте - Кнопка "Продолжить со сканом" - Поддержка изображений и PDF ✅ Обработка paste: - Корректная обработка вставки текста - Применяются все правила форматирования Backend (policy.py): ✅ Убран вывод holder_name (для продакшна) - API не возвращает персональные данные - Только found: true/false Формат полиса: Ввод: k78486489849494 или К7848-6489849494 Результат: K7848-648984949
46 lines
1.4 KiB
Python
46 lines
1.4 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 не отдаем (для продакшна)
|
|
}
|
|
else:
|
|
return {
|
|
"success": True,
|
|
"found": False,
|
|
"message": "Полис не найден. Загрузите скан полиса.",
|
|
"policy_data": None
|
|
}
|
|
|