Baseline md2vk: docs, audit log, docker 8420, openspec, deploy

This commit is contained in:
estorozhenko
2026-09-18 22:05:01 +00:00
commit 09e960a3a9
39 changed files with 3716 additions and 0 deletions
+48
View File
@@ -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)}"},
)