Refactor: Integrate backend API and normalize data

This commit integrates the backend API for fetching and updating report data. It also includes a normalization function to handle data consistency between the API and local storage.

Co-authored-by: anthonymuncher <anthonymuncher@gmail.com>
This commit is contained in:
Cursor Agent
2025-09-26 10:27:39 +00:00
parent 1637e013c5
commit 46dea3304f
39 changed files with 29186 additions and 23 deletions

72
backend/main.py Normal file
View File

@@ -0,0 +1,72 @@
import os
import logging
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from app.database import Base, engine
from app.routes import report, tickets, analytics, users
from app.services.global_ai import init_ai_service
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
# ----------------------
# Lifespan context for startup/shutdown
# ----------------------
@asynccontextmanager
async def lifespan(app: FastAPI):
logger.info("Starting FixMate Backend...")
init_ai_service() # ✅ Models load once here
logger.info("AI models loaded successfully.")
yield
logger.info("FixMate Backend shutting down...")
# ----------------------
# Initialize FastAPI
# ----------------------
app = FastAPI(
title="FixMate Backend API",
description="Backend for FixMate Hackathon Prototype",
version="1.0.0",
lifespan=lifespan
)
# ----------------------
# Initialize DB
# ----------------------
Base.metadata.create_all(bind=engine)
logger.info("Database initialized.")
# ----------------------
# Static files
# ----------------------
UPLOAD_DIR = "static/uploads"
os.makedirs(UPLOAD_DIR, exist_ok=True)
app.mount("/static", StaticFiles(directory="static"), name="static")
# ----------------------
# Include routers
# ----------------------
try:
app.include_router(report.router, prefix="/api", tags=["Report"])
app.include_router(tickets.router, prefix="/api", tags=["Tickets"])
app.include_router(analytics.router, prefix="/api", tags=["Analytics"])
app.include_router(users.router, prefix="/api", tags=["Users"])
print("✅ All routers included successfully")
except Exception as e:
print(f"❌ Error including routers: {e}")
import traceback
traceback.print_exc()
@app.get("/")
def root():
return {"message": "Welcome to FixMate Backend API! Visit /docs for API documentation."}
print("✅ FastAPI server setup complete")
# Start the server when running this script directly
if __name__ == "__main__":
import uvicorn
print("🚀 Starting server on http://127.0.0.1:8000")
print("📚 API documentation available at http://127.0.0.1:8000/docs")
uvicorn.run(app, host="127.0.0.1", port=8000)