# Kapsama matrisi — `23 Planlamaci Takvim`

*02.08.2026 · Tasarım: `design/23 Planlamaci Takvim.dc.html` · Uygulama: `resources/js/pages/Office/Planning/Calendar.vue` + `app/Queries/Office/PlanningCalendar.php`*

Tasarım dosyası okundu ve satır satır çıkarıldı (Tasarım Uygulama Protokolü §3). İşaret **kodun** durumunu söyler: ✓ var · ⚠ kısmen · ❌ yok.

## Takvim

| # | Tasarım öğesi | ✓/⚠/❌ | Kanıt |
|---|---|---|---|
| 1 | Adres `/planlama/takvim` | ✓ | `routes/office.php` `office.planning.calendar` |
| 2 | Hafta başlığı ("24 – 30 Ağustos 2026") + ‹ › + "Bugün" | ✓ | `Calendar.vue` `range` + `go()` |
| 3 | Görünüm anahtarı: **Ay · Hafta · Gün** | ✓ | `views` + `TrainingController::calendarView()` |
| 4 | Aralık **adreste** (paylaşılabilir bağlantı) | ✓ | `?gorunum=&gun=` — ⚠ oturumda saklanmıyor, bilinçli |
| 5 | "Eğitmen müsaitliğini göster" anahtarı | ✓ | `ToggleSwitch` |
| 6 | Satır = eğitmen, sütun = gün | ✓ | `PlanningCalendar::between()` — satır bazlı ızgara |
| 7 | Hücrede eğitim adı + yer + kontenjan | ✓ | `cell.trainings` |
| 8 | Çok günlü eğitimde "2. gün" | ✓ | `starts_on <= day && ends_on >= day` ile gün gün dolduruluyor |
| 9 | **Çakışma** kritik tonda + satırda "ÇAKIŞMA 28.08" | ✓ | `cell.clash` + `row.clash_days` |
| 10 | **İzin / müsait değil** ayrı ton | ✓ | `cell.away` |
| 11 | **KUMS son gün** hücrede iş olarak | ✓ | `deadlines` |
| 12 | Dört ton ve **birbirinin yerine geçmez** | ✓ | `Calendar.vue` ton haritası; sınıf yorumunda kural yazılı |
| 13 | ⛔ İznin SEBEBİ çizilmez | ✓ | `PlanningCalendar` sebebi taşımıyor — ekran gösteremiyor |
| 14 | Boş hücreye tıkla → o gün + eğitmenle yeni taslak | ⚠ | Boş hücre **o güne** taslak açıyor; ⛔ **eğitmen ön seçilmiyor** — bilinçli sapma, `Calendar.vue`'da gerekçesi yazılı (uygunluk kapısı takvim tıklamasıyla atlanamaz) |
| 15 | Legend (dört ton açıklaması) | ✓ | `Calendar.vue` alt şerit |
| 16 | Eğitmeni olmayan eğitimlerin görünürlüğü | ✓ | Gündem'deki tablo + günlük bildirim (02.08.2026) |
| 17 | 375px | ✓ | Izgara kendi kutusunda yatay kayar |

## Tedarikçi tanımları (aynı dosyanın ikinci yarısı)

| # | Tasarım öğesi | ✓/⚠/❌ | Kanıt |
|---|---|---|---|
| 18 | Adres `/planlama/tedarikciler` + "＋ Tedarikçi Ekle" | ✓ | `Suppliers/Index.vue` |
| 19 | Tür sekmeleri: Oteller · Acenteler · Araç kiralama · Salonlar + sayılar | ✓ | `OfficeSuppliers` |
| 20 | Kolonlar: OTEL · BÖLGE · SON TEKLİF/GECE · TEKLİF SAYISI | ✓ | `Suppliers/Index.vue` |
| 21 | İletişim satırı (ad + telefon) | ✓ | `SupplierDetail` |
| 22 | Fiyat yönü (▲ %9 / ▼ %4) | ✓ | `RegionalPriceAverage` + `PriceTrendChart` |
| 23 | "Her işlenen teklif bölgesel tarihçeye yazılır" | ✓ | `SupplierPriceHistory` |

## Kapanmamış satır

| Kod | Satır | Durum |
|---|---|---|
| **23-a** | #14 boş hücrede eğitmen ön seçimi | ⛔ **Bilinçli sapma** (kodda gerekçesi yazılı): takvimden tıklayarak eğitmen seçmek, uygunluk kapısını (yetki · belge · takvim) atlayan bir yol açardı. Planlama ekranındaki aday listesi o kapıyı işleten tek yerdir. Sets onaylarsa eklenebilir. |
