Sahil Garg
temperture input handling built
d8c5e83
Raw History Blame Contribute Delete
1.2 kB
from fastapi import FastAPI, HTTPException
import logging
from src.config import Config
from src.models import SensorData, AnalysisResponse
from src.services import AnalysisService
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
config = Config()
app = FastAPI(title=config.APP_TITLE, version=config.APP_VERSION)
service = AnalysisService(config)
@app.post("/analyze", response_model=AnalysisResponse)
async def analyze_sensor_data(data: SensorData):
try:
logger.info(f"Processing request with {len(data.vdc1)} voltage and {len(data.idc1)} current data points")
ml_output, agent_output = service.analyze(data.vdc1, data.idc1, data.pvt, data.api_key, data.asset_id)
return AnalysisResponse(ml_output=ml_output, agent_output=agent_output)
except HTTPException:
raise
except Exception as e:
logger.error(f"Error processing request: {e}")
raise HTTPException(status_code=500, detail=str(e))
@app.get("/")
async def root():
return {"message": "Solar PV Predictive Maintenance", "endpoint": "/analyze (POST)"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host=config.HOST, port=config.PORT)