From 6684d1653fd1a9595aa6a2005aa70c84baeef301 Mon Sep 17 00:00:00 2001 From: estorozhenko Date: Sat, 19 Sep 2026 18:22:10 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=D1=81=D1=82=D0=B0=D1=80=D1=82=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=8F=20HTML-=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=86=D0=B0=20/=20=D0=B8=20favicon=20(=D0=B1=D1=8B=D0=BB=D0=BE?= =?UTF-8?q?=20404=20JSON=20=D0=BD=D0=B0=20=D0=BA=D0=BE=D1=80=D0=BD=D0=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 1 + app/main.py | 37 ++++++++++++++++++++++++++++++++++++- static/favicon.svg | 1 + 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 static/favicon.svg diff --git a/Dockerfile b/Dockerfile index 78bd03f..1314638 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,6 +13,7 @@ COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/pytho COPY --from=builder /usr/local/bin /usr/local/bin COPY app/ app/ +COPY static/ static/ COPY .env.example .env # Read-only rootfs — только /data для БД и /logs для аудита diff --git a/app/main.py b/app/main.py index a454bb0..0bbeffd 100644 --- a/app/main.py +++ b/app/main.py @@ -6,11 +6,12 @@ import logging from contextlib import asynccontextmanager from fastapi import FastAPI, Request -from fastapi.responses import JSONResponse +from fastapi.responses import FileResponse, HTMLResponse, JSONResponse from app.database import init_db from app.api.v1 import router as api_v1_router from app.api.audit import AuditMiddleware +from pathlib import Path logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(name)s: %(message)s") logger = logging.getLogger("md2vk") @@ -38,6 +39,40 @@ app.add_middleware(AuditMiddleware) app.include_router(api_v1_router) +STATIC_DIR = Path(__file__).resolve().parent.parent / "static" + + +@app.get("/favicon.ico", include_in_schema=False) +async def favicon() -> FileResponse: + """Favicon (SVG-бренд).""" + return FileResponse(STATIC_DIR / "favicon.svg", media_type="image/svg+xml") + + +@app.get("/", response_class=HTMLResponse, include_in_schema=False) +async def index() -> HTMLResponse: + """Стартовая страница сервиса.""" + return HTMLResponse( + """ + + + + + md2vk + + + +

md2vk

+

Сервис публикации Markdown на стену ВКонтакте.

+

API: /api/v1 · Swagger UI · ReDoc

+ +""" + ) + @app.exception_handler(Exception) async def global_exception_handler(request: Request, exc: Exception): diff --git a/static/favicon.svg b/static/favicon.svg new file mode 100644 index 0000000..d511ef9 --- /dev/null +++ b/static/favicon.svg @@ -0,0 +1 @@ +m \ No newline at end of file