added react frontend

This commit is contained in:
Vyacheslav K
2025-05-21 14:24:31 +03:00
parent 96ea504b10
commit d3e7607d15
18 changed files with 3620 additions and 145 deletions

40
main.py
View File

@@ -1,39 +1 @@
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from fastapi.staticfiles import StaticFiles
from fastapi.responses import HTMLResponse
from typing import Optional, Dict, Any
import json
from callback import call_action
from fastapi.responses import JSONResponse
app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")
class ActionArgs(BaseModel):
args: Optional[Dict[str, Any]] = None
@app.get("/")
async def read_index():
with open("static/index.html", "r", encoding="utf-8") as f:
html_content = f.read()
return HTMLResponse(content=html_content, status_code=200)
@app.post("/action/{name:path}")
async def handle_action(name: str, action_args: ActionArgs):
try:
# Вызываем функцию из callback.py, передавая имя действия и аргументы
result = await call_action(name, action_args.args or {})
return JSONResponse(content={"status": "success", "result": result})
except ValueError as e:
# Если функция не найдена, возвращаем 404
raise HTTPException(status_code=404, detail=str(e))
except Exception as e:
# Обработка остальных ошибок
raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
import web_server # Web server module