# -*- coding: utf-8 -*-
"""
IModelhaneTakip - Futuristik Modelhane Üretim ve CNC Takip Arayüzü
"""

import sys
import json
from datetime import datetime, timedelta
from typing import Dict, List, Optional
from dataclasses import dataclass
import random

from PyQt6.QtWidgets import (
    QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,
    QGridLayout, QLabel, QPushButton, QFrame, QScrollArea,
    QProgressBar, QTabWidget, QTableWidget, QTableWidgetItem,
    QHeaderView, QSplitter, QTextEdit, QSpinBox, QDoubleSpinBox,
    QComboBox, QLineEdit, QCheckBox, QSlider, QGroupBox,
    QStackedWidget, QGraphicsDropShadowEffect, QToolTip
)
from PyQt6.QtCore import (
    Qt, QTimer, QThread, pyqtSignal, QPropertyAnimation, QEasingCurve,
    QParallelAnimationGroup, QSequentialAnimationGroup, QRect, QPointF,
    QSize, pyqtProperty
)
from PyQt6.QtGui import (
    QFont, QColor, QPalette, QLinearGradient, QRadialGradient,
    QPen, QBrush, QPainter, QPixmap, QIcon, QCursor, QPolygonF
)


@dataclass
class UretimEmri:
    """Üretim emri veri yapısı"""
    id: str
    parca_kodu: str
    parca_adi: str
    miktar: int
    tamamlandi: int
    durum: str  # Bekliyor, İşleniyor, Tamamlandı, Hata
    oncelik: int  # 1-5 arası
    baslangic_tarihi: datetime
    teslim_tarihi: datetime
    operasyon_suresi: float  # dakika
    kullanilan_makine: str
    operator: str
    kalite_durumu: str  # %0-100


@dataclass
class MakineDurumu:
    """Makine durumu veri yapısı"""
    id: str
    ad: str
    tip: str  # CNC, Freze, Turing, vb.
    durum: str  # Çalışıyor, Boşta, Bakımda, Arıza
    mevcut_is: str
    verimlilik: float  # %
    sıcaklık: float
    vibrasyon: float
    bakim_saati: float
    calisma_saati: float
    operasyon_sonrasi: float  # dakika


@dataclass
class Proje:
    """Proje veri yapısı"""
    id: str
    ad: str
    musteri: str
    durum: str  # Planlama, Tasarım, Üretim, Montaj, Test, Teslim, Tamamlandı
    baslangic: datetime
    bitis: datetime
    bütce: float
    harcanan: float
    ilerleme: float  # 0-100
    sorumlu: str
    takim_uyeleri: List[str]
    oncelik: str  # Kritik, Yüksek, Normal, Düşük
    risk_seviyesi: str  # Yüksek, Orta, Düşük


@dataclass
class Siparis:
    """Sipariş veri yapısı"""
    id: str
    proje_id: str
    musteri: str
    urun_kodu: str
    urun_adi: str
    miktar: int
    birim_fiyat: float
    toplam_tutar: float
    siparis_tarihi: datetime
    teslim_tarihi: datetime
    durum: str  # Beklemede, Üretimde, Kargoda, Teslim Edildi, İptal
    odeme_durumu: str  # Ödenmedi, Kısmi Ödeme, Ödendi
    kargo_takip: str


@dataclass
class Teklif:
    """Teklif veri yapısı"""
    id: str
    musteri: str
    proje_adi: str
    konu: str
    tarih: datetime
    gecerlilik_tarihi: datetime
    durum: str  # Hazırlanıyor, Gönderildi, Beklemede, Kabul, Red, Süresi Doldu
    toplam_tutar: float
    kdv: float
    indirim: float
    net_tutar: float
    temsilci: str
    ihtimal: float  # 0-100
    notlar: str


class NeonButton(QPushButton):
    """Neon ışıklı buton sınıfı"""

    def __init__(self, text, color="#00ffff"):
        super().__init__(text)
        self.neon_color = QColor(color)
        self.setupStyle()

    def setupStyle(self):
        self.setStyleSheet(f"""
            QPushButton {{
                background-color: rgba(0, 20, 40, 180);
                border: 2px solid {self.neon_color.name()};
                border-radius: 8px;
                color: {self.neon_color.name()};
                font-size: 14px;
                font-weight: bold;
                padding: 10px 20px;
                text-transform: uppercase;
                letter-spacing: 1px;
            }}
            QPushButton:hover {{
                background-color: rgba(0, 40, 80, 200);
                border: 3px solid {self.neon_color.name()};
                box-shadow: 0 0 15px {self.neon_color.name()};
            }}
            QPushButton:pressed {{
                background-color: rgba(0, 60, 120, 220);
            }}
        """)


class HologramCard(QFrame):
    """Hologram kartı widget"""

    def __init__(self, title="", value="", subtitle="", color="#00ff88"):
        super().__init__()
        self.color = QColor(color)
        self.title = title
        self.value = value
        self.subtitle = subtitle
        self.setupUI()

    def setupUI(self):
        self.setFrameStyle(QFrame.Shape.NoFrame)
        self.setStyleSheet(f"""
            HologramCard {{
                background: qlineargradient(x1:0, y1:0, x2:1, y2:1,
                    stop:0 rgba(0, 20, 40, 200),
                    stop:0.5 rgba(0, 30, 60, 220),
                    stop:1 rgba(0, 40, 80, 200));
                border: 1px solid {self.color.name()};
                border-radius: 15px;
                margin: 5px;
            }}
        """)

        layout = QVBoxLayout()
        layout.setSpacing(5)

        # Başlık
        self.title_label = QLabel(self.title)
        self.title_label.setStyleSheet(f"""
            color: {self.color.name()};
            font-size: 12px;
            font-weight: bold;
            text-transform: uppercase;
            letter-spacing: 1px;
        """)
        layout.addWidget(self.title_label)

        # Değer
        self.value_label = QLabel(self.value)
        self.value_label.setStyleSheet("""
            color: #ffffff;
            font-size: 28px;
            font-weight: bold;
            font-family: 'Consolas', monospace;
        """)
        layout.addWidget(self.value_label)

        # Alt başlık
        if self.subtitle:
            self.subtitle_label = QLabel(self.subtitle)
            self.subtitle_label.setStyleSheet("""
                color: #8888ff;
                font-size: 11px;
            """)
            layout.addWidget(self.subtitle_label)

        self.setLayout(layout)

        # Işıklama efekti
        shadow = QGraphicsDropShadowEffect()
        shadow.setColor(self.color)
        shadow.setBlurRadius(20)
        shadow.setXOffset(0)
        shadow.setYOffset(0)
        self.setGraphicsEffect(shadow)


class FuturisticProgressBar(QProgressBar):
    """Futuristik ilerleme çubuğu"""

    def __init__(self, color="#00ff88"):
        super().__init__()
        self.progress_color = QColor(color)
        self.setupStyle()

    def setupStyle(self):
        self.setStyleSheet(f"""
            QProgressBar {{
                border: 1px solid rgba(0, 255, 136, 100);
                border-radius: 10px;
                text-align: center;
                color: #ffffff;
                font-weight: bold;
                background: rgba(0, 20, 40, 150);
            }}
            QProgressBar::chunk {{
                background: qlineargradient(x1:0, y1:0, x2:1, y2:0,
                    stop:0 {self.progress_color.name()},
                    stop:0.5 #ffffff,
                    stop:1 {self.progress_color.name()});
                border-radius: 9px;
            }}
        """)


