- Добавлена полная интеграция с Telegram Mini App (динамическая загрузка SDK) - Отдельный компактный дизайн для Telegram Mini App - Добавлен loader при инициализации (предотвращает мелькание SMS-авторизации) - Улучшена навигация: кнопки "Назад" и "К списку заявок" теперь сохраняют авторизацию - Telegram Mini App: кнопка "Выход" просто закрывает приложение - Telegram Mini App: заявки "В работе" скрыты из списка - Веб-версия: для заявок "В работе" добавлена кнопка "Просмотреть в Telegram" (ссылка на @klientprav_bot) - Telegram Mini App: кнопки действий в черновиках расположены вертикально - Веб-версия: убрано отображение номера телефона в приветствии - Исправлена проблема с возвратом к списку черновиков (не требует повторной SMS-авторизации) - Заблокировано удаление и редактирование заявок со статусом "В работе" - Добавлена документация по Telegram Mini App интеграции
59 lines
1.7 KiB
Python
59 lines
1.7 KiB
Python
"""
|
|
SMS API Routes
|
|
"""
|
|
from fastapi import APIRouter, HTTPException
|
|
from ..services.sms_service import sms_service
|
|
from .models import SMSSendRequest, SMSVerifyRequest
|
|
|
|
router = APIRouter(prefix="/api/v1/sms", tags=["SMS"])
|
|
|
|
|
|
@router.post("/send")
|
|
async def send_sms_code(request: SMSSendRequest):
|
|
"""
|
|
Отправить SMS код верификации
|
|
|
|
- **phone**: Номер телефона в формате +79001234567
|
|
"""
|
|
from ..config import settings
|
|
|
|
code = await sms_service.send_verification_code(request.phone)
|
|
|
|
if code:
|
|
response = {
|
|
"success": True,
|
|
"message": "Код отправлен на указанный номер"
|
|
}
|
|
# 🔧 DEV MODE: Возвращаем debug_code только в development
|
|
if settings.debug or settings.app_env == "development":
|
|
response["debug_code"] = code
|
|
return response
|
|
else:
|
|
raise HTTPException(
|
|
status_code=429,
|
|
detail="Слишком много запросов. Попробуйте через минуту."
|
|
)
|
|
|
|
|
|
@router.post("/verify")
|
|
async def verify_sms_code(request: SMSVerifyRequest):
|
|
"""
|
|
Проверить SMS код
|
|
|
|
- **phone**: Номер телефона
|
|
- **code**: 6-значный код из SMS
|
|
"""
|
|
is_valid = await sms_service.verify_code(request.phone, request.code)
|
|
|
|
if is_valid:
|
|
return {
|
|
"success": True,
|
|
"message": "Код подтвержден"
|
|
}
|
|
else:
|
|
raise HTTPException(
|
|
status_code=400,
|
|
detail="Неверный код или код истек"
|
|
)
|
|
|