Skip to Content
DocsAdmin PaneliArchitectureEkranlar

Ekranlar

Her ekranın ne gösterdiği, hangi etkileşimlerin çalıştığı ve gerçek veriye geçmek için hangi işi beklediği aşağıda. Ekranların hepsi fixture verisiyle çalışır. Client ekranlarda yapılan değişiklikler yalnızca o oturumda görünür, sayfa yenilenince kaybolur.

Aşağıda “yalnızca arayüz” diye işaretlenen düğmeler state’i değiştirmez: ya diyaloğu kapatır ya da hiçbir şey yapmaz. Bu düğmeler tasarımı tamamlamak için yerinde duruyor; gerçek işlem backend’e bağlandığında eklenecek.

Her ekranın altındaki Jira satırı, ekranın arayüz işini ve gerçek veriye geçişi bekleten işleri gösterir. Toplu liste için bkz. Veri ve entegrasyon.


Panel — /panel (Server)

Günün özetini gösterir:

  • KPI satırı: bugünkü ciro (dünün aynı saatiyle birlikte), kişi sayısı ve kişi başı tutar, açık masa ve açık adisyon sayısı, son senkron zamanı ve kuyruktaki kayıt sayısı.
  • Saat bazlı ciro grafiği (içinde bulunulan saat accent renkte), kategori kırılımı, ödeme dağılımı çubuğu.
  • Şu an açık masalar tablosu.
  • Son 4 hata (tümü → /errors) ve son 6 personel hareketi.

Etkileşim yok. Başlıktaki tarih (10 Eylül 2026) sabittir, bugünün tarihi değildir.

Jira: SCRUM-186 (ekran). Rakamların kaynağı olacak raporlama işi henüz tanımlanmadı.

Menü Yönetimi — /menu (Client)

Solda kategori listesi, sağda ürün tablosu (sayfa başına 25 ürün).

  • Kategoriler: filtreleme, yeni kategori ekleme (varsayılan istasyon Mutfak, KDV %10) ve silme. Bir kategoriyi silmek o kategorideki tüm ürünleri de onay istemeden siler.
  • Kategori KDV oranı: bir kategori seçiliyken %1 / %10 / %20 arasından değiştirilir. Kendi oranı olmayan ürünler bu oranı kullanır.
  • Filtreler: ürün adı araması (Türkçe büyük/küçük harf duyarlı karşılaştırma), istasyon (Mutfak, Izgara, Bar, Pastane).
  • “N üründe içerik eksik” uyarısı: açıklaması veya içindekiler listesi boş olan ürünleri sayar.
  • Ürün düzenleyici (diyalog): ad, kategori, istasyon, fiyat, KDV oranı (kategori varsayılanı veya ürüne özel), açıklama, içindekiler, alerjenler (14 AB alerjeni), oto-ateşle, satışta, hazır notlar.
    • Doğrulama: ad boş olamaz, fiyat sıfırdan büyük olmalı.
    • Fiyatlar KDV dahildir. Düzenleyici KDV matrahını fiyat / (1 + oran/100) olarak gösterir.
    • Hazır notlar garson ekranında çip olarak görünür (SCRUM-69/70); sıra, buradaki sıradır. Aynı not iki kez eklenemez.
  • Ürün silme onaysızdır.

Jira: SCRUM-35 (menü CRUD ekranları), SCRUM-135 (menü değişikliklerinin Supabase → yerel Postgres senkron akışı), SCRUM-40 (yapay zekâ ile ürün açıklaması ve alerjen içeriği).

Stok — /stock (Client)

  • KPI satırı: stok değeri (miktar × son alım maliyeti), kritik malzeme sayısı, tükenen malzeme sayısı, bugünkü zayi tutarı, son sayım.
  • Minimum seviyenin altında malzeme varsa accent renkli uyarı şeridi.
  • Filtreler: malzeme adı, depo (Mutfak, Bar, Pastane, Depo), durum.
  • Durum kuralı (stockStatus): miktar ≤ 0 → Tükendi, miktar < minimum → Kritik, aksi halde Yeterli. Seviye çubuğu minimumun iki katını %100 kabul eder.
  • Son hareketler listesi.
  • Hareket / Sayım diyaloğu: Giriş, Çıkış, Zayi, Sayım tiplerinden birini seçtirir. “Kaydet” yalnızca arayüz; stok miktarı değişmez ve hareket eklenmez, çünkü stok verisi bu ekranda state’e alınmadı.

