from flask import Blueprint, jsonify
from flask_babel import _
import random
from datetime import datetime
from models.incident_model import IncidentAnalysisModel, IncidentModel

incident_api_bp = Blueprint("incident", __name__)

@incident_api_bp.route("/api/incidents/<incident_id>", methods=["GET"])
def get_incident(incident_id):

    incident_analyze:IncidentAnalysisModel = IncidentAnalysisModel.query.filter_by(id=incident_id).first()
    if not incident_analyze:
        return jsonify({
            "status": "error",
            "message": _("آنالیز هوش مصنوعی یافت نشد")
        }), 404

    response = incident_analyze.analysis_json
    return jsonify(response)
    # -----------------------------
    # MOCK DATA (DB is empty)
    # -----------------------------
    # mock_incident = {
    #     "incident_uid": incident_id,
    #     "machine_id": 2,
    #     "source_type": "sensor",
    #     "status": "completed",
    #     "severity": "warning",
    #     "confidence": 91,

    #     "summary": "Abnormal temperature instability detected in Dryer Line 2. This may reduce product quality.",

    #     "incident_info": [
    #         {"label": "Machine", "value": "Dryer-02"},
    #         {"label": "Detection Time", "value": "14:32:18"},
    #         {"label": "Duration", "value": "8 min"}
    #     ],

    #     "parameters": [
    #         {"name": "Air Temperature", "value": "-12°C", "level": "medium"},
    #         {"name": "Fan RPM", "value": "-22%", "level": "high"},
    #         {"name": "Product Moisture", "value": "+18%", "level": "high"}
    #     ],

    #     "causes": [
    #         {"name": "Fan performance degradation", "level": "high"},
    #         {"name": "Temperature sensor drift", "level": "medium"},
    #         {"name": "PID instability", "level": "low"}
    #     ],

    #     "actions": [
    #         "Inspect fan RPM and vibration status",
    #         "Verify temperature sensor calibration",
    #         "Check airflow obstruction inside chamber"
    #     ],

    #     "footer": {
    #         "similar_incidents": ["#2041", "#1988"]
    #     },

    #     "created_at": datetime.utcnow().isoformat()
    # }
    mock_incident = {
  "incident_uid": "ring-spinning-7-2026-05-30T00:00:58.026982-multi-signal-threshold-breach",
  "machine_id": 7,
  "source_type": "sensor",
  "status": "completed",
  "severity": "high",
  "confidence": 95,
  "summary": "ناپایداری همزمان و شدید در کیفیت ریسندگی در ماشین ریسندگی خط ۱ شناسایی شد. افزایش ناگهانی درصد یکنواختی نخ، نرخ پارگی نخ و مجموع عیوب نخ نشان‌دهنده یک اختلال فرآیندی/مکانیکی مشترک در ناحیه کشش، تاب‌دهی یا مسیر عبور نخ است که می‌تواند به افت جدی کیفیت و افزایش ضایعات منجر شود.",
  "incident_info": [
    {
      "label": "Machine",
      "value": "ماشین ریسندگی خط ۱"
    },
    {
      "label": "Detection Time",
      "value": "2026-05-30T00:00:58.026982"
    },
    {
      "label": "Duration",
      "value": "28.19 sec"
    },
    {
      "label": "Incident Type",
      "value": "threshold_breach"
    },
    {
      "label": "Trigger Parameter",
      "value": "درصد یکنواختی نخ"
    },
    {
      "label": "Signal Count",
      "value": "17"
    },
    {
      "label": "Pattern",
      "value": "multi-parameter sudden jump + sustained critical quality deviation"
    }
  ],
  "parameters": [
    {
      "name": "درصد یکنواختی نخ",
      "value": "92.81",
      "level": "high"
    },
    {
      "name": "درصد یکنواختی نخ - پیک",
      "value": "95.00",
      "level": "high"
    },
    {
      "name": "نرخ پارگی نخ",
      "value": "49.47",
      "level": "high"
    },
    {
      "name": "نرخ پارگی نخ - تکرار",
      "value": "45.56",
      "level": "high"
    },
    {
      "name": "مجموع عیوب نخ",
      "value": "143.74",
      "level": "high"
    },
    {
      "name": "مجموع عیوب نخ - پیک",
      "value": "143.83",
      "level": "high"
    },
    {
      "name": "مصرف انرژی لحظه‌ای ماشین",
      "value": "47.12",
      "level": "medium"
    }
  ],
  "causes": [
    {
      "name": "اختلال مکانیکی یا تنظیمی در سیستم کشش نخ شامل غلتک‌های درافت، فشار نادرست، لغزش یا ناهماهنگی سرعت",
      "level": "high"
    },
    {
      "name": "مشکل در ناحیه تاب‌دهی و تشکیل نخ مانند وضعیت رینگ/تراولر، بالونینگ یا تنش نامتعادل نخ",
      "level": "high"
    },
    {
      "name": "افزایش اصطکاک، آلودگی، پلیسه یا سایش در مسیر عبور نخ که همزمان باعث پارگی و افزایش عیوب شده است",
      "level": "high"
    },
    {
      "name": "ناهمگنی مواد اولیه یا تغذیه نامناسب فتیله/رووینگ که موجب افت یکنواختی و جهش عیوب شده است",
      "level": "medium"
    },
    {
      "name": "خطای اندازه‌گیری یا drift سنسورها کمتر محتمل است، چون چند پارامتر مستقل به‌صورت همزمان دچار انحراف شده‌اند",
      "level": "low"
    }
  ],
  "actions": [
    "بازرسی فوری ناحیه درافت شامل غلتک‌های جلو، میانی و عقب از نظر فشار، لغزش، آلودگی سطح و هم‌راستایی",
    "بررسی وضعیت رینگ و تراولر، تنش نخ، بالونینگ و وجود سایش یا گیر مکانیکی در اسپیندل‌های درگیر",
    "کنترل مسیر عبور نخ برای شناسایی پلیسه، تجمع پرز، آلودگی، لب‌پریدگی یا تماس غیرعادی نخ با قطعات",
    "نمونه‌برداری از نخ و فتیله/رووینگ ورودی برای ارزیابی یکنواختی، نپ، عیوب جرمی و مقایسه با حد مجاز",
    "مقایسه سکشن/اسپیندل‌های مجاور برای تشخیص اینکه مشکل موضعی است یا به کل ماشین/بچ مواد مربوط می‌شود",
    "بررسی تنظیمات twist، draft، spacer/apron و شرایط کاری اپراتوری در بازه زمانی وقوع رخداد",
    "در صورت تداوم پارگی بالا، ایزوله کردن سکشن معیوب یا توقف کوتاه‌مدت جهت جلوگیری از تولید نخ نامنطبق",
    "پس از رفع، پایش فشرده 15 تا 30 دقیقه‌ای روی سه شاخص یکنواختی، پارگی و مجموع عیوب انجام شود"
  ],
  "footer": {
    "similar_incidents": [],
    "expert_note": "این رخداد نسبت به incident قبلی شدیدتر و معنادارتر است، زیرا برخلاف رخداد قبلی که عمدتاً روی «مجموع عیوب نخ» متمرکز بود، در اینجا سه شاخص اصلی کیفیت و پایداری فرآیند یعنی یکنواختی، پارگی و عیوب به‌صورت همزمان و همراه با sudden jump منحرف شده‌اند. این الگو بیشتر با یک اختلال واقعی فرآیندی/مکانیکی سازگار است تا نویز سنسور.",
    "recommended_priority": "immediate"
  },
  "created_at": "2026-05-30T00:01:26.213981"
}

    return jsonify(mock_incident)