# Kapsama matrisi — `63 Yonetici Kullanici Log`

*02.08.2026 · Tasarım: `design/63 Yonetici Kullanici Log.dc.html` · Uygulama: `Office/Users/{Index,Show,Logs}.vue`, `Office/SystemLog/Index.vue`, `Office/Approvals/*`*

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

## 1 · Kullanıcılar listesi (`/kullanicilar`)

| # | Tasarım öğesi | ✓/⚠/❌ | Kanıt |
|---|---|---|---|
| 1 | "Kullanıcılar · N hesap" başlığı + "＋ Kullanıcı" | ✓ | `Users/Index.vue` `PageHeader` + `CreateUserForm` drawer |
| 2 | Hesap türü sekmeleri (Tümü / 3E ekip / Eğitmen / Müşteri kull.) sayılarıyla | ✓ | `Users/Index.vue:66-79` — Tümü · 3E ekip · Eğitmen. **Müşteri kullanıcısı sekmesi bilinçli olarak yok** (63-a: Sets kararı) |
| 3 | **KULLANICI** kolonu: baş harf + ad + altında e-posta ya da bakanlık ID | ✓ | `UserIdentityCell.vue:30` `identity_line \|\| email`; `OfficeUsers::row()` `identity_line` |
| 4 | **ROL** kolonu ("Satışçı · İzmit", "Eğitmen · sürekli") | ✓ | `Users/Index.vue:49,169-172`; `OfficeUsers::roleOf()` — dikey+seviye kompozisyonu `OfficeUserMemberships::labelFor()` |
| 5 | Birden fazla yerleşimi olan kişi | ✓ | ilk yerleşim + `+N` (`office_user.roles.and_more`) |
| 6 | Yerleşimi de dosyası da olmayan hesap | ✓ | "Henüz yerleştirilmedi" (`roles.none`) |
| 7 | **SON GİRİŞ · 2FA** tek kolonda | ✓ | `signInSummary()` |
| 8 | **DURUM**: Aktif / Girişi Kısıtlı (30 dk) / Dondurulmuş | ✓ | `badgeFor()` — kısıt dondurulmuşluğu yener |
| 9 | **HIZLI AKSİYON**: Detay · Kısıtla · Dondur / Kısıtı Kaldır / Aktifleştir | ✓ | `Users/Index.vue` aksiyon hücresi (kapılar ghost, kararlar amber/kırmızı) |
| 10 | Dondur/kısıtla **gerekçe ister ve audit'lenir** | ✓ | `AccountStatusModal` + `ChangeOfficeAccountStatus` |
| 11 | Dondurulan hesabın verisi silinmez | ✓ | AD-23; `OfficeUserManagementTest` |
| 12 | Arama | ✓ | ad · e-posta · rol · bakanlık ID (`Index.vue:158`) |
| 13 | 375px | ✓ | `#card` şablonu, rol satırıyla |

## 2 · Kullanıcı detayı — "kişinin kokpiti" (`/kullanicilar/{id}`)

| # | Tasarım öğesi | ✓/⚠/❌ | Kanıt |
|---|---|---|---|
| 14 | Kimlik kartı (ad, rozet, rol, son giriş, cihaz) | ✓ | `Users/Show.vue` kimlik bölümü |
| 15 | "Yetkileri Düzenle · Girişi Kısıtla · Hesabı Dondur" | ✓ | `Show.vue` başlık aksiyonları |
| 16 | **Geciken işleri — N** | ✓ | `OfficeUserCockpit::overdue()` + `Show.vue` kritik tonlu kart |
| 17 | **Bu haftası** (iş türü kırılımlı sayaçlar) | ✓ | `OfficeUserCockpit::week()` — açık işler türe göre |
| 18 | **Performans (Q3)**: Tamamlanan ₺ / Potansiyel ₺ | ✓ | `OfficeUserCockpit::performance()` — onay tarihi çeyrek içinde olan teklifler / hâlâ açık teklifler |
| 19 | "Hedef %81" | ❌ | ⛔ **Bilinçli**: hedef admin-tanımlı bir veri, böyle bir kolon yok — uydurulmuş paydayla yüzde yazmak kırmızı çizgi 9. Kartın altında neden gösterilmediği yazılı (`audit`/`office_user.cockpit.note`) |
| 20 | Satışçı limiti (ayrı kart) | ✓ | `discountLimit` + `SetSellerDiscountLimit` |
| 21 | "Kullanıcının tüm logları" ayrı sayfa | ✓ | `Users/Logs.vue` (`/kullanicilar/{id}/loglar`) |
| 22 | "Eğitmen detayı aynı şablondur" | ✓ | `67` eğitmen dosyası: dosya · eğitimler · finans · loglar sekmeleri |

