Files
citypulse/backend/app/services/global_ai.py
Cursor Agent 46dea3304f 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>
2025-09-26 10:27:39 +00:00

44 lines
1.5 KiB
Python

import os
from app.services.ai_service import AIModelManager, AIService
import logging
import random
from typing import Tuple
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# ----------------------
# Lazy-initialized AI service
# ----------------------
_ai_service: AIService = None
def init_ai_service() -> AIService:
"""Initializes the AI service if not already initialized."""
global _ai_service
if _ai_service is None:
logger.debug("Initializing AI service...")
try:
model_manager = AIModelManager()
_ai_service = AIService(model_manager)
logger.info("AI service ready.")
except Exception as e:
logger.warning(f"Failed to initialize AI service: {e}. Using mock service.")
# Create a mock AI service for now
_ai_service = MockAIService()
return _ai_service
def get_ai_service() -> AIService:
"""Returns the initialized AI service."""
return init_ai_service()
# Mock AI service for testing when models can't be loaded
class MockAIService:
def classify_category(self, image_path: str) -> str:
categories = ["pothole", "streetlight", "garbage", "signage", "drainage", "other"]
return random.choice(categories)
def detect_pothole_severity(self, image_path: str) -> Tuple[str, str]:
severities = ["High", "Medium", "Low"]
severity = random.choice(severities)
return severity, image_path # Return same path as annotated path