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:
43
backend/app/services/global_ai.py
Normal file
43
backend/app/services/global_ai.py
Normal file
@@ -0,0 +1,43 @@
|
||||
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
|
||||
Reference in New Issue
Block a user