# Kapsama matrisi — ofis / yönetim grubu

**Tarih:** 04.08.2026 · **Kaynak:** `design/64 Yonetici Yetki.dc.html` (341–388), `design/66 Yonetici Onaylar.dc.html` (375–392), `design/68 Egitmen Durumu.dc.html` (143–170)

Matris implementasyondan **sonra**, tasarım dosyaları yeniden açılarak üretildi (Tasarım Uygulama Protokolü §3).

## 1 · Yeni ofis kullanıcısı — `design/64:341-388`

| Tasarım öğesi | Durum | Kanıt |
|---|---|---|
| Adres `/yonetim/kullanicilar/yeni` | ✓ | `routes/office.php:258` |
| Kırıntı `Yönetim / Kullanıcılar / Yeni` | ✓ | `Office/Users/Create.vue:85` |
| Başlık "Yeni ofis kullanıcısı" | ✓ | `lang/tr/office_user.php:244` |
| 3 adım göstergesi (Kimlik → Grup yerleşimi → İlk yetkiler) | ✓ | `Create.vue:89-99` — katalog `WizardSteps`'i |
| Adım durumu (✓ / güncel / bekleyen) | ✓ | `Create.vue:48-54` — **doldurulana göre** ilerler, tıklamayla değil |
| Amber banner "Hesap sıfır yetkiyle doğar…" | ✓ | `Create.vue:108`; metin `lang/tr/office_user.php:248` |
| Kart 1 — **ÖNERİLEN** "Yetki şablonundan başla" | ✓ | `Create.vue:196-232` |
| Kart 1 — şablon listesi + yetki sayısı | ✓ | `Create.vue:211-227`; `PermissionStarters::templatesFor` |
| Kart 1 — "Neden bu" gerekçesi | ✓ | `lang/tr/office_user.php:266` |
| Kart 2 — **İKİNCİL** "Bir kişiden kopyala" | ✓ | `Create.vue:240-247`; kopyalamanın kendisi yetki ekranında (`PermissionStarters::copyOf`) |
| Kart 2 — "Riski: … çoğalır" | ✓ | `lang/tr/office_user.php:270` |
| Kart 3 — **ÖNERMİYORUZ** "Gruba varsayılan yetki" | ✓ | `Create.vue:255-266` |
| Kart 3 — kırmızı "güvenli hâli" kutusu | ✓ | `Create.vue:262-264` |
| Alt not "Şablon uygulandığında bile matris açılır" | ✓ | `Create.vue:272`; **kural olarak da doğru** — `UserController::store` yalnız yönlendiriyor, hiçbir yetki yazmıyor |
| "Yetkisiz Davet Et" düğmesi | ✓ | `Create.vue:281-283` (`submit(null)`) |
| "Şablonu Uygula ve Matrisi Aç →" | ✓ | `Create.vue:285-290` → `?sablon=` → `Permissions.vue` `onMounted` |

**Kaldırılan:** `resources/js/organisms/CreateUserForm.vue` ve listedeki drawer. Sebep: aynı formun iki kopyası, tasarımın kaçındığı şeyin ta kendisi; drawer üçüncü adımı söyleyemiyordu.

## 2 · Karar geçmişi — `design/66:375-392`

| Tasarım öğesi | Durum | Kanıt |
|---|---|---|
| "Bugün sonuçlananlar" kartı | ✓ | `Office/Approvals/Index.vue:566-583` |
| ✓ / ✕ işareti | ✓ | `molecules/DecisionRow.vue:31-36` — renk **tek başına** değil |
| Satır: konu · saat · karar veren | ✓ | `DecisionRow.vue:39-52` |
| Ret gerekçesi satırda | ✓ | `DecisionRow.vue:48-52`; `SettledApprovals` `new_values.reason` |
| "Tüm geçmiş →" bağlantısı | ✓ | `Index.vue:569-571` → `/onaylar/gecmis` |
| Geçmiş sayfası | ✓ | `Office/Approvals/History.vue`; route `routes/office.php:907` |
| Boş durum | ✓ | `History.vue:96-100`; kartta `Index.vue:582` |

⚠ **Neden denetim izinden okunuyor:** beş onay türü **dokuz ayrı action** tarafından beş ayrı tabloya yazılıyor; hepsinin ortak yaptığı tek şey aynı transaction'da denetim satırı yazmak (AD-06). Beş tabloyu birleştiren bir sorgu, yeni bir onay türü eklendiğinde güncellenmesi unutulacak altıncı yer olurdu. `training.cancelled` bir **onaydır** ve adı `_approved` ile bitmez — bu yüzden eşleme açık yazıldı, ekten türetilmedi (`SettledApprovals::EVENTS`).

## 3 · Dikkat tonu kartı — `design/68:143-151`

| Tasarım öğesi | Durum | Kanıt |
|---|---|---|
| Üç kartlık satır (2 idi) | ✓ | `Office/Instructors/Workload.vue:440` — `lg:grid-cols-3` |
| "DİKKAT TONU — NE ZAMAN" kartı | ✓ | `Workload.vue:441-467` |
| Üç koşul, kalın başlık + açıklama | ✓ | `lang/tr/instructor.php:419-430` |
| "Üçü de soru işaretidir, suçlama değil" | ✓ | `Workload.vue:465`; metin zaten vardı, kart yoktu |
| "BAŞKA SEBEP OLABİLİR" kartı | ✓ | `Workload.vue:469-…` (mevcuttu) |
| "DÖNEM DAĞILIMI" kartı | ✓ | `Workload.vue:…` (mevcuttu) |

## 4 · Kapanmamış satır yok

Bu turda ⚠/❌ kalan öğe yoktur.
