# Kapsama matrisi — `3a` Planlamacı kokpiti (Gündem)

*02.08.2026 · Tasarım: `design/Stil Yonu.dc.html#3a` · Uygulama: `resources/js/pages/Office/Agenda/Planning.vue` + `app/Queries/Office/PlanningOutlook.php`*

Tasarım dosyası implementasyondan sonra tekrar açıldı ve satır satır çıkarıldı (Tasarım Uygulama Protokolü §3).

⛔ **Karar (Sets, 02.08.2026):** `3a` ayrı bir ekran değildir. "Kokpit" adı 01.08'de **Gündem** oldu; `3a`'nın getirdikleri mevcut Gündem ekranının üstüne eklendi. İki ekran olsaydı bakanlık son günü ve eğitmensiz eğitim satırları ikisinde birden görünürdü.

| # | Tasarım öğesi | ✓/⚠/❌ | Kanıt |
|---|---|---|---|
| 1 | Üst satır: "PLANLAMA KOKPİTİ · CUMA, 24 TEMMUZ 2026" | ✓ | `AgendaShell.vue` — kural adı + `Intl.DateTimeFormat('tr-TR')` ile tam tarih |
| 2 | "Günaydın, Elif" — ilk ad | ✓ | `AgendaShell` `first()` |
| 3 | Tek cümlelik özet ("2 kritik iş… bu hafta 3 eğitim, 64 katılımcı") | ✓ | `Planning.vue` `sentence` — baskı yaratan sayı önce, dönemin yükü (`sentence_load_*`) sonra. ESKİ NOT: içeriği son gün + bekleyen talep** sayısı; "bu hafta N eğitim, N katılımcı" kısmı KPI kartında — 3a-a |
| 4 | Bugün / Hafta / Ay segmenti | ✓ | `PlanningOutlook::HORIZONS` + `Planning.vue` segmenti; ufuk adreste taşınır |
| 5 | "Ara ⌘K" | ❌ | **yok** — global arama yazılmadı; 3a-c |
| 6 | Bildirim çanı (sayaç 6) | ✓ | Kabuk üstündeki bildirim paneli (`unread_notifications`) |
| 7 | "+ Eğitim Planla" birincil butonu | ✓ | `Planning.vue` `#actions` |
| 8 | Kritik uyarı 1: KUMS son günü + asgari katılımcı ✓ + "Bildirimi yap →" | ✓ | `alert.kind === 'ministry_deadline'`; asgari katılımcı satırı `alert_minimum` |
| 9 | Kritik uyarı 2: eğitmensiz eğitim + alternatif eğitmen önerisi | ⛔ | **Yeterli sayıldı** (Sets, 02.08.2026). Eğitmensizlik **yaklaşan eğitimler tablosunda** kırmızı olarak; ayrı uyarı şeridi ve **alternatif eğitmen önerisi yok** — 3a-d |
| 10 | KPI 1: "SÜRESİ DOLAN PERSONEL 476" | ✓ | `PlanningOutlook::counters()` `lapsed` |
| 11 | KPI 1 alt satırı: "87 firmada" | ✓ | `lapsed_companies` |
| 12 | KPI rozeti: "▲ 32 / ay" (trend) | ✓ | `kpi_snapshots` (günlük) + `RecordDailyKpi` + `PlanningOutlook::changeIn()`; snapshot yoksa rozet yok |
| 13 | KPI 1: "en yoğun İstanbul (142)" | ⚠ | Bölgesel talep kartı aynı bilgiyi **sıralı** veriyor; KPI satırında tekrar edilmedi |
| 14 | KPI 2: "30 GÜNDE DOLACAK 164" | ✓ | `falling_due` — ⛔ 30 sabit değil, `complianceWarningDays()` ayarı |
| 15 | KPI 2 alt satırı: "90 günde 589 · yenileme fırsatı" | ✓ | `falling_due_far` (90 gün ikinci ufuk) |
| 16 | KPI 3: "BU HAFTA 3 · eğitim · 64 katılımcı" | ✓ | `week_trainings` + `week_participants` |
| 17 | KPI 3 alt satırı: iller | ✓ | `week_provinces` |
| 18 | KPI 4: "ORTALAMA DOLULUK %78" | ✓ | `occupancy()` — koltuk/kontenjan toplamı; ⚠ planlanmış eğitim yoksa **null**, ekran "%0" demiyor |
| 19 | KPI kartlarının tıklanabilirliği | ✓ | İlk iki kart `/planlama/sorgulama?durum=…` bağlantısı |
| 20 | "Bölgesel talep · süresi dolan personel, il bazında" | ✓ | `demandByProvince()` + kart başlığı |
| 21 | Kartogram / Matris görünüm anahtarı | ✓ | İki görünüm: **Harita** (il kutuları) ve **Matris** (satır il × sütun eğitim türü, hücre = kişi sayısı, tıklayınca sorgulama iki koşulla açılır) |
| 22 | "az ← çok" tonlaması | ✓ | `demandTint()` — en yoğun il ölçek, üç ton |
| 23 | "kutuya tıkla → il sorgusu" | ✓ | Kutular `/planlama/sorgulama?il={id}` |
| 24 | "Yaklaşan eğitimler" tablosu | ✓ | `upcoming()` |
| 25 | Sekmeler: Tümü / Bildirim bekleyen / Doluluk düşük + sayaçlar | ✓ | `upcomingCounts` — sayaçlar **filtreden bağımsız** |
| 26 | Kolonlar: EĞİTİM / TARİH / EĞİTMEN / KONTENJAN / STATÜ | ✓ | `Planning.vue` tablo başlıkları |
| 27 | Eğitim satırında yer + kapsam | ✓ | Ad + eğitim tanımının **kodu** + il. Ayrı bir "kapsam" kolonu şemada yok; kod bu sorunun en kısa doğru cevabı |
| 28 | Kontenjan düşükse vurgulanır | ✓ | `lightly_filled` — ⛔ eşik artık **ayar** (`training.low_occupancy_ratio`), ekranda sabit `0.5` değil |
| 29 | Statü rozeti | ✓ | `StatusBadge` — eğitim statüleri artık ortak ton haritasında (yerel `toneFor` kaldırıldı) |
| 30 | "12 kayıttan 5'i · Tümü →" | ✓ | Tablo 12 satır; fazlası varsa alt şerit sayıyı yazar ve eğitim listesine gider |
| 31 | "Bugün ne yapmalıyım?" listesi | ✓ | Kartların **üstünde**, cümleye dönüşmüş ve önem sırasına dizilmiş 3-6 satır; kaynağı kartların kendisi. ESKİ NOT: ayrı özet listesi yazılmadı — 3a-i |
| 32 | "Eğitmen müsaitliği 28 Tem – 03 Ağu" şeridi | ✓ | `PlanningCalendar::between(bugün, +6 gün)` → şerit; ⚠ takvimle **aynı sorgu**, ikisi çelişemez |
| 33 | Şeritte hücre tonları (eğitim / çakışma / müsait değil / boş) | ✓ | Dört ton, tasarım `23`'ün ton sözlüğü |
| 34 | Belge uyarısı müsaitlik şeridinde | ⛔ | **Bilinçli olarak yok** (Sets, 02.08.2026): sertifikası dolmuş kişi eğitmen değildir, şeritte hiç görünmez. ESKİ NOT: şeritte satır olarak yok — 3a-j |
| 35 | "Satış sinyali: 12 firmada 3 ay kuralına giren yeni personel… Satışa aktar →" | ❌ | **Sorgulama ekranıyla gelecek** (tasarım `20`, görev #72): satışa aktarma orada "iletişime geç" görevi üretir |
| 36 | 375px | ✓ | KPI ızgarası `sm:grid-cols-2 xl:grid-cols-4`, tablolar kendi kutusunda yatay kayar, sayfa yana kaymaz |

## Kapanmamış satırlar — karar gerekiyor (Onay Kuralı 6)

| Kod | Satır | Durum | Soru |
|---|---|---|---|
| **3a-c** | #5 "Ara ⌘K" global arama | ❌ | **Ertelendi** (Sets, 02.08.2026): "ayrı tur, en son her şey bittikten sonra her yere bağlayarak tek seferde temiz çıkartırız." |
| **3a-d** | #9 eğitmensiz eğitim uyarısı | ⛔ **Kapandı** (Sets, 02.08.2026: "şu an için yeterli") — tabloda kırmızı satır + günlük yönetici bildirimi. İkinci uyarı şeridi açılmadı. |
