# Kapsama matrisi — `30 Satisci Dashboard` + `33 Satisci Takvim`

*02.08.2026 · Tasarım: `design/30 Satisci Dashboard.dc.html`, `design/33 Satisci Takvim.dc.html` · Uygulama: `Office/Sales/{Agenda,Calendar}.vue` + `SalesAgenda`, `SalesCalendar`, `SalesMeeting`, `SellerTarget`*

İşaret **kodun** durumunu söyler: ✓ var · ⚠ kısmen · ❌ yok.

## 1 · Satış kokpiti (`/satis`)

| # | Tasarım öğesi | ✓/⚠/❌ | Kanıt |
|---|---|---|---|
| 1 | Adres `/satis`, menüde satış grubunun ilk sırası | ✓ | `office.sales.agenda` + `OfficeNavigation` |
| 2 | Selamlama + günün cümlesi | ✓ | `AgendaShell` — gündem deseninin üçüncü uygulaması (`36`) |
| 3 | Tek uyarı şeridi: geçerliliği dolan teklif | ✓ | `SalesAgenda::alert()` — müşterinin göreceği tek son tarih |
| 4 | **AÇIK FIRSAT** + tahmini tutar | ✓ | `SalesPipeline::byOwner()`; tutarı girilmemişler ayrıca sayılır |
| 5 | **BEKLEYEN TEKLİF** + kaçı iç onayda | ✓ | `counters.pending_quotes` / `in_review` |
| 6 | **BU AY ONAYLANAN** | ✓ | Müşterinin onay tarihine göre — mali tabloyla aynı kural |
| 7 | **SATIŞA AÇIK EĞİTİM** + boş kontenjan | ✓ | Planlı/bildirilmiş/onaylı eğitimler |
| 8 | **AYIN HEDEFİ %81 · ₺486.500 / ₺600.000** | ✓ | `seller_targets` — **yönetici tarafından konan** veri (AD-08). Hedef yoksa yüzde yok, sıfır sayılmaz |
| 9 | Fırsat sinyalleri: 3 ay kuralı / süresi dolanlar | ✓ | `StaffCompliance` firma kırılımı — **isim yok**, sorgulama ekranına geçiş var |
| 10 | Sinyal: düşük doluluk (boş kontenjan) | ✓ | `training.low_occupancy_ratio` ayarıyla |
| 11 | Sinyalden "Teklif Hazırla" | ✓ | Müşteri kartındaki "müşteri istediyse teklif hazırla" yolu (32-d kararı) |
| 12 | Sinyalden "Planlama Talebi" | ✓ | Şeritte planlama talebi bağlantısı; **satışçı eğitim yaratmaz** |
| 13 | Sinyalden "Duyuru Gönder" | ❌ | Açık eğitim duyurusu yazılmadı — görev #78 (30-a) |
| 14 | **Satışa açık planlı eğitimler** tablosu | ✓ | Eğitim · tarih/yer · doluluk · statü |
| 15 | "Planlamacı oluşturur — satılabilir stok" notu | ✓ | Ekranda yazılı |
| 16 | **Bugünkü görüşmelerim** | ✓ | `sales_meetings` — saat, tür, firma, kişi |
| 17 | Hızlı görüşme notu | ✓ | Görüşmeyi kapatınca **müşteri kartındaki görüşme geçmişine** not düşer (`AddCustomerNote`) |
| 18 | Not "müşteri kartına işlenir" | ✓ | Aynı not makinesi; düzeltilemez (AD-11) |
| 19 | "＋ hatırlatma kur" | ✓ | Görev açma müşteri kartında; takvimde birleşir |
| 20 | Yetki notu: satışçı yalnız atandığı müşterileri görür | ✓ | AD-23; ekranlar sahibe göre okur, adresten aktör alınmaz |
| 21 | Gecikmiş görüşme bandı | ✓ | Kapatılmamış ve tarihi geçmiş görüşmeler |

## 2 · Takvimim (`/satis/takvimim`)

| # | Tasarım öğesi | ✓/⚠/❌ | Kanıt |
|---|---|---|---|
| 22 | Hafta · Ay · Liste görünümleri | ✓ | `SalesCalendar::for()` — görünüm ve gün adreste |
| 23 | ‹ › + "Bugün" | ✓ | `Calendar.vue` |
| 24 | Gün sütununda **arama · ziyaret** | ✓ | `sales_meetings` (tür ayrı tonda) |
| 25 | **GÖREV** satırları | ✓ | `tasks` — kaynağı ne olursa olsun aynı sütunda |
| 26 | **SON GÜN** (teklif geçerliliği) kritik tonda | ✓ | `quoteDeadlines()`; gün başlığında "kritik" |
| 27 | **EĞİTİM** — müşterinin sahada olduğu gün | ✓ | Satışçının atandığı firmaların katılımcı sayısıyla |
| 28 | Fırsatın beklenen kapanış tarihi | ✓ | `opportunityDates()` |
| 29 | Boş gün "tıklayıp iş ekleyebilirsin" | ✓ *(21.10.2026, EGT-253)* `Calendar.vue` boş gün düğmesi + «＋ Görüşme/＋ Görev», firma seçici, kartın kendi formu |  ~~⚠~~ | Boş gün yazıyor; **tıklayınca ekleme** yok — görüşme müşteri kartından açılıyor (30-b) |
| 30 | Sürükleyerek güne taşıma | ✓ *(21.10.2026, EGT-253)* `RescheduleMeeting`, `UpdateTask`, `/satis/takvimim/tasi` | ~~❌~~ | Yazılmadı (30-b ile aynı karar) |
| 31 | Hafta sonu varsayılan gizli (ayarlanabilir) | ⛔ | **Uygulanmadı ve uygulanmayacak** *(Sets, 03.08.2026)*: lojistik 7/24 çalışır — liman cumartesi çalışır, eğitim pazar günü koşar. Hafta sonu diğer günlerle **aynı** çiziliyor; soluklaştırma da kaldırıldı |
| 32 | **Gecikmiş** bandı | ✓ | Görüşme + görev, en eskisi üstte |
| 33 | **Bu ay özet**: planlı görüşme (arama/ziyaret), teklif takibi, geçerlilik son günü | ✓ | `summary` |
| 34 | Müşteri eğitim günü sayısı | ✓ *(21.10.2026, EGT-253)* `summary.training_days` | ~~⚠~~ | Takvimde satır olarak var; **özet sayacı** yazılmadı (30-c) |
| 35 | **İleriye bakış** (gelecek ay: boş kontenjanlı eğitimler, fırsat tarihleri) | ✓ | `ahead()` |
| 36 | "Hedef ₺600.000 · boru hattında ₺418.000" | ✓ | `summary.target` + `summary.pipeline`; hedef yoksa satır çıkmaz |
| 37 | 375px | ✓ | Gün satırı `md:` altında dikey yığılır |

## Kapanmamış satırlar

| Kod | Satır | Durum |
|---|---|---|
| **30-a** | #13 "Duyuru Gönder" | Açık eğitim duyurusu (görev #78) yazılınca sinyal şeridine düğme olarak eklenecek. |
| **30-b** | #29, #30 boş güne tıklama ve sürükleme | Görüşme bugün müşteri kartından açılıyor (firma orada belli). Takvimden açmak için firma seçici bir drawer gerekiyor; sürükleme ayrı bir iş. **Sets'e soru: takvimden de açılsın mı?** |
| **30-c** | #34 özet sayacı | "Müşteri eğitim günü 4" satırı; takvimde veri var, özete eklenmedi. |
