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:
| Rol | Ayarlar |
|---|---|
| POS | Kasa adı, fiş yazıcısı (kayıtlı yazıcılardan), gün sonu yetkisi |
| Garson | Masa 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 (
DEVICESsayısı), personel hesabı (STAFFsayı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.