class MakineWidget(QWidget):
    """Makine durumu gösteren widget"""

    def __init__(self, makine: MakineDurumu):
        super().__init__()
        self.makine = makine
        self.setupUI()
        self.startAnimations()

    def setupUI(self):
        layout = QVBoxLayout()

        # Makine başlık
        header = QHBoxLayout()

        self.makine_adi = QLabel(self.makine.ad)
        self.makine_adi.setStyleSheet("""
            color: #00ffff;
            font-size: 18px;
            font-weight: bold;
        """)
        header.addWidget(self.makine_adi)

        header.addStretch()

        # Durum etiketi
        durum_renk = {
            "Çalışıyor": "#00ff00",
            "Boşta": "#ffff00",
            "Bakımda": "#ff8800",
            "Arıza": "#ff0000"
        }.get(self.makine.durum, "#888888")

        self.durum_label = QLabel(self.makine.durum)
        self.durum_label.setStyleSheet(f"""
            background-color: {durum_renk};
            color: #000000;
            padding: 5px 15px;
            border-radius: 20px;
            font-weight: bold;
            font-size: 12px;
        """)
        header.addWidget(self.durum_label)

        layout.addLayout(header)

        # Verimlilik çubuğu
        layout.addWidget(QLabel("Verimlilik:"))
        self.verimlilik_bar = FuturisticProgressBar("#00ff88")
        self.verimlilik_bar.setValue(int(self.makine.verimlilik))
        layout.addWidget(self.verimlilik_bar)

        # Sensör verileri grid
        sensor_grid = QGridLayout()

        # Sıcaklık
        sensor_grid.addWidget(QLabel("Sıcaklık:"), 0, 0)
        self.sicaklik_label = QLabel(f"{self.makine.sıcaklık:.1f}°C")
        self.sicaklik_label.setStyleSheet("color: #ff6b6b; font-weight: bold;")
        sensor_grid.addWidget(self.sicaklik_label, 0, 1)

        # Vibrasyon
        sensor_grid.addWidget(QLabel("Vibrasyon:"), 1, 0)
        self.vibrasyon_label = QLabel(f"{self.makine.vibrasyon:.2f} g")
        self.vibrasyon_label.setStyleSheet("color: #ffd43b; font-weight: bold;")
        sensor_grid.addWidget(self.vibrasyon_label, 1, 1)

        # Çalışma saati
        sensor_grid.addWidget(QLabel("Çalışma:"), 2, 0)
        self.calisma_label = QLabel(f"{self.makine.calisma_saati:.1f} sa")
        self.calisma_label.setStyleSheet("color: #4ecdc4; font-weight: bold;")
        sensor_grid.addWidget(self.calisma_label, 2, 1)

        layout.addLayout(sensor_grid)

        # Mevcut iş
        if self.makine.mevcut_is:
            layout.addWidget(QLabel("Mevcut İş:"))
            self.is_label = QLabel(self.makine.mevcut_is)
            self.is_label.setStyleSheet("""
                color: #ffffff;
                background-color: rgba(0, 100, 200, 100);
                padding: 5px;
                border-radius: 5px;
            """)
            self.is_label.setWordWrap(True)
            layout.addWidget(self.is_label)

        self.setLayout(layout)
        self.setStyleSheet("""
            QWidget {
                background-color: rgba(0, 20, 40, 180);
                border: 1px solid rgba(0, 255, 255, 50);
                border-radius: 10px;
                padding: 10px;
            }
        """)

    def startAnimations(self):
        # Animasyonlu güncelleme için timer
        self.update_timer = QTimer()
        self.update_timer.timeout.connect(self.updateData)
        self.update_timer.start(2000)  # 2 saniyede bir güncelle

    def updateData(self):
        # Sensör verilerini rastgele güncelle
        self.makine.sıcaklık += random.uniform(-1, 1)
        self.makine.vibrasyon += random.uniform(-0.05, 0.05)
        self.makine.verimlilik += random.uniform(-2, 2)
        self.makine.verimlilik = max(0, min(100, self.makine.verimlilik))

        self.sicaklik_label.setText(f"{self.makine.sıcaklık:.1f}°C")
        self.vibrasyon_label.setText(f"{self.makine.vibrasyon:.2f} g")
        self.verimlilik_bar.setValue(int(self.makine.verimlilik))


class UretimTakipTable(QTableWidget):
    """Üretim takip tablosu"""

    def __init__(self):
        super().__init__()
        self.setupTable()
        self.loadSampleData()

    def setupTable(self):
        self.setColumnCount(10)
        self.setHorizontalHeaderLabels([
            "Emir No", "Parça Kodu", "Parça Adı", "Miktar",
            "Tamamlandı", "Durum", "Öncelik", "Makine", "Operator", "Kalite"
        ])

        # Stil
        self.setStyleSheet("""
            QTableWidget {
                background-color: rgba(0, 20, 40, 200);
                gridline-color: rgba(0, 255, 255, 30);
                color: #ffffff;
                border: 1px solid rgba(0, 255, 255, 50);
                border-radius: 10px;
                selection-background-color: rgba(0, 255, 255, 100);
            }
            QTableWidget::item {
                padding: 8px;
                border-bottom: 1px solid rgba(0, 255, 255, 20);
            }
            QHeaderView::section {
                background-color: rgba(0, 40, 80, 200);
                color: #00ffff;
                padding: 10px;
                border: 1px solid rgba(0, 255, 255, 50);
                font-weight: bold;
                text-transform: uppercase;
            }
        """)

        # Sütun genişlikleri
        header = self.horizontalHeader()
        header.setSectionResizeMode(QHeaderView.ResizeMode.Stretch)
        header.setSectionResizeMode(0, QHeaderView.ResizeMode.ResizeToContents)
        header.setSectionResizeMode(1, QHeaderView.ResizeMode.ResizeToContents)

    def loadSampleData(self):
        """Örnek üretim verileri yükle"""
        sample_data = [
            ["PRO-2024-001", "PR-001", "Motor Bloğu", "50", "45", "İşleniyor", "1", "CNC-001", "Ahmet Y.", "%95"],
            ["PRO-2024-002", "PR-002", "Silindir Kapağı", "75", "75", "Tamamlandı", "2", "FRZ-002", "Mehmet K.", "%98"],
            ["PRO-2024-003", "PR-003", "Piston Mil", "100", "30", "İşleniyor", "3", "CNC-003", "Ali D.", "%92"],
            ["PRO-2024-004", "PR-004", "Vites Dişlisi", "25", "0", "Bekliyor", "4", "-", "-", "-"],
            ["PRO-2024-005", "PR-005", "Krank Mili", "15", "5", "İşleniyor", "2", "TRN-001", "Mustafa B.", "%88"],
        ]

        self.setRowCount(len(sample_data))

        for row, data in enumerate(sample_data):
            for col, value in enumerate(data):
                item = QTableWidgetItem(str(value))

                # Duruma göre renklendirme
                if col == 5:  # Durum sütunu
                    if value == "Tamamlandı":
                        item.setBackground(QColor(0, 100, 0, 100))
                        item.setForeground(QColor(0, 255, 0))
                    elif value == "İşleniyor":
                        item.setBackground(QColor(0, 50, 100, 100))
                        item.setForeground(QColor(0, 200, 255))
                    elif value == "Bekliyor":
                        item.setBackground(QColor(50, 50, 0, 100))
                        item.setForeground(QColor(255, 255, 0))

                elif col == 6:  # Öncelik sütunu
                    oncelik = int(value)
                    if oncelik == 1:
                        item.setBackground(QColor(100, 0, 0, 100))
                        item.setForeground(QColor(255, 0, 0))
                    elif oncelik == 2:
                        item.setBackground(QColor(100, 50, 0, 100))
                        item.setForeground(QColor(255, 128, 0))

                elif col == 9:  # Kalite sütunu
                    if value != "-":
                        kalite = int(value.replace("%", ""))
                        if kalite >= 95:
                            item.setForeground(QColor(0, 255, 0))
                        elif kalite >= 90:
                            item.setForeground(QColor(255, 255, 0))
                        else:
                            item.setForeground(QColor(255, 100, 100))
                    else:
                        item.setForeground(QColor(150, 150, 150))

                self.setItem(row, col, item)