Jira: SCRUM-187 (ekran). Stok verisinin backend / veritabanı tarafı henüz tanımlanmadı.

Cihazlar — /devices (Client)

  • Kayıt istekleri: ağda açılıp backend’e kendini bildiren ama henüz onaylanmamış cihazlar.
    • Eşleştir diyaloğu cihaz adını, uygulama rolünü ve role özgü temel ayarları sorar. Onaylanınca cihaz listeye “online” olarak eklenir ve istek kaldırılır.
    • Reddet isteği listeden kaldırır.
  • Kayıtlı cihazlar: uygulama rolüne göre filtrelenir; her satırda rolün yapılandırma özeti (_lib/device-summary.ts) görünür.
    • Yapılandır diyaloğu rolü ve tüm ayarları düzenler. Rol değiştirmek ayarları o rolün varsayılanlarına döndürür.
    • Kaydı sil onaysızdır.

Role göre ayarlar:

RolAyarlar
POSKasa adı, fiş yazıcısı (kayıtlı yazıcılardan), gün sonu yetkisi
GarsonMasa bölgesi (Salon, Bahçe, Teras, Tümü), istasyona ateşleme yetkisi
KDSİstasyon, yeni sipariş sesi, hazır işaretleme (Satır / Adisyon bazlı)
Yazıcıİstasyon (Kasa = fiş yazıcısı), kağıt (58 / 80 mm), kopya sayısı

“Test fişi yazdır” yalnızca arayüz.

Jira: SCRUM-188 (ekran). Cihazların kendini tanıttığı X-Device-Id / X-App-Role başlıkları istemci tarafında SCRUM-114 kapsamında.

Uygulama Yönetimi — /apps (Server)

Her uygulama rolü (POS, Garson, KDS, Yazıcı) için bir kart: sürüm, rolün kısa açıklaması, cihaz sayısı ve çevrimiçi cihaz sayısı, o rolü çalıştıran cihazlar ve yapılandırma özetleri. Gruplama DEVICES’tan türetilir; ayrı saklanmaz, bu yüzden cihazlar ekranıyla çelişemez. “Cihazları yönet” yalnızca arayüz.

Jira: SCRUM-189 (ekran).

Restoran Ayarları — /settings (Client)

Elle SQL UPDATE çalıştırmanın yerine geçmesi planlanan form:

  • Sipariş modu: Masa bazlı / Hızlı satış
  • Servis bedeli (%), KDV (%), masa sayısı
  • Gün sonu saati
  • Adisyon kapanışında fişi otomatik yazdır; mutfak ekranında yeni sipariş sesi

Form, fixture değerlerinden farklılaşınca “Kaydedilmemiş değişiklik var” yazar. “Değişiklikleri geri al” formu sıfırlar. “Ayarları Kaydet” yalnızca arayüz.

Jira: SCRUM-36 (ekran), SCRUM-136 (restaurant_settings okuma/yazma server action’ı, Supabase), SCRUM-37 (bu tür tekil tabloların tenant bazında ayrılması). Kaydedilen değişiklik bir sonraki senkronizasyonda restorandaki yerel Postgres’e inecek.

Personel & Roller — /staff (Client)

  • Personel tablosu: ad, rol, PIN, son giriş, durum.
  • Pasifleştir / Aktifleştir ve Sil (onaysız).
  • Personel Ekle diyaloğu: ad soyad, rol (Garson, Kasa, Mutfak, Yönetici), PIN. Doğrulama: ad boş olamaz, PIN tam 4 rakam olmalı ve başka bir personelde kullanılmıyor olmalı.

PIN’ler tabloda açık metin olarak görünür. Bu, tasarımı yansıtıyor; PIN’ler gerçek veriye bağlanırken gösterilip gösterilmeyeceği ayrıca karara bağlanmalı.

Jira: SCRUM-190 (ekran). Veri tarafı SCRUM-44 altında tamamlandı: SCRUM-176 (employees tablosu) ve SCRUM-183 (backend’de PIN ile giriş ve oturum doğrulama). Ekranın bunlara bağlanması henüz yapılmadı.

Senkronizasyon — /sync (Client)

  • Buluta son gönderim (yerel → Supabase), yerele son iniş (Supabase → yerel Postgres) ve kuyruktaki değişiklik sayısı.
  • Değişiklikleri Şimdi Gönder: 900 ms sonra kuyruğu sıfırlayıp zamanları “az önce” yapar. Bu bir simülasyondur; hiçbir şey gönderilmez.
  • Senkron çalıştırma geçmişi: yön, kapsam, kayıt sayısı, süre, sonuç.

