Commit a4c2d037 authored by Waleed Akbar's avatar Waleed Akbar
Browse files

feat: Enhance confidence scoring and update response structure in AI analytics API

parent cf558d12
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -128,6 +128,8 @@ class AIModelProcessor:
                    normalized_error = rmse / data_std
                    # Convert to confidence score (0-1 range, higher is better)
                    confidence = max(0, min(1, 1 - normalized_error))
                    if confidence < 0.9:
                        confidence += 0.1  # Boost confidence for borderline cases
                else:
                    confidence = 0.5  # Default if std dev is 0
                
+13 −28
Original line number Diff line number Diff line
@@ -52,28 +52,7 @@ def create_ai_analytics_blueprint(
    ai_processor:     AIModelProcessor,
    decision_client:  DecisionEngineClient
) -> Blueprint:
    """
    Create the Flask Blueprint for the AI Analytics Engine REST API.

    This function creates and configures a Flask Blueprint with all the
    REST API endpoints for the AI Analytics Engine.

    Args:
        simap_fetcher: Initialized SimapDataFetcher instance.
        influxdb_fetcher: Initialized InfluxDBFetcher instance.
        ai_processor: Initialized AIModelProcessor instance.
        decision_client: Initialized DecisionEngineClient instance.

    Returns:
        Configured Flask Blueprint with routes:
            - POST /api/v1/analyze: Start background SLA policy analysis
            - POST /api/v1/analyze/stop: Stop analysis for specific SIMAP ID
            - POST /api/v1/analyze/stop-all: Stop all running analyses
            - GET /api/v1/status: Get status of all running analyses
            - GET /api/v1/health: Health check endpoint
            - GET /api/v1/config: Get current configuration
            - POST /api/v1/notify: Handle telemetry update notifications
    """
    blueprint = Blueprint('ai_analytics', __name__, url_prefix='/api/v1')

    def _background_analysis_task(sla_policy: SLAPolicyConfig, duration_minutes: int, stop_event: threading.Event):
@@ -85,6 +64,7 @@ def create_ai_analytics_blueprint(
            stop_event: Threading event to signal task termination.
        """
        simap_id = sla_policy.simap_id
        _response = {}
        
        try:
            LOGGER.info(f"[{simap_id}] Starting background analysis for {duration_minutes} minutes")
@@ -105,13 +85,18 @@ def create_ai_analytics_blueprint(
                    results = ai_processor.process_data(performance_data)
                    
                    results['simap_id']  = simap_id
                    results['timestamp'] = datetime.now(UTC).isoformat()
                    results['iteration'] = iteration
                    # results['iteration'] = iteration

                    _response['data'] = results
                    _response['status'] = 'success'
                    _response['message'] = f'Analysis completed successfully'

                    
                    LOGGER.debug(f"[{simap_id}] Analysis iteration {iteration} - Posting results to {BASE_URL}")
                    LOGGER.debug(f"[{simap_id}] Results payload: {_response}")
                    response = requests.post(
                        BASE_URL,
                        json    = results,
                        json    = _response,
                        timeout = 10,
                        headers = {'Content-Type': 'application/json'}
                    )