class ProjeWidget(QFrame):
    """Proje kartı widget"""

    def __init__(self, proje: Proje):
        super().__init__()
        self.proje = proje
        self.setupUI()

    def setupUI(self):
        self.setFrameStyle(QFrame.Shape.Box)
        self.setStyleSheet("""
            QFrame {
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                    stop:0 rgba(0, 40, 80, 200),
                    stop:1 rgba(0, 20, 40, 180));
                border: 2px solid rgba(0, 255, 200, 50);
                border-radius: 15px;
                margin: 10px;
                padding: 15px;
            }
        """)

        layout = QVBoxLayout()

        # Proje başlığı
        header = QHBoxLayout()
        proje_ad = QLabel(self.proje.ad)
        proje_ad.setStyleSheet("""
            color: #00ffff;
            font-size: 16px;
            font-weight: bold;
        """)
        header.addWidget(proje_ad)

        header.addStretch()

        # Öncelik etiketi
        oncelik_renk = {
            "Kritik": "#ff0000",
            "Yüksek": "#ff8800",
            "Normal": "#00ff00",
            "Düşük": "#8888ff"
        }.get(self.proje.oncelik, "#888888")

        oncelik_label = QLabel(self.proje.oncelik)
        oncelik_label.setStyleSheet(f"""
            background-color: {oncelik_renk};
            color: #ffffff;
            padding: 3px 10px;
            border-radius: 10px;
            font-size: 11px;
            font-weight: bold;
        """)
        header.addWidget(oncelik_label)
        layout.addLayout(header)

        # Müşteri
        musteri_label = QLabel(f"📁 {self.proje.musteri}")
        musteri_label.setStyleSheet("color: #aaaaaa; font-size: 12px;")
        layout.addWidget(musteri_label)

        # Durum
        durum_renk = {
            "Planlama": "#ffaa00",
            "Tasarım": "#00aaff",
            "Üretim": "#ff00ff",
            "Montaj": "#00ff88",
            "Test": "#ff6600",
            "Teslim": "#00ff00",
            "Tamamlandı": "#0088ff"
        }.get(self.proje.durum, "#888888")

        durum_label = QLabel(self.proje.durum)
        durum_label.setStyleSheet(f"""
            background-color: {durum_renk};
            color: #000000;
            padding: 5px;
            border-radius: 5px;
            font-weight: bold;
            font-size: 12px;
        """)
        layout.addWidget(durum_label)

        # İlerleme çubuğu
        layout.addWidget(QLabel("İlerleme:"))
        ilerleme_bar = FuturisticProgressBar("#00ffaa")
        ilerleme_bar.setValue(int(self.proje.ilerleme))
        layout.addWidget(ilerleme_bar)

        # Bütçe bilgisi
        budget_layout = QHBoxLayout()
        budget_label = QLabel(f"Bütçe: ${self.proje.bütce:,.0f}")
        budget_label.setStyleSheet("color: #ffaa00; font-weight: bold;")
        budget_layout.addWidget(budget_label)

        spent_label = QLabel(f"Harcanan: ${self.proje.harcanan:,.0f}")
        spent_label.setStyleSheet("color: #ff6666; font-weight: bold;")
        budget_layout.addWidget(spent_label)

        budget_layout.addStretch()
        layout.addLayout(budget_layout)

        # Tarihler
        tarih_label = QLabel(f"📅 {self.proje.baslangic.strftime('%d.%m.%Y')} - {self.proje.bitis.strftime('%d.%m.%Y')}")
        tarih_label.setStyleSheet("color: #888888; font-size: 11px;")
        layout.addWidget(tarih_label)

        # Sorumlu
        sorumlu_label = QLabel(f"👤 Sorumlu: {self.proje.sorumlu}")
        sorumlu_label.setStyleSheet("color: #aaaaaa; font-size: 11px;")
        layout.addWidget(sorumlu_label)

        self.setLayout(layout)


class SiparisWidget(QFrame):
    """Sipariş kartı widget"""

    def __init__(self, siparis: Siparis):
        super().__init__()
        self.siparis = siparis
        self.setupUI()

    def setupUI(self):
        self.setFrameStyle(QFrame.Shape.Box)
        self.setStyleSheet("""
            QFrame {
                background: qlineargradient(x1:0, y1:0, x2:1, y2:0,
                    stop:0 rgba(40, 0, 80, 200),
                    stop:1 rgba(20, 0, 40, 180));
                border: 2px solid rgba(255, 0, 255, 50);
                border-radius: 12px;
                margin: 8px;
                padding: 12px;
            }
        """)

        layout = QVBoxLayout()

        # Sipariş No ve Müşteri
        header = QHBoxLayout()
        no_label = QLabel(f"📦 {self.siparis.id}")
        no_label.setStyleSheet("color: #ff00ff; font-size: 14px; font-weight: bold;")
        header.addWidget(no_label)

        header.addStretch()

        musteri_label = QLabel(self.siparis.musteri)
        musteri_label.setStyleSheet("color: #ffffff; font-size: 13px; font-weight: bold;")
        header.addWidget(musteri_label)
        layout.addLayout(header)

        # Ürün bilgisi
        urun_label = QLabel(f"{self.siparis.urun_kodu} - {self.siparis.urun_adi}")
        urun_label.setStyleSheet("color: #aaaaaa; font-size: 12px;")
        layout.addWidget(urun_label)

        # Miktar ve Fiyat
        info_layout = QHBoxLayout()
        miktar_label = QLabel(f"Miktar: {self.siparis.miktar}")
        miktar_label.setStyleSheet("color: #00ff00; font-weight: bold;")
        info_layout.addWidget(miktar_label)

        fiyat_label = QLabel(f"Birim: ${self.siparis.birim_fiyat:.2f}")
        fiyat_label.setStyleSheet("color: #ffaa00; font-weight: bold;")
        info_layout.addWidget(fiyat_label)

        toplam_label = QLabel(f"Toplam: ${self.siparis.toplam_tutar:,.2f}")
        toplam_label.setStyleSheet("color: #ff6666; font-weight: bold; font-size: 14px;")
        info_layout.addWidget(toplam_label)
        layout.addLayout(info_layout)

        # Durum
        durum_renk = {
            "Beklemede": "#ffaa00",
            "Üretimde": "#00ff00",
            "Kargoda": "#00aaff",
            "Teslim Edildi": "#00ff88",
            "İptal": "#ff0000"
        }.get(self.siparis.durum, "#888888")

        durum_label = QLabel(self.siparis.durum)
        durum_label.setStyleSheet(f"""
            background-color: {durum_renk};
            color: #000000;
            padding: 4px 12px;
            border-radius: 15px;
            font-weight: bold;
            font-size: 11px;
        """)
        layout.addWidget(durum_label)

        # Ödeme durumu
        odeme_renk = {
            "Ödenmedi": "#ff0000",
            "Kısmi Ödeme": "#ffaa00",
            "Ödendi": "#00ff00"
        }.get(self.siparis.odeme_durumu, "#888888")

        odeme_label = QLabel(f"💳 {self.siparis.odeme_durumu}")
        odeme_label.setStyleSheet(f"color: {odeme_renk}; font-weight: bold; font-size: 11px;")
        layout.addWidget(odeme_label)

        # Tarih
        tarih_label = QLabel(f"📅 Teslim: {self.siparis.teslim_tarihi.strftime('%d.%m.%Y')}")
        tarih_label.setStyleSheet("color: #888888; font-size: 10px;")
        layout.addWidget(tarih_label)

        self.setLayout(layout)


