# SİNA Yönlendirme Döngüsü ve Oturum Hataları Çözüm Rehberi (rEvolution)

Bu belge, SİNA sistemindeki izlem modüllerinde (Özellikle İnme/IN8) karşılaşılan kısır döngüleri, Dashboard'a fırlatma sorunlarını ve "Unauthorized Session" hatalarını gidermek için uygulanan teknik stratejileri içerir.

## 1. Tespit Edilen Problemler ve Kök Nedenler

### A. Dashboard Tuzağı (Dashboard Trap)
*   **Sorun:** İzlem bittikten sonra sistemin doktora görünmeden anında Dashboard'a geçmesi ve oradan geri dönüşün imkansız olması.
*   **Neden:** SİNA'nın Angular altyapısı, izlem sonlandığında tüm oturum verilerini temizleyip kullanıcıyı ana Dashboard'a yönlendirir. Bu adım bir kez atıldığında, tarayıcı geçmişi ve oturum durumu "İzlem Dışı" kalır.

### B. Zorunlu Yenileme Çakışması (Hard-Reload Conflict)
*   **Sorun:** Eklentinin `window.location.href` kullanarak yaptığı zorunlu yönlendirmelerin SİNA oturumunu düşürmesi.
*   **Neden:** SİNA bir Single Page Application (SPA) olduğu için tarayıcıyı yenilemek (hard-reload), Angular'ın içindeki aktif yetki token'larını anlık olarak askıya alabiliyor. SİNA bunu "Yetkisiz Giriş" algılayıp Dashboard'a atıyor.

### C. Hayalet Tıklamalar (Ghost Click Triggers)
*   **Sorun:** Bir izlem biter bitmez "İzlem Başlat" butonuna eklentinin veya SİNA'nın otomatik olarak tekrar basması.
*   **Neden:** Sayfa geçişleri sırasında eski scriptlerin (`setInterval`) hala havada olması veya SİNA'nın DOM'u yakalayıp eski verilerle "Devam Et" demesi.

---

## 2. Uygulanan Kesin Çözüm Katmanları

### Katman 1: Triple-Lock (Üçlü Kilitleme) Mekanizması
SİNA izlem bittiğinde `sessionStorage.clear()` komutunu çalıştırarak eklentinin hafızasını silebilir. Bunu aşmak için kilitler üç yere aynı anda yazılır:
1.  **SessionStorage:** Hızlı erişim için.
2.  **LocalStorage:** Kalıcı hafıza için (SİNA bunu temizlese bile eklenti buradan okur).
3.  **Cookies (Çerezler):** En derin katman. SİNA'nın asla silemediği 60 saniyelik yıkılmaz kilitler için.

### Katman 2: Router Interception (Yönlendirme Yakalayıcı)
Eklenti, tarayıcının `history.pushState` ve `location.assign` fonksiyonlarını "hijack" eder (ele geçirir).
*   Eğer bir kilit aktifse ve SİNA `/dashboard` adresine gitmeye çalışıyorsa; eklenti bu işlemi henüz başlamadan iptal eder ve rotayı zorla `/inme` (veya ilgili ana sayfa) olarak değiştirir.

### Katman 3: Nuclear Peace Mode (Görsel ve Fiziksel Koruma)
İzlem bittikten sonraki kritik **3 saniye** boyunca:
*   **Görsel:** `filter: blur(1px)` ile ekran hafifçe buğulanır. Bu, kullanıcıya "sistem kendini topluyor, bekle" mesajı verir.
*   **Fiziksel:** `pointer-events: none !important` ile SİNA'nın tüm butonları etkisiz hale getirilir. Hiçbir "Hayalet Script" veya kullanıcı hatası yeni bir izlem başlatamaz.

### Katman 4: Doğal Akışa Bırakma (Passive Redirect)
Eklenti artık kendisi `window.location.href` ile yönlendirme yapmaz.
*   **Yeni Strateji:** Eklenti SİNA'nın "Sonlandır -> Evet" butonlarına tıklar ve sonra SİNA'nın kendi Angular Router'ı ile doğal yoldan (yetkileri kaybetmeden) ana sayfaya dönmesini bekler. Eklenti sadece gidilecek yer hatalıysa (Dashboard ise) müdahale eder.

---

## 3. Gelecekte Benzer Sorunlar İçin Kontrol Listesi

Başka bir modülde (HT, KA, KBH vb.) döngü başlarsa şu adımları izleyin:

1.  **Kilit Kaydı Kontrolü:** `REV_IN_LAST_FINISH` gibi bir mühürün `localStorage` ve `document.cookie` üzerine basıldığından emin olun.
2.  **Surgical Hiding (Cerrahi Gizleme):** Kilitli sürede butonları `remove()` ile değil, `display: none` ve `visibility: hidden` ile gizleyin. (Removal SİNA'nın scriptlerini patlatabilir).
3.  **Capture Phase Interceptor:** `addEventListener('click', ..., true)` kullanarak SİNA'nın buton tetiklemelerini DOM seviyesinde, işlem daha başlamadan durdurun.
4.  **Language Sensitivity:** "Başlat", "Devam" gibi kelimeleri ararken mutlaka `toLocaleLowerCase('tr-TR')` kullanın. SİNA'nın Türkçe karakterleri büyük/küçük harf dönüşümlerinde hataya yol açabilir.

---
*Not: Bu rehber rEvolution v2026.03.29 güncellemesi sonrası oluşturulmuştur.*
