# Monitör Sistemi Entegrasyon ve Uyumluluk Rehberi

Bu kılavuz, yerel kopyasını çıkardığımız PHP tabanlı Monitör Sistemi (`monitor.kappmes.com`) ile merkezi durum portalı (KAPTAN Hub - `kappmes.com`) arasındaki uyumluluğun, veri erişim yöntemlerinin ve servis entegrasyonlarının nasıl yapılandırılacağını açıklar.

---

## 🏗️ Genel Entegrasyon Mimarisi

KAPTAN Hub portalı Node.js tabanlı çalışırken, Monitör Sistemi PHP tabanlı ve modüler bir yapıda kurulmuştur. İki sistemin uyumlu çalışması için şu 3 temel entegrasyon kanalı kullanılır:

```mermaid
graph TD
    A[Merkezi Portal: kappmes.com] -->|1. Sistem Sağlık & DB Verileri| B(PHP Monitör: monitor.kappmes.com)
    A -->|2. Ortak Token / Secrets Paylaşımı| B
    A -->|3. Merkezi Giriş / SSO Yönlendirmesi| B
```

---

## 📡 1. Sistem Sağlık ve Veritabanı Bilgilerine Erişim (API-Driven)

Monitör sistemi, sunucunun kaynak tüketimini (CPU, RAM, Disk), kritik cPanel/WHM servislerinin durumlarını ve veritabanı (PDKS & Fatura) istatistiklerini doğrudan **KAPTAN Hub Status API**'si üzerinden okumalıdır.

*   **API Uç Noktası (Endpoint):** `https://kappmes.com/status-api.php`
*   **Yetkilendirme:** API istekleri güvenli bir token ile veya oturum doğrulaması ile yapılır.
*   **Dönen Veri Yapısı (JSON):**
    ```json
    {
        "success": true,
        "system": {
            "uptime": "9 gün...",
            "cpu": { "load_percent": 0.4 },
            "memory": { "percent": 32.5 },
            "disk": { "percent": 30.3 }
        },
        "databases": {
            "pdks": { "status": "online", "size_mb": 12.4 },
            "fatura": { "status": "online", "size_mb": 85.2 }
        }
    }
    ```
*   **PHP Monitör Tarafında Tüketim:** `modules/` altında oluşturulacak bir sistem durumu bileşeni, cURL vasıtasıyla yukarıdaki API'yi sorgulayarak verileri dashboard arayüzünde grafiksel olarak gösterir.

---

## 🔑 2. Ortak Token ve Sırların (Secrets) Paylaşımı

Her iki servisin de Google Analytics (GA4), Google Drive ve Instagram gibi dış servis yetkilendirme anahtarlarını ortak bir alandan okuyabilmesi için **kök dizin dışı paylaşımlı klasör yapısı** kullanılır.

*   **Ortak Sırlar Klasörü:** `/home/kappmes/.monitor-secrets/`
*   **Önemli Dosyalar:**
    *   `ga4-refresh.token`: Google Analytics verilerini çekmek için kullanılan yenileme anahtarı.
    *   `gdrive-refresh.token`: Google Drive yedeklemeleri için erişim anahtarı.
    *   `pdks-monitor.token`: PDKS entegrasyonu için yetkilendirme belirteci.
*   **PHP Monitör Uyumluluğu:** `config/settings.php` içerisindeki `monit_secret_dir()` fonksiyonu otomatik olarak bu paylaşımlı dizini hedefler:
    ```php
    function monit_secret_dir() {
        return dirname(ROOT_PATH) . '/.monitor-secrets';
    }
    ```
    Bu sayede, ana portal üzerinden güncellenen Google/Instagram tokenları PHP monitör tarafında da anında aktif olur.

---

## 🔒 3. Oturum Uyumluluğu ve Merkezi Yönlendirme

Monitör sisteminin yönetim arayüzünün yetkisiz kişilere kapatılması ve KAPTAN Hub yetkilendirme kuralları ile uyumlu çalışması için şu adımlar izlenmelidir:

1.  **Oturum Yoksa Portal Yönlendirmesi:** Monitör sistemine (PHP) giriş yapılmamışsa, kullanıcıyı yerel giriş ekranı yerine doğrudan merkezi portala yönlendirir:
    ```php
    // auth/check.php veya index.php giriş kontrolü
    if (!isset($_SESSION['monitor_user'])) {
        header('Location: https://kappmes.com');
        exit;
    }
    ```
2.  **SSO ile Giriş:** Kullanıcı portal üzerinden geçiş yaptığında, `sso-bridge.php` dosyası gelen JWT imzalı tokenı doğrular, `$_SESSION['monitor_user']` oturumunu açar ve kullanıcıyı şifre sormadan doğrudan monitör paneline sokar.

---

## 📻 4. Anons ve Alıcı (Receiver) Cihaz Durumlarının Takibi

Monitör sistemi üzerinden anons cihazlarının durumlarının canlı izlenmesi için alıcıların gönderdiği "Heartbeat" (Nabız) sinyalleri ortak disk alanından sorgulanır.

*   **Dosya Yolu:** `/home/kappmes/anons.kappmes.com/data/receiver-playback.json`
*   **Kontrol Algoritması:** Cihazın `lastSeenAt` veya `heartbeatAt` zaman damgası ile geçerli sunucu saati arasındaki fark **60 saniyeden az** ise cihaz monitör üzerinde **"Online"** olarak işaretlenir.

---

## 📋 Entegrasyon Kontrol Listesi (Yazılımcı İçin)

*   [ ] `config/settings.php` içindeki `BASE_URL` ve api tanımlarının doğruluğunu kontrol et.
*   [ ] Sunucu üzerinde `/home/kappmes/.monitor-secrets/` dizinine erişim yetkilerini (`chmod 700`) kontrol et.
*   [ ] `sso-bridge.php` entegrasyonunu doğrula (geçerli JWT imzası anahtarı `server.js` ile aynı olmalıdır).
*   [ ] PHP Monitör arayüzündeki verilerin sunucuyu yormaması için cache yapısını (`sessions/` veya `.cache` dosyaları) aktif tut.