class TeklifWidget(QFrame):
    """Teklif kartı widget"""

    def __init__(self, teklif: Teklif):
        super().__init__()
        self.teklif = teklif
        self.setupUI()

    def setupUI(self):
        self.setFrameStyle(QFrame.Shape.Box)
        self.setStyleSheet("""
            QFrame {
                background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                    stop:0 rgba(80, 40, 0, 200),
                    stop:1 rgba(40, 20, 0, 180));
                border: 2px solid rgba(255, 200, 0, 50);
                border-radius: 12px;
                margin: 8px;
                padding: 12px;
            }
        """)

        layout = QVBoxLayout()

        # Teklif No ve Durum
        header = QHBoxLayout()
        no_label = QLabel(f"💼 {self.teklif.id}")
        no_label.setStyleSheet("color: #ffcc00; font-size: 14px; font-weight: bold;")
        header.addWidget(no_label)

        header.addStretch()

        # Durum etiketi
        durum_renk = {
            "Hazırlanıyor": "#ffaa00",
            "Gönderildi": "#00aaff",
            "Beklemede": "#ff8800",
            "Kabul": "#00ff00",
            "Red": "#ff0000",
            "Süresi Doldu": "#888888"
        }.get(self.teklif.durum, "#888888")

        durum_label = QLabel(self.teklif.durum)
        durum_label.setStyleSheet(f"""
            background-color: {durum_renk};
            color: #000000;
            padding: 3px 10px;
            border-radius: 10px;
            font-size: 11px;
            font-weight: bold;
        """)
        header.addWidget(durum_label)
        layout.addLayout(header)

        # Müşteri ve Proje
        musteri_label = QLabel(f"🏢 {self.teklif.musteri}")
        musteri_label.setStyleSheet("color: #ffffff; font-size: 13px;")
        layout.addWidget(musteri_label)

        proje_label = QLabel(f"📋 {self.teklif.proje_adi}")
        proje_label.setStyleSheet("color: #aaaaaa; font-size: 12px;")
        layout.addWidget(proje_label)

        # Konu
        konu_label = QLabel(f"📝 {self.teklif.konu}")
        konu_label.setStyleSheet("color: #dddddd; font-size: 11px;")
        konu_label.setWordWrap(True)
        layout.addWidget(konu_label)

        # Fiyat bilgisi
        fiyat_layout = QGridLayout()
        fiyat_layout.addWidget(QLabel("Toplam:"), 0, 0)
        fiyat_layout.addWidget(QLabel(f"${self.teklif.toplam_tutar:,.2f}"), 0, 1)

        fiyat_layout.addWidget(QLabel("KDV:"), 1, 0)
        fiyat_layout.addWidget(QLabel(f"${self.teklif.kdv:,.2f}"), 1, 1)

        fiyat_layout.addWidget(QLabel("Net:"), 2, 0)
        net_label = QLabel(f"${self.teklif.net_tutar:,.2f}")
        net_label.setStyleSheet("color: #00ff00; font-weight: bold; font-size: 14px;")
        fiyat_layout.addWidget(net_label, 2, 1)
        layout.addLayout(fiyat_layout)

        # İhtimal çubuğu
        ihtimal_bar = FuturisticProgressBar("#ffcc00")
        ihtimal_bar.setValue(int(self.teklif.ihtimal))
        layout.addWidget(QLabel(f"Kazanma İhtimali: %{self.teklif.ihtimal:.0f}"))
        layout.addWidget(ihtimal_bar)

        # Temsilci ve Tarih
        footer_layout = QHBoxLayout()
        temsilci_label = QLabel(f"👤 {self.teklif.temsilci}")
        temsilci_label.setStyleSheet("color: #aaaaaa; font-size: 11px;")
        footer_layout.addWidget(temsilci_label)

        footer_layout.addStretch()

        tarih_label = QLabel(f"📅 {self.teklif.tarih.strftime('%d.%m.%Y')}")
        tarih_label.setStyleSheet("color: #888888; font-size: 10px;")
        footer_layout.addWidget(tarih_label)

        layout.addLayout(footer_layout)

        self.setLayout(layout)