## 3 · Sistem audit logu (`/sistem-gunlugu`)

| # | Tasarım öğesi | ✓/⚠/❌ | Kanıt |
|---|---|---|---|
| 23 | **Kullanıcı ▾** süzgeci | ✓ | `SystemLogController::peopleOf()` (token'lı), `kullanici` parametresi |
| 24 | **Modül ▾** süzgeci | ✓ | olayın kendi öneki (`quote.sent` → `quote`), `modul` parametresi |
| 25 | **Tarih ▾** süzgeci | ✓ | `gun` = 7 / 30 / 90 / tümü |
| 26 | İşlem türü süzgeci | ✓ | `event` (zaten vardı) |
| 27 | **Dışa aktar** | ✓ | `/sistem-gunlugu/disa-aktar` CSV — **erişim logu yazılır** (`AccessLogger::recordQuery('system_log_export')`) |
| 28 | Satırda kullanıcı adı ("Elif Karaca — …") | ✓ | `AuditEntryRow.vue` `actor_name` |
| 29 | Satırda "Detay" bağlantısı | ✓ | `SystemLogController::hrefOf()` — teklif · eğitim · eğitmen · kullanıcı · müşteri · fatura; ekranı olmayan tür için bağlantı yok (uydurma adres yerine sessizlik) |
| 30 | "N kayıt · append-only, silinemez · hassas değerler maskeli" | ✓ | `audit.counted` + `audit.note` |
| 31 | Müşteri kimliklerinin izinin ofiste görünmemesi | ✓ | `OfficeAuditFeed::refuseCustomerIdentities()` |
| 32 | KamuSM zaman damgalı batch hash | ⚠ | Mevzuat/altyapı işi; `docs/arch` kapsamında, ekranın vaadi değil |

## 4 · Onaylar (`/onaylar`)

| # | Tasarım öğesi | ✓/⚠/❌ | Kanıt |
|---|---|---|---|
| 33 | Bekleyen / Limit aşımı / Masraf / Fiyat değişikliği / Sonuçlananlar sekmeleri | ✓ | `Approvals/Index.vue` + `PendingApprovals` |
| 34 | Red gerekçe ister, sahibine bildirim gider, karar audit'lenir | ✓ | `DecideApproval` + bildirim kuralları |
| 35 | Kokpit bandı olarak da görünmesi | ✓ | `36` gündem deseni |
| 36 | SLA 24 saat → üst yöneticiye eskalasyon | ✓ | `EscalateWaitingApprovals` (saatlik) + `ManagementChain::above()` — **silsile**: en yakın yöneticiden operasyon direktörüne kadar herkese görev açılır (Sets, 02.08.2026) |

## Kararla kapanan satır

| Kod | Satır | Durum |
|---|---|---|
| **63-a** | #2 "Müşteri kull. 104" sekmesi | ⛔ **Kapandı — Sets, 02.08.2026: "ofis kullanıcı logları olacak sadece, müşteri loglarını şu an için sadece backoffice tarafında Filament'e koy."** Ofis listesi ve ofis sistem günlüğü yalnız ofis kimliklerini taşır; müşteri kullanıcılarının işlem izi backoffice'teki **İşlem günlüğü** sayfasındadır (`Filament/Backoffice/Pages/WriteLog.php`, `audit.view_all_tenants`). Sekme yok, olmayacak. |