Normal akışta yerel Postgres değişiklikleri polling ile çeker; elle tetikleme acil durumlar içindir.

Jira: SCRUM-191 (ekran), SCRUM-135 (menü senkron akışı), SCRUM-142 (senkron katmanında tenant_id taşınması).

Hata Kayıtları — /errors (Client)

Backend’in error_logs tablosunun salt okunur görünümü.

  • Arama: yol, mesaj veya request id içinde.
  • SQLSTATE koduna göre filtre.
  • Satıra tıklayınca detay diyaloğu: zaman, SQLSTATE, request id, mesaj, stack.

Request id öne çıkarılmıştır; kullanıcının bildirdiği bir hata id ile bulunabilir. Stack alanı fixture’da yoldan uydurulur, gerçek bir stack değildir. Ekrandaki “saklama süresi 45 gün” ifadesi sabit metindir.

Jira: SCRUM-192 (ekran), SCRUM-177 (error_logs’a doğru kayıt yazılması ve hataların kullanıcıya yansıtılması).

Denetim Kaydı — /audit (Client)

Kim neyi, hangi kaynaktan (Garson uygulaması, Kasa, Mutfak ekranı, Yönetim paneli, Zamanlanmış görev) değiştirdi. Kullanıcıya göre filtrelenir.

Jira: SCRUM-193 (ekran), SCRUM-46 (sipariş işlemlerinin denetim kaydı: kim neyi ateşledi, neyi değiştirdi). Panelde yapılan değişikliklerin denetim kaydına nasıl yazılacağı henüz tanımlanmadı.

e-Belge · GİB — /fiscal (Client)

  • Mükellef, entegratör, ÖKC ve günlük e-Arşiv raporu durum kartları. “Raporu GİB’e gönder” yalnızca etiketi “iletildi” yapar.
  • Reddedilen veya kuyrukta bekleyen belge varsa uyarı şeridi (reddedilenler 8 gün içinde düzeltilip yeniden gönderilmelidir).
  • Belge tablosu: tip (e-Arşiv Fatura, e-Fatura, ÖKC Fiş, e-Arşiv İade) ve durum (Gönderildi, Kuyrukta, Hata, İptal) filtreleri.
  • Detay diyaloğu: belge bilgileri ve GİB / entegratör yanıtı. “Yeniden Gönder” (Hata durumunda) ve “Belgeyi İptal Et” (Gönderildi durumunda) yalnızca arayüz.
  • Adisyondan Fatura Kes diyaloğu: açık bir adisyon, belge tipi, bireysel / kurumsal müşteri bilgileri. Oluşturma yalnızca arayüz.

Mali belgeler hukuki sonuç doğurduğu için bu ekran bilerek hiçbir şey iletmez.

Jira: SCRUM-194 (ekran). GİB / entegratör entegrasyonu bu issue’nun bilerek dışında bırakıldı ve henüz planlanmadı.

Abonelik — /billing (Client)

  • Mevcut plan, durum, sonraki tahsilat tarihi ve tutarı.
  • Aylık / Yıllık geçişi. Yıllık fiyat 10 aylık tutardır (cyclePrice, “2 ay bedava”).
  • Otomatik yenileme aç/kapa.
  • Kullanım çubukları: cihaz (DEVICES sayısı), personel hesabı (STAFF sayısı) ve şube (sabit 1), planın limitlerine (PLAN_LIMITS) göre. Limit dolunca çubuk accent renge döner.
  • Plan kartları (Başlangıç, Profesyonel, Zincir). Seçilince plan değişir; mevcut plan düğmesi devre dışıdır.
  • Faturalar tablosu. Kart “Değiştir” ve fatura satırındaki “PDF” düğmeleri yalnızca arayüz.

Kullanım çubukları fixture’ların kendisinden sayar; cihazlar veya personel ekranında eklenen kayıtlar buraya yansımaz, çünkü o ekranların state’i kendi içindedir.

Jira: SCRUM-195 (ekran). Ödeme sağlayıcısı entegrasyonu henüz tanımlanmadı.

Oturum aç — /login (Client)

Kabuk dışında, iki sütunlu giriş ekranı. Kimlik doğrulama yapılmaz: e-posta boş değilse /panel’e gider. Bkz. Rotalar ve kabuk.

Last updated on