class IModelhaneTakip(QMainWindow):
    """Ana Modelhane Takip Penceresi"""

    def __init__(self):
        super().__init__()
        self.makineler = self.createSampleMachines()
        self.projeler = self.createSampleProjects()
        self.siparisler = self.createSampleOrders()
        self.teklifler = self.createSampleOffers()
        self.setupUI()
        self.startAnimations()

    def createSampleMachines(self):
        """Örnek makine verileri oluştur"""
        return [
            MakineDurumu(
                id="CNC-001",
                ad="CNC İşleme Merkezi 1",
                tip="CNC 5 Eksen",
                durum="Çalışıyor",
                mevcut_is="PR-001 Motor Bloğu - Operasyon 3/5",
                verimlilik=87.5,
                sıcaklık=42.3,
                vibrasyon=0.85,
                bakim_saati=125.5,
                calisma_saati=3420.8,
                operasyon_sonrasi=45
            ),
            MakineDurumu(
                id="FRZ-002",
                ad="Freze Tezgahı 2",
                tip="3 Eksen Freze",
                durum="Boşta",
                mevcut_is="",
                verimlilik=0,
                sıcaklık=28.5,
                vibrasyon=0.12,
                bakim_saati=89.2,
                calisma_saati=2156.3,
                operasyon_sonrasi=0
            ),
            MakineDurumu(
                id="CNC-003",
                ad="CNC İşleme Merkezi 3",
                tip="CNC 3 Eksen",
                durum="Çalışıyor",
                mevcut_is="PR-003 Piston Mil - Operasyon 2/4",
                verimlilik=92.1,
                sıcaklık=45.7,
                vibrasyon=1.12,
                bakim_saati=56.8,
                calisma_saati=1890.5,
                operasyon_sonrasi=30
            ),
            MakineDurumu(
                id="TRN-001",
                ad="Turing Merkezi",
                tip="2 Eksen Turing",
                durum="Bakımda",
                mevcut_is="Bakım Modu",
                verimlilik=0,
                sıcaklık=22.1,
                vibrasyon=0,
                bakim_saati=2.5,
                calisma_saati=4235.7,
                operasyon_sonrasi=120
            ),
        ]

    def createSampleProjects(self):
        """Örnek proje verileri oluştur"""
        return [
            Proje(
                id="PRJ-001",
                ad="Otomatik Vites Sistemi",
                musteri="OtoTek A.Ş.",
                durum="Üretim",
                baslangic=datetime.now() - timedelta(days=30),
                bitis=datetime.now() + timedelta(days=45),
                bütce=250000,
                harcanan=125000,
                ilerleme=65,
                sorumlu="Ahmet Demir",
                takim_uyeleri=["Mehmet Kaya", "Ali Yılmaz", "Veli Can"],
                oncelik="Kritik",
                risk_seviyesi="Orta"
            ),
            Proje(
                id="PRJ-002",
                ad="Hidrolik Pres Kalıbı",
                musteri="PresMak Endüstri",
                durum="Tasarım",
                baslangic=datetime.now() - timedelta(days=15),
                bitis=datetime.now() + timedelta(days=60),
                bütce=180000,
                harcanan=45000,
                ilerleme=25,
                sorumlu="Mehmet Kaya",
                takim_uyeleri=["Ali Yılmaz", "Zeynep Ak"],
                oncelik="Yüksek",
                risk_seviyesi="Düşük"
            ),
            Proje(
                id="PRJ-003",
                ad="Robotik Kol Montajı",
                musteri="RobotTech",
                durum="Montaj",
                baslangic=datetime.now() - timedelta(days=45),
                bitis=datetime.now() + timedelta(days=15),
                bütce=320000,
                harcanan=285000,
                ilerleme=90,
                sorumlu="Ali Yılmaz",
                takim_uyeleri=["Veli Can", "Hakan Bülent", "Ayşe Gül"],
                oncelik="Normal",
                risk_seviyesi="Düşük"
            ),
            Proje(
                id="PRJ-004",
                ad="Medikal Cihaz Parçaları",
                musteri="MedTech Solutions",
                durum="Planlama",
                baslangic=datetime.now() + timedelta(days=5),
                bitis=datetime.now() + timedelta(days=90),
                bütce=450000,
                harcanan=5000,
                ilerleme=5,
                sorumlu="Veli Can",
                takim_uyeleri=["Hakan Bülent", "Ayşe Gül", "Selim Uzun"],
                oncelik="Normal",
                risk_seviyesi="Yüksek"
            ),
            Proje(
                id="PRJ-005",
                ad="Aerospace Komponent",
                musteri="UzayTech Havacılık",
                durum="Test",
                baslangic=datetime.now() - timedelta(days=60),
                bitis=datetime.now() + timedelta(days=10),
                bütce=580000,
                harcanan=520000,
                ilerleme=95,
                sorumlu="Hakan Bülent",
                takim_uyeleri=["Ayşe Gül", "Selim Uzun", "Barış Korkmaz"],
                oncelik="Kritik",
                risk_seviyesi="Orta"
            ),
        ]

    def createSampleOrders(self):
        """Örnek sipariş verileri oluştur"""
        return [
            Siparis(
                id="SIP-2024-001",
                proje_id="PRJ-001",
                musteri="OtoTek A.Ş.",
                urun_kodu="VTS-001",
                urun_adi="Vites Dişlisi Seti",
                miktar=50,
                birim_fiyat=1250.50,
                toplam_tutar=62525,
                siparis_tarihi=datetime.now() - timedelta(days=10),
                teslim_tarihi=datetime.now() + timedelta(days=20),
                durum="Üretimde",
                odeme_durumu="Kısmi Ödeme",
                kargo_takip="TR123456789"
            ),
            Siparis(
                id="SIP-2024-002",
                proje_id="PRJ-002",
                musteri="PresMak Endüstri",
                urun_kodu="KLP-002",
                urun_adi="Pres Kalıbı Üst",
                miktar=2,
                birim_fiyat=45000,
                toplam_tutar=90000,
                siparis_tarihi=datetime.now() - timedelta(days=5),
                teslim_tarihi=datetime.now() + timedelta(days=55),
                durum="Beklemede",
                odeme_durumu="Ödenmedi",
                kargo_takip="-"
            ),
            Siparis(
                id="SIP-2024-003",
                proje_id="PRJ-003",
                musteri="RobotTech",
                urun_kodu="RKB-003",
                urun_adi="Robot Kol Boyun Mili",
                miktar=15,
                birim_fiyat=3200,
                toplam_tutar=48000,
                siparis_tarihi=datetime.now() - timedelta(days=20),
                teslim_tarihi=datetime.now() - timedelta(days=2),
                durum="Teslim Edildi",
                odeme_durumu="Ödendi",
                kargo_takip="TR987654321"
            ),
            Siparis(
                id="SIP-2024-004",
                proje_id="PRJ-004",
                musteri="MedTech Solutions",
                urun_kodu="MED-004",
                urun_adi="Tıbbi Cihaz Kapsülü",
                miktar=100,
                birim_fiyat=850,
                toplam_tutar=85000,
                siparis_tarihi=datetime.now() - timedelta(days=3),
                teslim_tarihi=datetime.now() + timedelta(days=87),
                durum="Beklemede",
                odeme_durumu="Ödenmedi",
                kargo_takip="-"
            ),
            Siparis(
                id="SIP-2024-005",
                proje_id="PRJ-005",
                musteri="UzayTech Havacılık",
                urun_kodu="AER-005",
                urun_adi="Titanyum Alaşımlı Konnektör",
                miktar=25,
                birim_fiyat=8900,
                toplam_tutar=222500,
                siparis_tarihi=datetime.now() - timedelta(days=40),
                teslim_tarihi=datetime.now() + timedelta(days=12),
                durum="Kargoda",
                odeme_durumu="Ödendi",
                kargo_takip="TR555666777"
            ),
            Siparis(
                id="SIP-2024-006",
                proje_id="PRJ-001",
                musteri="OtoTek A.Ş.",
                urun_kodu="VTS-006",
                urun_adi="Şanzıman Mili",
                miktar=30,
                birim_fiyat=2100,
                toplam_tutar=63000,
                siparis_tarihi=datetime.now() - timedelta(days=15),
                teslim_tarihi=datetime.now() + timedelta(days=15),
                durum="Üretimde",
                odeme_durumu="Ödendi",
                kargo_takip="-"
            ),
        ]

    def createSampleOffers(self):
        """Örnek teklif verileri oluştur"""
        return [
            Teklif(
                id="TKF-2024-001",
                musteri="Otomotiv giant A.Ş.",
                proje_adi="Yeni Nesil Motor Bloğu",
                konu="500 Adet Premium Motor Bloğu Üretimi",
                tarih=datetime.now() - timedelta(days=5),
                gecerlilik_tarihi=datetime.now() + timedelta(days=25),
                durum="Beklemede",
                toplam_tutar=850000,
                kdv=153000,
                indirim=25000,
                net_tutar=978000,
                temsilci="Ahmet Demir",
                ihtimal=75,
                notlar="Kritik proje, yüksek kar marjı"
            ),
            Teklif(
                id="TKF-2024-002",
                musteri="Defense Industries",
                proje_adi="Askeri Araç Parçaları",
                konu="Titanyum Alaşımlı Zırh Parçaları",
                tarih=datetime.now() - timedelta(days=12),
                gecerlilik_tarihi=datetime.now() + timedelta(days=18),
                durum="Gönderildi",
                toplam_tutar=1250000,
                kdv=225000,
                indirim=50000,
                net_tutar=1425000,
                temsilci="Veli Can",
                ihtimal=60,
                notlar="Askeri standartlar gereği özel sertifikasyon"
            ),
            Teklif(
                id="TKF-2024-003",
                musteri="Energy Solutions Ltd.",
                proje_adi="Rüzgar Türbini Dişlileri",
                konu="100 Adet Büyük Ebat Dişli Seti",
                tarih=datetime.now() - timedelta(days=20),
                gecerlilik_tarihi=datetime.now() + timedelta(days=10),
                durum="Kabul",
                toplam_tutar=650000,
                kdv=117000,
                indirim=15000,
                net_tutar=752000,
                temsilci="Mehmet Kaya",
                ihtimal=100,
                notlar="Sözleşme imzalandı, üretime başlandı"
            ),
            Teklif(
                id="TKF-2024-004",
                musteri="Maritime Tech",
                proje_adi="Gemi Motoru Parçaları",
                konu="Denizcilik Kalite Standartlarında",
                tarih=datetime.now() - timedelta(days=25),
                gecerlilik_tarihi=datetime.now() + timedelta(days=5),
                durum="Süresi Doldu",
                toplam_tutar=420000,
                kdv=75600,
                indirim=10000,
                net_tutar=485600,
                temsilci="Ali Yılmaz",
                ihtimal=0,
                notlar="Müşteri süresi uzatma talep etti"
            ),
            Teklif(
                id="TKF-2024-005",
                musteri="Construction Materials Co.",
                proje_adi="Beton Santrali Parçaları",
                konu="Ağır Hizmet Konveyör Sistemi",
                tarih=datetime.now() - timedelta(days=2),
                gecerlilik_tarihi=datetime.now() + timedelta(days=28),
                durum="Hazırlanıyor",
                toplam_tutar=380000,
                kdv=68400,
                indirim=8000,
                net_tutar=440400,
                temsilci="Hakan Bülent",
                ihtimal=85,
                notlar="İlk görüşme olumlu geçti"
            ),
            Teklif(
                id="TKF-2024-006",
                musteri="Electronics Giant",
                proje_adi="Soğutma Sistemi Kılıfları",
                konu="Alüminyum Ekstrüzyon Parçalar",
                tarih=datetime.now() - timedelta(days=8),
                gecerlilik_tarihi=datetime.now() + timedelta(days=22),
                durum="Beklemede",
                toplam_tutar=290000,
                kdv=52200,
                indirim=5000,
                net_tutar=337200,
                temsilci="Ayşe Gül",
                ihtimal=50,
                notlar="Rakip firma teklif sundu"
            ),
        ]

    def setupUI(self):
        self.setWindowTitle("🏭 Modelhane Üretim Takip Sistemi v2.0")
        self.setGeometry(100, 100, 1600, 900)

        # Ana widget ve arka plan
        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        # Ana stil
        central_widget.setStyleSheet("""
            QMainWindow {
                background: qlineargradient(x1:0, y1:0, x2:1, y2:1,
                    stop:0 #001122,
                    stop:0.5 #002244,
                    stop:1 #001133);
            }
            QWidget {
                font-family: 'Segoe UI', Arial;
            }
            QLabel {
                color: #ffffff;
            }
        """)

        # Ana layout
        main_layout = QVBoxLayout()
        main_layout.setSpacing(15)
        main_layout.setContentsMargins(20, 20, 20, 20)

        # Başlık
        self.createHeader(main_layout)

        # İstatistik kartları
        self.createStatCards(main_layout)

        # Ana içerik (tab widget)
        tabs = QTabWidget()
        tabs.setStyleSheet("""
            QTabWidget::pane {
                background-color: rgba(0, 30, 60, 150);
                border: 1px solid rgba(0, 255, 255, 30);
                border-radius: 10px;
            }
            QTabBar::tab {
                background-color: rgba(0, 40, 80, 200);
                color: #00ffff;
                padding: 12px 25px;
                margin-right: 5px;
                border-top-left-radius: 10px;
                border-top-right-radius: 10px;
                font-weight: bold;
                text-transform: uppercase;
                letter-spacing: 1px;
            }
            QTabBar::tab:selected {
                background-color: rgba(0, 60, 120, 250);
                border: 1px solid #00ffff;
            }
            QTabBar::tab:hover {
                background-color: rgba(0, 80, 160, 230);
            }
        """)

        # Makine Durumu Tabı
        tabs.addTab(self.createMakineTab(), "🔧 Makine Durumu")

        # Üretim Takip Tabı
        tabs.addTab(self.createUretimTab(), "📊 Üretim Takip")

        # Proje Takip Tabı
        tabs.addTab(self.createProjeTab(), "📁 Proje Yönetimi")

        # Sipariş Takip Tabı
        tabs.addTab(self.createSiparisTab(), "💰 Siparişler")

        # Teklif Yönetimi Tabı
        tabs.addTab(self.createTeklifTab(), "💼 Teklifler")

        # Analiz Tabı
        tabs.addTab(self.createAnalizTab(), "📈 Analiz & Rapor")

        main_layout.addWidget(tabs)

        central_widget.setLayout(main_layout)

    def createHeader(self, layout):
        """Başlık bölümü oluştur"""
        header = QHBoxLayout()

        # Logo ve başlık
        title_layout = QVBoxLayout()

        main_title = QLabel("🏭 MODELHANE ÜRETİM TAKİP SİSTEMİ")
        main_title.setStyleSheet("""
            color: #00ffff;
            font-size: 28px;
            font-weight: bold;
            letter-spacing: 3px;
            text-transform: uppercase;
        """)
        title_layout.addWidget(main_title)

        subtitle = QLabel(f"Tarih: {datetime.now().strftime('%d.%m.%Y %H:%M')} | V2.0 FUTURISTIC")
        subtitle.setStyleSheet("""
            color: #8888ff;
            font-size: 14px;
            letter-spacing: 1px;
        """)
        title_layout.addWidget(subtitle)

        header.addLayout(title_layout)
        header.addStretch()

        # Butonlar
        btn_yenile = NeonButton("🔄 Yenile", "#00ff88")
        btn_yenile.clicked.connect(self.refreshData)
        header.addWidget(btn_yenile)

        btn_rapor = NeonButton("📄 Rapor", "#ff8800")
        btn_rapor.clicked.connect(self.generateReport)
        header.addWidget(btn_rapor)

        btn_ayarlar = NeonButton("⚙️ Ayarlar", "#ff00ff")
        header.addWidget(btn_ayarlar)

        layout.addLayout(header)

    def createStatCards(self, layout):
        """İstatistik kartları oluştur"""
        cards_layout = QHBoxLayout()

        # Kart verileri - Genişletilmiş
        cards_data = [
            ("📦 Aktif İş", "12", "4 Acil", "#00ff88"),
            ("⚡ Verimlilik", "%87.5", "+5.2%", "#00ffff"),
            ("🎯 Kalite", "%94.8", "Hedef: %95", "#ffaa00"),
            ("⏱️ Gecikme", "3", "İş", "#ff5555"),
            ("🔧 Makine", "3/4", "Aktif", "#8800ff"),
            ("👥 Operatör", "8/10", "Mevcut", "#00aaff"),
            ("📊 Proje", "5", "2 Kritik", "#ff00ff"),
            ("💰 Sipariş", "6", "4 Ödenmedi", "#00ffaa"),
            ("💼 Teklif", "6", "3 Bekliyor", "#ffcc00"),
        ]

        for title, value, subtitle, color in cards_data:
            card = HologramCard(title, value, subtitle, color)
            cards_layout.addWidget(card)

        layout.addLayout(cards_layout)

    def createMakineTab(self):
        """Makine durumu tabı oluştur"""
        tab = QWidget()
        layout = QVBoxLayout()

        # Makine grid
        makineler_grid = QGridLayout()

        # Makineleri ekle
        for i, makine in enumerate(self.makineler):
            widget = MakineWidget(makine)
            makineler_grid.addWidget(widget, i // 2, i % 2)

        layout.addLayout(makineler_grid)

        # Alt bilgi paneli
        info_panel = QTextEdit()
        info_panel.setMaximumHeight(100)
        info_panel.setStyleSheet("""
            QTextEdit {
                background-color: rgba(0, 20, 40, 150);
                border: 1px solid rgba(0, 255, 255, 30);
                color: #aaaaaa;
                border-radius: 5px;
                padding: 10px;
            }
        """)
        info_panel.setPlainText("Sistem Tümü: 4 Makine | Çalışan: 2 | Boşta: 1 | Bakımda: 1 | Toplam Verimlilik: %89.8")
        layout.addWidget(info_panel)

        tab.setLayout(layout)
        return tab

    def createUretimTab(self):
        """Üretim takip tabı oluştur"""
        tab = QWidget()
        layout = QVBoxLayout()

        # Filtreler
        filter_layout = QHBoxLayout()

        filter_layout.addWidget(QLabel("Filtre:"))

        durum_combo = QComboBox()
        durum_combo.addItems(["Tümü", "Bekliyor", "İşleniyor", "Tamamlandı", "Hata"])
        filter_layout.addWidget(durum_combo)

        filter_layout.addWidget(QLabel("Öncelik:"))
        oncelik_combo = QComboBox()
        oncelik_combo.addItems(["Tümü", "1 - Acil", "2 - Yüksek", "3 - Normal", "4 - Düşük", "5 - Planlı"])
        filter_layout.addWidget(oncelik_combo)

        filter_layout.addStretch()

        btn_ekle = NeonButton("+ Yeni İş", "#00ff00")
        filter_layout.addWidget(btn_ekle)

        layout.addLayout(filter_layout)

        # Üretim tablosu
        uretim_table = UretimTakipTable()
        layout.addWidget(uretim_table)

        tab.setLayout(layout)
        return tab

    def createProjeTab(self):
        """Proje takip tabı oluştur"""
        tab = QWidget()
        layout = QVBoxLayout()

        # Filtreler
        filter_layout = QHBoxLayout()

        filter_layout.addWidget(QLabel("Durum:"))
        durum_combo = QComboBox()
        durum_combo.addItems(["Tümü", "Planlama", "Tasarım", "Üretim", "Montaj", "Test", "Teslim", "Tamamlandı"])
        filter_layout.addWidget(durum_combo)

        filter_layout.addWidget(QLabel("Öncelik:"))
        oncelik_combo = QComboBox()
        oncelik_combo.addItems(["Tümü", "Kritik", "Yüksek", "Normal", "Düşük"])
        filter_layout.addWidget(oncelik_combo)

        filter_layout.addWidget(QLabel("Risk:"))
        risk_combo = QComboBox()
        risk_combo.addItems(["Tümü", "Yüksek", "Orta", "Düşük"])
        filter_layout.addWidget(risk_combo)

        filter_layout.addStretch()

        btn_yeni_proje = NeonButton("+ Yeni Proje", "#00ff00")
        filter_layout.addWidget(btn_yeni_proje)

        layout.addLayout(filter_layout)

        # Projeler scroll alanı
        scroll = QScrollArea()
        scroll.setWidgetResizable(True)
        scroll.setStyleSheet("""
            QScrollArea {
                background: transparent;
                border: none;
            }
            QScrollBar:vertical {
                background: rgba(0, 40, 80, 150);
                width: 20px;
                border-radius: 10px;
            }
            QScrollBar::handle:vertical {
                background: rgba(0, 255, 255, 100);
                border-radius: 8px;
                min-height: 20px;
            }
        """)

        projeler_widget = QWidget()
        projeler_layout = QGridLayout()

        # Projeleri ekle
        for i, proje in enumerate(self.projeler):
            proje_widget = ProjeWidget(proje)
            projeler_layout.addWidget(proje_widget, i // 3, i % 3)

        projeler_widget.setLayout(projeler_layout)
        scroll.setWidget(projeler_widget)
        layout.addWidget(scroll)

        tab.setLayout(layout)
        return tab

    def createSiparisTab(self):
        """Sipariş takip tabı oluştur"""
        tab = QWidget()
        layout = QVBoxLayout()

        # Filtreler
        filter_layout = QHBoxLayout()

        filter_layout.addWidget(QLabel("Durum:"))
        durum_combo = QComboBox()
        durum_combo.addItems(["Tümü", "Beklemede", "Üretimde", "Kargoda", "Teslim Edildi", "İptal"])
        filter_layout.addWidget(durum_combo)

        filter_layout.addWidget(QLabel("Ödeme:"))
        odeme_combo = QComboBox()
        odeme_combo.addItems(["Tümü", "Ödenmedi", "Kısmi Ödeme", "Ödendi"])
        filter_layout.addWidget(odeme_combo)

        filter_layout.addWidget(QLabel("Müşteri:"))
        musteri_combo = QComboBox()
        musteri_combo.addItems(["Tümü", "OtoTek A.Ş.", "PresMak Endüstri", "RobotTech", "MedTech Solutions", "UzayTech Havacılık"])
        filter_layout.addWidget(musteri_combo)

        filter_layout.addStretch()

        btn_yeni_siparis = NeonButton("+ Yeni Sipariş", "#ff00ff")
        filter_layout.addWidget(btn_yeni_siparis)

        layout.addLayout(filter_layout)

        # Siparişler scroll alanı
        scroll = QScrollArea()
        scroll.setWidgetResizable(True)
        scroll.setStyleSheet("""
            QScrollArea {
                background: transparent;
                border: none;
            }
        """)

        siparisler_widget = QWidget()
        siparisler_layout = QGridLayout()

        # Siparişleri ekle
        for i, siparis in enumerate(self.siparisler):
            siparis_widget = SiparisWidget(siparis)
            siparisler_layout.addWidget(siparis_widget, i // 3, i % 3)

        siparisler_widget.setLayout(siparisler_layout)
        scroll.setWidget(siparisler_widget)
        layout.addWidget(scroll)

        tab.setLayout(layout)
        return tab

    def createTeklifTab(self):
        """Teklif yönetimi tabı oluştur"""
        tab = QWidget()
        layout = QVBoxLayout()

        # Filtreler
        filter_layout = QHBoxLayout()

        filter_layout.addWidget(QLabel("Durum:"))
        durum_combo = QComboBox()
        durum_combo.addItems(["Tümü", "Hazırlanıyor", "Gönderildi", "Beklemede", "Kabul", "Red", "Süresi Doldu"])
        filter_layout.addWidget(durum_combo)

        filter_layout.addWidget(QLabel("Temsilci:"))
        temsilci_combo = QComboBox()
        temsilci_combo.addItems(["Tümü", "Ahmet Demir", "Veli Can", "Mehmet Kaya", "Ali Yılmaz", "Hakan Bülent", "Ayşe Gül"])
        filter_layout.addWidget(temsilci_combo)

        filter_layout.addWidget(QLabel("İhtimal:"))
        ihtimal_combo = QComboBox()
        ihtimal_combo.addItems(["Tümü", ">80%", "50-80%", "<50%"])
        filter_layout.addWidget(ihtimal_combo)

        filter_layout.addStretch()

        btn_yeni_teklif = NeonButton("+ Yeni Teklif", "#ffcc00")
        filter_layout.addWidget(btn_yeni_teklif)

        layout.addLayout(filter_layout)

        # Teklifler scroll alanı
        scroll = QScrollArea()
        scroll.setWidgetResizable(True)
        scroll.setStyleSheet("""
            QScrollArea {
                background: transparent;
                border: none;
            }
        """)

        teklifler_widget = QWidget()
        teklifler_layout = QGridLayout()

        # Teklifleri ekle
        for i, teklif in enumerate(self.teklifler):
            teklif_widget = TeklifWidget(teklif)
            teklifler_layout.addWidget(teklif_widget, i // 3, i % 3)

        teklifler_widget.setLayout(teklifler_layout)
        scroll.setWidget(teklifler_widget)
        layout.addWidget(scroll)

        tab.setLayout(layout)
        return tab

    def createAnalizTab(self):
        """Analiz ve rapor tabı oluştur"""
        tab = QWidget()
        layout = QVBoxLayout()

        # Grafik alanı (placeholder)
        grafik_frame = QFrame()
        grafik_frame.setStyleSheet("""
            QFrame {
                background-color: rgba(0, 20, 40, 150);
                border: 2px dashed rgba(0, 255, 255, 50);
                border-radius: 10px;
            }
        """)
        grafik_frame.setMinimumHeight(300)

        grafik_layout = QVBoxLayout()
        grafik_title = QLabel("📈 Performans Grafikleri")
        grafik_title.setStyleSheet("""
            color: #00ffff;
            font-size: 20px;
            font-weight: bold;
            text-align: center;
        """)
        grafik_title.setAlignment(Qt.AlignmentFlag.AlignCenter)
        grafik_layout.addWidget(grafik_title)

        grafik_placeholder = QLabel("Grafik alanı - Buraya gerçek zamanlı performans grafikleri eklenecek")
        grafik_placeholder.setStyleSheet("color: #888888; font-size: 14px;")
        grafik_placeholder.setAlignment(Qt.AlignmentFlag.AlignCenter)
        grafik_layout.addWidget(grafik_placeholder)

        grafik_frame.setLayout(grafik_layout)
        layout.addWidget(grafik_frame)

        # Rapor grid
        rapor_grid = QGridLayout()

        # Rapor kartları
        rapor_data = [
            ("Günlük Üretim", "245 Parça", "Hedef: 250", "%98"),
            ("Haftalık Trend", "↑ +12.5%", "Geçen hafta: 1,250", "İyi"),
            ("Kalite Skoru", "94.8/100", "Ay içi en iyi: 98.2", "A"),
            ("Bakım Planı", "2 Planlı", "Sonraki: CNC-002", "5 gün"),
        ]

        for i, (title, value, detail, status) in enumerate(rapor_data):
            card = QFrame()
            card.setStyleSheet("""
                QFrame {
                    background-color: rgba(0, 30, 60, 180);
                    border: 1px solid rgba(0, 255, 255, 30);
                    border-radius: 10px;
                    padding: 15px;
                }
            """)

            card_layout = QVBoxLayout()

            title_label = QLabel(title)
            title_label.setStyleSheet("color: #00ffff; font-size: 14px; font-weight: bold;")
            card_layout.addWidget(title_label)

            value_label = QLabel(value)
            value_label.setStyleSheet("color: #ffffff; font-size: 22px; font-weight: bold;")
            card_layout.addWidget(value_label)

            detail_label = QLabel(detail)
            detail_label.setStyleSheet("color: #8888ff; font-size: 12px;")
            card_layout.addWidget(detail_label)

            status_label = QLabel(f"Durum: {status}")
            status_color = "#00ff00" if status in ["İyi", "A", "%98"] else "#ffaa00"
            status_label.setStyleSheet(f"color: {status_color}; font-size: 12px; font-weight: bold;")
            card_layout.addWidget(status_label)

            card.setLayout(card_layout)
            rapor_grid.addWidget(card, i // 2, i % 2)

        layout.addLayout(rapor_grid)

        tab.setLayout(layout)
        return tab

    def startAnimations(self):
        """Animasyonları başlat"""
        # Zaman güncelleme
        self.time_timer = QTimer()
        self.time_timer.timeout.connect(self.updateTime)
        self.time_timer.start(1000)  # Her saniye

    def updateTime(self):
        """Zamanı güncelle"""
        # Header'daki zamanı güncelle (örnek)
        pass

    def refreshData(self):
        """Verileri yenile"""
        QToolTip.showText(self.cursor().pos(), "🔄 Veriler yenileniyor...", self)
        # Burada gerçek veri yenileme logic'i olacak

    def generateReport(self):
        """Rapor oluştur"""
        QToolTip.showText(self.cursor().pos(), "📄 Rapor hazırlanıyor...", self)
        # Burada rapor oluşturma logic'i olacak


def main():
    """Ana fonksiyon"""
    app = QApplication(sys.argv)

    # Uygulama stil ayarları
    app.setStyle('Fusion')

    # Palet ayarları
    palette = QPalette()
    palette.setColor(QPalette.ColorRole.Window, QColor(10, 20, 40))
    palette.setColor(QPalette.ColorRole.WindowText, QColor(255, 255, 255))
    palette.setColor(QPalette.ColorRole.Base, QColor(20, 30, 60))
    palette.setColor(QPalette.ColorRole.AlternateBase, QColor(30, 40, 70))
    palette.setColor(QPalette.ColorRole.ToolTipBase, QColor(0, 255, 255))
    palette.setColor(QPalette.ColorRole.ToolTipText, QColor(0, 0, 0))
    palette.setColor(QPalette.ColorRole.Text, QColor(255, 255, 255))
    palette.setColor(QPalette.ColorRole.Button, QColor(40, 60, 100))
    palette.setColor(QPalette.ColorRole.ButtonText, QColor(255, 255, 255))
    palette.setColor(QPalette.ColorRole.BrightText, QColor(255, 0, 0))
    palette.setColor(QPalette.ColorRole.Highlight, QColor(0, 150, 200))
    palette.setColor(QPalette.ColorRole.HighlightedText, QColor(255, 255, 255))
    app.setPalette(palette)

    # Pencereyi oluştur ve göster
    window = IModelhaneTakip()
    window.show()

    sys.exit(app.exec())


if __name__ == "__main__":
    main()