diff --git a/web/app.py b/web/app.py index fddd9fd..730c7c7 100644 --- a/web/app.py +++ b/web/app.py @@ -365,6 +365,48 @@ async def api_get_digest(digest_id: int, username: str = Depends(get_current_adm } }) +# ============================================================================ +# ФАЙЛЫ (FILES) +# ============================================================================ + +@app.get("/files", response_class=HTMLResponse) +async def files_page(request: Request, username: str = Depends(get_current_admin)): + return templates.TemplateResponse("files.html", {"request": request, "username": username}) + +@app.get("/api/files/list") +async def api_list_files(username: str = Depends(get_current_admin)): + files_data = [] + + # 1. Экспорты + export_path = BASE_DIR / "exports" + if export_path.exists(): + for f in export_path.glob("*.json"): + files_data.append({ + "filename": f.name, + "file_type": "EXPORT", + "size": f"{round(f.stat().st_size / 1024, 1)} KB", + "path": f"/exports/{f.name}" + }) + + # 2. Логи + log_path = BASE_DIR / "logs" + if log_path.exists(): + for f in log_path.glob("*.log"): + files_data.append({ + "filename": f.name, + "file_type": "LOG", + "size": f"{round(f.stat().st_size / 1024, 1)} KB", + "path": f"/api/files/download/logs/{f.name}" + }) + + return JSONResponse({"success": True, "files": files_data}) + +@app.get("/api/files/download/logs/{filename}") +async def download_log(filename: str, username: str = Depends(get_current_admin)): + filepath = BASE_DIR / "logs" / filename + if not filepath.exists(): raise HTTPException(status_code=404, detail="File not found") + return FileResponse(filepath, filename=filename) + # ============================================================================ # ЭКСПОРТ (JSON + GITEA) # ============================================================================ diff --git a/web/templates/files.html b/web/templates/files.html index 8d66a1a..2a16483 100644 --- a/web/templates/files.html +++ b/web/templates/files.html @@ -1,97 +1,95 @@ {% extends "base.html" %} -{% block title %}Менеджер файлов - LKM37{% endblock %} +{% block title %}Файловое хранилище - LKM37{% endblock %} {% block nav_files %}active{% endblock %} {% block content %} -

+

>_ ХРАНИЛИЩЕ_АРТЕФАКТОВ (FILES)

-
-
-
-
-
ЗАГРУЗИТЬ НОВЫЙ ФАЙЛ
-
-
- -
-
- -
-
-
-
+
+
+ СПИСОК_ДОСТУПНЫХ_ФАЙЛОВ +
-
- -
-
СПИСОК_ЗАГРУЖЕННЫХ_ФАЙЛОВ
- - - - - + + + + + - + + +
ИМЯТИПFILE_ID (TELEGRAM)ДЕЙСТВИЯ
ИМЯ ФАЙЛАКАТЕГОРИЯРАЗМЕРДЕЙСТВИЯ
+
+
Сканирование секторов...
+
+ +
+
+
+
ИНФОРМАЦИЯ
+
+
    +
  • Категория EXPORT: JSON-выгрузки истории чата.
  • +
  • Категория LOG: Системные логи бота и веб-панели.
  • +
  • Все файлы доступны для прямого скачивания на локальный хост.
  • +
+
+
+
+
{% endblock %} + {% block extra_script %}