Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, Request, UploadFile, File | |
| from fastapi.responses import HTMLResponse, StreamingResponse | |
| from fastapi.templating import Jinja2Templates | |
| import requests | |
| app = FastAPI(title="Scoring UI") | |
| templates = Jinja2Templates(directory="templates") | |
| # 🔧 Локальный адрес FastAPI-сервера | |
| API_URL = "http://localhost:8000/predict_csv" | |
| async def home(request: Request): | |
| return templates.TemplateResponse("index.html", {"request": request}) | |
| async def health(): | |
| return {"status": "ok", "service": "scoring-ui"} | |
| async def predict_csv(file: UploadFile = File(...)): | |
| files = {"file": (file.filename, await file.read(), file.content_type)} | |
| try: | |
| resp = requests.post(API_URL, files=files, timeout=1800) | |
| resp.raise_for_status() | |
| return StreamingResponse( | |
| iter([resp.content]), | |
| media_type="text/csv", | |
| headers={"Content-Disposition": f'attachment; filename="predicted_{file.filename}"'} | |
| ) | |
| except Exception as e: | |
| return {"error": str(e)} | |