Files
aiform_prod/backend/app/api/policy.py
AI Assistant f2cfa54c9d feat: Улучшена форма полиса - маска ввода и загрузка скана
Изменения в 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
2025-10-24 21:12:30 +03:00

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
}