Spaces:
Sleeping
Sleeping
| import os | |
| import pandas as pd | |
| from fastapi import FastAPI, Request, Form | |
| from fastapi.responses import JSONResponse, HTMLResponse | |
| from fastapi.staticfiles import StaticFiles | |
| from fastapi.templating import Jinja2Templates | |
| from dotenv import load_dotenv | |
| from pathlib import Path | |
| from chatbot import WatershedChatbot | |
| load_dotenv() | |
| app = FastAPI() | |
| app.mount("/static", StaticFiles(directory="static"), name="static") | |
| templates = Jinja2Templates(directory="templates") | |
| chatbot = WatershedChatbot() | |
| csv_path = Path(__file__).resolve().parent / "summary.csv" | |
| try: | |
| summary_df = pd.read_csv(csv_path) | |
| except FileNotFoundError: | |
| dummy_data = pd.DataFrame([ | |
| { | |
| "district": "Example District", | |
| "cropping_intensity": 100, | |
| "soil_loss": 10, | |
| "check_dams": 5, | |
| "reforested_area": 200 | |
| } | |
| ]) | |
| dummy_data.to_csv(csv_path, index=False) | |
| summary_df = dummy_data | |
| print(f"[INFO] Created dummy summary.csv at {csv_path}") | |
| summary_df.columns = summary_df.columns.str.lower().str.strip() | |
| async def get_home(request: Request): | |
| districts = ["All"] + sorted(summary_df["district"].unique().tolist()) | |
| summary_data = summary_df.to_dict(orient="records") | |
| return templates.TemplateResponse("index.html", { | |
| "request": request, | |
| "districts": districts, | |
| "summary_data": summary_data | |
| }) | |
| async def chat_endpoint(query: str = Form(...), district: str = Form(None)): | |
| try: | |
| response = chatbot.answer_query(query, district) | |
| return JSONResponse(content=response) | |
| except Exception as e: | |
| return JSONResponse(status_code=500, content={"error": str(e)}) | |