mirror of
https://gitverse.ru/kpa39l/md2vk.git
synced 2026-09-29 09:55:04 +00:00
Baseline md2vk: docs, audit log, docker 8420, openspec, deploy
This commit is contained in:
+48
@@ -0,0 +1,48 @@
|
||||
"""md2vk — FastAPI приложение."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
from fastapi import FastAPI, Request
|
||||
from fastapi.responses import JSONResponse
|
||||
|
||||
from app.database import init_db
|
||||
from app.api.v1 import router as api_v1_router
|
||||
from app.api.audit import AuditMiddleware
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(name)s: %(message)s")
|
||||
logger = logging.getLogger("md2vk")
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI):
|
||||
"""Инициализация при старте."""
|
||||
logger.info("Initializing database...")
|
||||
await init_db()
|
||||
logger.info("Database ready. Starting md2vk...")
|
||||
yield
|
||||
logger.info("Shutting down...")
|
||||
|
||||
|
||||
app = FastAPI(
|
||||
title="md2vk",
|
||||
description="Сервис публикации Markdown на стене VK",
|
||||
version="0.1.0",
|
||||
lifespan=lifespan,
|
||||
)
|
||||
|
||||
# Аудит-лог авторизации/запросов API (JSONL, ротация по дням)
|
||||
app.add_middleware(AuditMiddleware)
|
||||
|
||||
app.include_router(api_v1_router)
|
||||
|
||||
|
||||
@app.exception_handler(Exception)
|
||||
async def global_exception_handler(request: Request, exc: Exception):
|
||||
logger.error(f"Unhandled error: {exc}", exc_info=True)
|
||||
return JSONResponse(
|
||||
status_code=500,
|
||||
content={"detail": f"Internal server error: {str(exc)}"},
|
||||
)
|
||||
Reference in New Issue
Block a user