- Добавлена полная интеграция с 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 интеграции
61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
"""
|
|
Banks API - получение списка банков СБП
|
|
"""
|
|
from fastapi import APIRouter, HTTPException
|
|
import httpx
|
|
import logging
|
|
from ..config import settings
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
router = APIRouter(prefix="/api/v1/banks", tags=["Banks"])
|
|
|
|
|
|
@router.get("/nspk")
|
|
async def get_nspk_banks():
|
|
"""
|
|
Получить список банков СБП из внешнего API
|
|
Проксирует запрос для избежания Mixed Content ошибок (HTTPS -> HTTP)
|
|
"""
|
|
try:
|
|
# URL внешнего API
|
|
external_api_url = "http://212.193.27.93/api/payouts/dictionaries/nspk-banks"
|
|
|
|
async with httpx.AsyncClient(timeout=10.0) as client:
|
|
response = await client.get(external_api_url)
|
|
|
|
if response.status_code != 200:
|
|
logger.error(f"Failed to fetch banks: HTTP {response.status_code}")
|
|
raise HTTPException(
|
|
status_code=response.status_code,
|
|
detail=f"Failed to fetch banks list: {response.status_code}"
|
|
)
|
|
|
|
banks_data = response.json()
|
|
logger.info(f"✅ Loaded {len(banks_data)} banks from external API")
|
|
|
|
return banks_data
|
|
|
|
except httpx.TimeoutException:
|
|
logger.error("Timeout while fetching banks")
|
|
raise HTTPException(
|
|
status_code=504,
|
|
detail="Timeout while fetching banks list"
|
|
)
|
|
except httpx.RequestError as e:
|
|
logger.error(f"Request error while fetching banks: {e}")
|
|
raise HTTPException(
|
|
status_code=502,
|
|
detail=f"Failed to connect to banks API: {str(e)}"
|
|
)
|
|
except Exception as e:
|
|
logger.error(f"Unexpected error while fetching banks: {e}")
|
|
raise HTTPException(
|
|
status_code=500,
|
|
detail=f"Internal error: {str(e)}"
|
|
)
|
|
|
|
|
|
|
|
|