Проблема: FastAPI-приложение возвращает HTTP 500 Internal Server Error при запросе — необработанное исключение на стороне сервера.

Причины:
1. Код приложения генерирует исключение (ошибка в логике, работе с БД, парсинге данных).
2. Ошибка импорта/загрузки модуля (SyntaxError, ImportError, отсутствие зависимости).
3. Не задана обязательная переменная окружения (ключ, URL, токен).
4. Некорректная конфигурация ASGI-сервера (неверный путь к `app` или `application`).
5. Проблема CORS/middleware (исключение при обработке запроса).
6. Ошибка шаблонизатора (если Jinja2) — шаблон не найден или синтаксически неверен.
7. Нехватка ресурсов (память, файловые дескрипторы) — сервер падает.

Решение:
1. Временно включить режим отладки (только в dev):
python
app = FastAPI(debug=True)

→ увидеть полный traceback в теле ответа. После отладки отключить.
2. Проверить логи Uvicorn/Gunicorn:
bash
uvicorn main:app --log-level debug

3. Запустить статический анализатор кода:
bash
flake8 . --exclude=.venv

4. Проверить зависимости:
bash
pip check

5. Добавить глобальный обработчик исключений (без утечки данных):
python
import logging
from fastapi.responses import JSONResponse

logger = logging.getLogger("uvicorn.error")

@app.exception_handler(Exception)
async def global_handler(request, exc):
logger.exception("500 on %s", request.url)
return JSONResponse(status_code=500, content={"detail": "Internal server error"})

6. Изолировать эндпоинт — выполнить запрос к `/docs` (OpenAPI). Если 500 есть и там — проблема в инициализации приложения.
7. Проверить переменные окружения (`.env`):
bash
printenv | grep -E "DATABASE|SECRET|API_KEY"

8. Для продакшена — настроить централизованное логирование (Sentry, ELK) и никогда не возвращать traceback в теле ответа (CWE-209).