diff --git a/README.md b/README.md new file mode 100644 index 0000000..0a25499 --- /dev/null +++ b/README.md @@ -0,0 +1,1801 @@ +# Uygulama Kullanıcı Kılavuzu + +## Dokümantasyon Kapsam Planı + +Bu kılavuz, proje kodunda doğrulanabilen backend servisleri, frontend ekranları, dinamik route/menü yapısı, seed edilen liste formları, Swagger yapılandırması ve ortak kullanıcı arayüzü bileşenleri esas alınarak hazırlanmıştır. + +Kapsama alınan ana alanlar: + +| Kapsam | Koddan Doğrulanan Kaynak | +| --- | --- | +| Giriş, kayıt, şifre sıfırlama, hesap doğrulama | `ui/src/views/auth`, `account.service.ts`, `auth.service.ts` | +| Dinamik menü ve route yapısı | `DynamicRouter`, `PlatformApplicationConfigurationContributor`, `MenusData.json` | +| Liste/form altyapısı | `Grid.tsx`, `FormDevExpress.tsx`, `ListForm*AppService`, `ListFormSeeder_*` | +| Yönetim ekranları | Kimlik, tenant, organizasyon, ayarlar, menüler, raporlar, dosyalar, audit log, intranet, forum, video oda | +| Platform modülleri | Languages, Settings, Notifications, MailQueue, Sender, SqlQueryManager | +| API ve Swagger | `PlatformHttpApiHostModule`, ABP conventional controllers, OAuth Swagger UI | +| Ortak komponentler | `components/ui`, `views/list`, `views/form`, `components/importManager`, `views/shared` | + +Kapsam dışında tutulan veya doğrulama notu düşülen alanlar: + +| Alan | Gerekçe | +| --- | --- | +| `supplychain`, `maintenance`, `warehouse`, `projects`, `crm`, `mrp`, `accounting` route sabitleri | `route.constant.ts` içinde sabit olarak görülüyor; ancak bu kod taramasında bu alanlara ait fiziksel view/servis veya seed edilmiş menü kaydı doğrulanamadı. | +| Canlı Swagger endpoint listesi | Uygulama çalıştırılmadan statik kod üzerinden incelendi; endpointler modül bazlı açıklanmıştır. | +| Kuruma özel rol isimleri | Kodda permission adları net; ancak müşteri ortamındaki rol-permission eşleştirmeleri veritabanında değişebilir. | + +## İçindekiler + +1. [Genel Bakış](#1-genel-bakış) +2. [Giriş ve Yetkilendirme](#2-giriş-ve-yetkilendirme) +3. [Ana Menü ve Navigasyon](#3-ana-menü-ve-navigasyon) +4. [Modüller ve Ekranlar](#4-modüller-ve-ekranlar) +5. [Ortak Komponentler](#5-ortak-komponentler) +6. [API ve Swagger Açıklaması](#6-api-ve-swagger-açıklaması) +7. [Kullanıcı Rolleri ve Yetkiler](#7-kullanıcı-rolleri-ve-yetkiler) +8. [Formlar ve Zorunlu Alanlar](#8-formlar-ve-zorunlu-alanlar) +9. [Listeleme, Filtreleme ve Raporlama Özellikleri](#9-listeleme-filtreleme-ve-raporlama-özellikleri) +10. [Hata Mesajları ve Kullanıcı Bildirimleri](#10-hata-mesajları-ve-kullanıcı-bildirimleri) +11. [Sık Kullanılan Senaryolar](#11-sık-kullanılan-senaryolar) +12. [Sık Sorulan Sorular](#12-sık-sorulan-sorular) +13. [Ekler](#13-ekler) +14. [Eksik / Netleştirilmesi Gereken Konular](#eksik--netleştirilmesi-gereken-konular) + +## 1. Genel Bakış + +Uygulama, ABP Framework tabanlı çok kiracılı bir platform uygulamasıdır. Backend tarafında C# ve ABP; frontend tarafında React, Tailwind CSS, DevExtreme bileşenleri ve özel UI komponentleri kullanılmaktadır. + +Uygulamanın ana amacı, kurumların yönetim, tanım, içerik, liste/form, raporlama, bildirim, dosya, forum, intranet ve video toplantı süreçlerini tek bir yönetim paneli üzerinden yürütmesini sağlamaktır. + +Kodda doğrulanan başlıca kullanım alanları: + +| Alan | Açıklama | +| --- | --- | +| Kimlik ve erişim yönetimi | Kullanıcı, rol, permission, permission group, organizasyon birimi ve oturum yönetimi. | +| Dinamik liste/form yönetimi | Kod veya veritabanı tanımıyla çalışan liste, form, grafik, pivot, ağaç, gantt, scheduler, widget ve workflow destekli ekranlar. | +| SaaS ve tenant yönetimi | Tenant kayıtları, tenant bağlantı ayarları, tenant bazlı ayrı veritabanı kullanımı, şube ve genel tanım tabloları. | +| Yönetim ve ayarlar | Sistem ayarları, menü, route, dinamik component, custom endpoint, datasource ve background worker yönetimi. | +| İçerik ve public site | Ana sayfa, hakkımızda, hizmetler, ürünler, ödeme, blog, demo ve iletişim içerikleri. | +| Intranet | Duyuru, anket, sosyal gönderi ve etkinlik kayıtları. | +| Forum | Kategori, konu, gönderi, yorum, beğeni, sabitleme, kilitleme ve çözüm işaretleme akışları. | +| Dosya yönetimi | Dosya/klasör listeleme, yükleme, indirme, kopyalama, taşıma, yeniden adlandırma ve silme. | +| Bildirimler | Bildirim türleri, kuralları, kullanıcı bildirimleri ve kanal bazlı bildirim ayarları. | +| Video oda | Oda oluşturma, listeleme, başlatma, bitirme, katılımcı, sohbet, ekran paylaşımı ve canlı bağlantı işlemleri. | +| Raporlama | DevExpress rapor görüntüleme/tasarım altyapısı ve rapor kategori/template listeleri. | + +Uygulama farklı kullanıcı profilleri tarafından kullanılabilir: + +| Kullanıcı Tipi | Tipik Kullanım | +| --- | --- | +| Son kullanıcı | Yetkili olduğu liste/form ekranlarında kayıt görüntüler, ekler, günceller, filtreler ve raporlar. | +| Yönetici | Kullanıcı, rol, tenant, menü, ayar, dosya, bildirim ve sistem tanımlarını yönetir. | +| İçerik yöneticisi | Public site içerikleri, blog, ürün, demo ve iletişim kayıtlarını yönetir. | +| Teknik kullanıcı | Swagger, SQL Query Manager, Developer Kit, data source, dynamic service ve custom endpoint ekranlarını kullanır. | + +Genel kullanım mantığı menü odaklıdır. Kullanıcının sahip olduğu permission değerlerine göre menüler ve işlem butonları görünür. Dinamik liste ekranlarında ekleme, düzenleme, silme, dışa aktarma, içe aktarma, filtreleme ve not ekleme gibi davranışlar her liste formunun kendi ayarlarına göre değişebilir. + +Platform aynı zamanda low-code geliştirme mantığını destekler. Yetkili teknik kullanıcılar veritabanı tablolarını, datasource kayıtlarını, dinamik listeleri, route kayıtlarını, menüleri, componentleri, custom endpointleri, CRUD endpointleri ve C# dynamic service kayıtlarını yöneterek yeni ekranlar ve iş akışları oluşturabilir. Bu yapı, uygulamanın müşteri veya tenant ihtiyaçlarına göre kod dağıtımı gerektirmeden genişletilmesine yardımcı olur. + +## 2. Giriş ve Yetkilendirme + +### Giriş Ekranı + +Giriş ekranı `/login` adresinde yer alır. Kodda doğrulanan alanlar: + +| Alan | Açıklama | +| --- | --- | +| Kullanıcı adı | Zorunludur. | +| Şifre | Zorunludur. | +| Beni hatırla | Opsiyonel seçimdir. | +| İki aşamalı doğrulama kodu | `twoFactor` aktif olduğunda zorunlu hale gelir. | + +Giriş işleminde `auth.service.ts` üzerinden token alınır. Başarılı giriş sonrasında kullanıcı yetkili admin alanına yönlendirilir. + +### Kayıt ve Hesap İşlemleri + +Kodda aşağıdaki kullanıcı hesap ekranları doğrulanmıştır: + +| Ekran | Route | Temel İşlev | +| --- | --- | --- | +| Kayıt | `/register` | Yeni kullanıcı kaydı oluşturur. | +| Şifremi unuttum | `/forgot-password` | Şifre sıfırlama kodu gönderir. | +| Şifre sıfırlama | `/reset-password` | Token ile yeni şifre belirler. | +| Hesap doğrulama kodu gönderme | `/confirm` | E-posta doğrulama kodu gönderir. | +| Hesap doğrulama | `/confirm/:userId/:token` | E-posta doğrulamasını tamamlar. | +| Süreli giriş talebi | `/extend-login` | Ek giriş süresi veya özel giriş isteği gönderir. | + +Kayıt formunda e-posta, şifre, şifre tekrarı, ad, soyad ve captcha alanları zorunlu olarak tanımlanmıştır. Şifre tekrarı alanı şifreyle aynı olmalıdır. + +### Kullanıcı Rolleri + +Kodda sabit rol isimlerinden çok permission odaklı yetkilendirme kullanımı görülmektedir. ABP Identity rollerine permission atanır; kullanıcılar rol veya kullanıcı bazlı permission üzerinden ekran ve işlem erişimi kazanır. + +Öne çıkan yetki kaynakları: + +| Kaynak | Açıklama | +| --- | --- | +| ABP Identity permissionları | Kullanıcı, rol, organizasyon birimi, tenant ve hesap yönetimi. | +| `PlatformConsts.IdentityPermissions` | Kullanıcı/rol için create, update, delete, export, import, note, manage permissions ve manage roles izinleri. | +| `SeedConsts` permissionları | Menü, liste form, ayar, bildirim, public içerik, rapor ve tanım ekranları için seed edilen permissionlar. | +| Dinamik list form permissionları | Her liste formu için okuma, ekleme, güncelleme, silme, export, import ve note gibi CRUD tabanlı yetkiler. | +| Route authority alanı | Dinamik route kayıtlarında ilgili ekranın ihtiyaç duyduğu permission listesi. | + +### Yetkilere Göre Ekran/İşlem Farklılıkları + +Kullanıcı yetkisi yoksa: + +| Durum | Kullanıcı Davranışı | +| --- | --- | +| Menü yetkisi yok | Menü öğesi kullanıcıya gösterilmeyebilir. | +| Route yetkisi yok | `PermissionGuard` erişimi engeller. | +| API 401/403 döner | Kullanıcı `/admin/access-denied` veya `/access-denied` ekranına yönlendirilir. | +| Liste işlem yetkisi yok | Ekleme, düzenleme, silme, içe/dışa aktarma veya not butonları görünmeyebilir ya da devre dışı kalabilir. | + +## 3. Ana Menü ve Navigasyon + +Menü yapısı veritabanı/seed kayıtları üzerinden yönetilir. Backend `PlatformApplicationConfigurationContributor`, route ve custom component kayıtlarını uygulama konfigürasyonuna ekler. Frontend `DynamicRouter`, bu route kayıtlarına göre ekranları yükler. + +Koddan doğrulanan ana menü grupları: + +| Menü Grubu | Açıklama | +| --- | --- | +| `App.Saas` | Tenant, şube, tanımlar, list form, language, notification, background worker, menu ve developer kit gibi platform yönetimi ekranları. | +| `App.Administration` | Ayarlar, kimlik yönetimi, organizasyon, kısıtlar, raporlar, intranet, video oda, dosya ve forum ekranları. | +| `App.Public` | Site içerikleri, ürün, ödeme, satış siparişi, blog, demo ve iletişim yönetimi. | +| `App.DeveloperKit` | List form wizard, custom endpoint, CRUD endpoint, component ve dynamic service yönetimi. | +| `Abp.Identity` | Kullanıcı, rol, permission, permission group, claim type, audit log, session ve organizasyon birimi ekranları. | + +Navigasyon kuralları: + +| Kullanım | Açıklama | +| --- | --- | +| Kök adres `/` | Subdomain varsa login ekranına, yoksa public home ekranına yönlenir. | +| Admin alanı `/admin/*` | Korunan route alanıdır; giriş ve permission kontrolü yapılır. | +| Public ekranlar | Giriş gerektirmeyen site sayfalarıdır. | +| Dynamic route | Route kaydındaki `componentPath` fiziksel React component veya dinamik component olarak yüklenir. | +| Bulunamayan sayfa | `NotFound` ekranı gösterilir. | +| Yetkisiz erişim | `AccessDenied` ekranı gösterilir. | + +Uygulama route yapısı üç ana kullanım tipini destekler: + +| Route Tipi | Açıklama | +| --- | --- | +| Public | Ziyaretçilerin veya giriş yapmamış kullanıcıların erişebildiği public site ekranları. | +| Authenticated | Login, register, şifre sıfırlama, hesap doğrulama gibi kimlik ekranları. | +| Protected | Giriş ve permission kontrolü gerektiren admin/yönetim ekranları. | + +Route kayıtları veritabanından beslendiği için hem uygulama içindeki hazır React ekranları hem de Developer Kit ile oluşturulan dinamik componentler route olarak sunulabilir. Menü kayıtları da aynı route pathleriyle ilişkilendirilir; böylece menü grupları, alt menüler ve sürükle-bırak sıralama ile kullanıcı navigasyonu yönetilebilir. + +## 4. Modüller ve Ekranlar + +Bu bölümde yalnızca kodda doğrulanabilen modüller ve ekranlar açıklanmıştır. + +### Giriş ve Hesap Yönetimi + +#### Amaç + +Kullanıcının sisteme giriş yapmasını, yeni hesap oluşturmasını, şifresini sıfırlamasını ve hesabını doğrulamasını sağlar. + +#### Ekranda Görülen Alanlar + +| Ekran | Alanlar | +| --- | --- | +| Login | Kullanıcı adı, şifre, beni hatırla, iki aşamalı doğrulama kodu. | +| Register | E-posta, şifre, şifre tekrarı, ad, soyad, captcha. | +| Forgot Password | E-posta, captcha. | +| Reset Password | Yeni şifre, şifre tekrarı. | +| Confirmation | E-posta veya doğrulama token bilgileri. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Giriş yapma | Kullanıcı adı ve şifre ile oturum açılır. | +| Kayıt olma | Zorunlu alanlar doldurularak hesap oluşturulur. | +| Şifre sıfırlama | E-posta ile alınan token üzerinden yeni şifre belirlenir. | +| Hesap doğrulama | Doğrulama linki veya kodu ile hesap onaylanır. | +| Çıkış yapma | Token iptal edilerek oturum kapatılır. | + +#### İş Akışı + +1. Kullanıcı giriş ekranını açar. +2. Zorunlu alanları doldurur. +3. Sistem kimlik bilgilerini doğrular. +4. İki aşamalı doğrulama gerekiyorsa ek kod istenir. +5. Başarılı işlem sonrası kullanıcı yetkili olduğu admin veya public alana yönlendirilir. + +#### Dikkat Edilmesi Gerekenler + +| Konu | Açıklama | +| --- | --- | +| Captcha | Kayıt, şifre sıfırlama ve doğrulama kodu gönderme ekranlarında zorunlu olabilir. | +| Şifre tekrarı | Şifre ve şifre tekrarı aynı olmalıdır. | +| 401/403 | Oturum süresi dolduğunda veya yetki yoksa erişim engellenir. | +| Token süreleri | Backend access token için 60 dakika, refresh token için 90 dakika yapılandırmıştır. | + +### Dashboard + +#### Amaç + +Admin alanına giriş yapan kullanıcıya başlangıç ekranı sağlar. Route sabiti `/admin/dashboard` olarak tanımlıdır ve `DashboardAppService` backend tarafında bulunur. + +#### Ekranda Görülen Alanlar + +Kodda `Dashboard.tsx` ekranı ve `DashboardAppService` doğrulanmıştır. Dashboard içeriği kurulum ve route kayıtlarına bağlı olarak değişebilir. + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Genel durumu görüntüleme | Kullanıcı ana yönetim panelinden özet bilgilere ulaşır. | +| Menüye geçiş | Sol/üst menüden yetkili olduğu modüle geçer. | + +#### İş Akışı + +1. Kullanıcı giriş yapar. +2. Admin kök route'u dashboard ekranına yönlendirir. +3. Kullanıcı menüden işlem yapmak istediği modülü seçer. + +#### Dikkat Edilmesi Gerekenler + +Dashboard içeriği route, menu ve backend veri durumuna bağlıdır. Koddan tüm dashboard kartları ayrıntılı olarak doğrulanmadığı için bu bölüm genel tutulmuştur. + +### Dinamik Liste Ekranları + +#### Amaç + +Uygulamanın birçok yönetim ekranı, tek bir dinamik liste altyapısı üzerinden çalışır. Bu altyapı liste kolonlarını, filtreleri, form alanlarını, yetkileri, alt formları, notları, import/export davranışını ve workflow aksiyonlarını list form tanımından alır. + +Dinamik listeler yalnızca klasik tablo görünümü üretmez. Platform DevExpress tabanlı Grid, Pivot, Chart, Tree, Gantt, Scheduler ve Form bileşenlerini dinamik olarak yönetebilir. Böylece aynı datasource ve list form tanımı üzerinden farklı veri görünümü ve iş akışı ekranları hazırlanabilir. + +#### Ekranda Görülen Alanlar + +Dinamik liste ekranlarında görülebilen başlıca alanlar: + +| Alan | Açıklama | +| --- | --- | +| Veri tablosu | DevExtreme DataGrid tabanlı kayıt listesi. | +| Kolonlar | List form field tanımına göre gelir. | +| Arama paneli | Genel arama yapılmasını sağlar. | +| Filtre satırı | Kolon bazlı filtreleme yapılabilir. | +| Header filter | Kolon değerleri üzerinden seçimli filtreleme sağlar. | +| Grup paneli | Alanlar sürüklenerek gruplama yapılabilir. | +| Kolon seçici | Yetkili ve aktifse kolon görünürlüğü düzenlenebilir. | +| Sayfalama | Sayfa boyutu ve navigasyon butonları list form ayarına göre gösterilir. | +| Özet alanları | Toplam, ortalama, adet, minimum, maksimum gibi özetler gösterilebilir. | +| Extra filter | Listeye özel ek filtre toolbar alanları. | +| Alt formlar | Seçili kayda bağlı alt liste veya form sekmeleri. | +| Not paneli | Kayıt bazlı not görüntüleme/ekleme yetkiye bağlıdır. | +| Import yöneticisi | Excel/CSV içe aktarma desteklenir. | +| Widget alanları | Listenin üst kısmında SQL ile beslenebilen birden fazla özet widget gösterilebilir. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Listeleme | Kayıtlar tablolarda görüntülenir. | +| Kayıt ekleme | Yetki ve list form ayarı uygunsa yeni kayıt formu açılır. | +| Kayıt düzenleme | Yetki ve alan bazlı düzenleme ayarına göre kayıt güncellenir. | +| Kayıt silme | Tekil veya çoklu silme yapılabilir. Çoklu silme birden fazla kayıt seçildiğinde görünür. | +| Filtreleme | Filtre satırı, header filter, extra filter ve arama paneli kullanılabilir. | +| Gruplama | Grup paneli açıksa kolon bazlı gruplama yapılabilir. | +| Dışa aktarma | List form ayarına göre export kullanılabilir. | +| İçe aktarma | Import Dashboard üzerinden template alma, dosya yükleme, önizleme ve aktarım yapılabilir. | +| Workflow işlemi | Seçili satırların durumuna göre onay/red gibi workflow butonları gösterilebilir. | +| Not ekleme | Not yetkisi ve kayıt anahtarı varsa not paneli açılır. | +| Alt liste oluşturma | Dinamik formun altında ilişkili sub listeler gösterilebilir. | +| İlişkili form kullanma | İki form arasında parent-child ilişkiler kurulabilir. | + +#### İş Akışı + +1. Kullanıcı menüden bir liste ekranı açar. +2. Sistem ilgili `listFormCode` için kolon ve grid ayarlarını backendden alır. +3. Kullanıcı kayıtları görüntüler, filtreler veya arar. +4. Yetkisi varsa yeni kayıt ekler veya mevcut kaydı düzenler. +5. Kaydetme sonrası grid yenilenir. +6. İhtiyaç varsa içe aktarma, dışa aktarma, not veya workflow aksiyonu kullanılır. + +#### Dikkat Edilmesi Gerekenler + +| Konu | Açıklama | +| --- | --- | +| Alan yetkileri | Alanlar okuma, ekleme ve güncelleme moduna göre gizlenebilir veya pasif olabilir. | +| Varsayılan değerler | `@AUTONUMBER`, sequence veya URL filtresi üzerinden otomatik değer atanabilir. | +| Cascade lookup | Üst alan boşsa bağlı lookup alanı pasif olabilir; üst alan değişince alt alan temizlenebilir. | +| Grid state | Kullanıcı kolon/filtre düzenini kaydedebilir; başarılı kayıtta bildirim gösterilir. | +| Mobil davranış | Düzenleme popup'ı mobil veya dokunmatik cihazlarda tam genişlikte açılabilir. | +| Datasource seçimi | Liste, tenant veya ekran ihtiyacına göre farklı datasource üzerinden çalışabilir. | +| Veritabanı tipi | Datasource yapısı MSSQL ve PostgreSQL kaynaklarıyla çalışacak şekilde tasarlanmıştır. | + +### List Form Yönetimi + +#### Amaç + +Dinamik liste ve form ekranlarının tanımlarını yönetmek için kullanılır. Kodda list form, field, customization, query preview, json row operasyonları, wizard ve workflow servisleri doğrulanmıştır. + +#### Ekranda Görülen Alanlar + +| Ekran | Açıklama | +| --- | --- | +| List Form Listesi | List form kayıtlarını listeler. | +| List Form Düzenleme | Detay, database, kolon, edit form, filtre, arama, grup, pivot, tree, gantt, scheduler, pager, state, sub form, widget, workflow ve chart ayar sekmeleri. | +| Alan Yönetimi | Her kolon/alan için detay, permission, seçenek, lookup, filtreleme, başlık, grup, özet, validasyon, koşullu format ve pivot ayarları. | +| Wizard | Yeni list form, menü, permission ve seed dosyası üretimi için adımlı kurulum ekranı. | +| Workflow Designer | Liste form bazlı workflow kriterleri ve akış tasarımı. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Liste form oluşturma | Wizard ile yeni liste/form tanımı hazırlanabilir. | +| Liste form düzenleme | Grid, form, datasource, yetki, filtre ve görünüm seçenekleri düzenlenir. | +| Alan ekleme/düzenleme | Kolon özellikleri ve formdaki davranışları ayarlanır. | +| JSON satır işlemleri | Komut, ekstra filtre, sub form, widget, chart series/pane/axis gibi yapılandırmalar eklenir. | +| Workflow tanımlama | Onay akışı için kriter ve alanlar belirlenir. | + +#### İş Akışı + +1. Yönetici List Form menüsünü açar. +2. Yeni ekran gerekiyorsa wizard başlatır. +3. Liste kodu, menü bilgisi, tablo/veri kaynağı ve alanlar tanımlanır. +4. Oluşturulan list form düzenleme ekranında detaylandırılır. +5. Permission ve menü ayarları tamamlandıktan sonra kullanıcılar ekrana erişebilir. + +#### Dikkat Edilmesi Gerekenler + +Bu ekran teknik/yönetici kullanıcılar içindir. Yanlış datasource, SQL veya permission tanımı son kullanıcı ekranlarının çalışmasını etkileyebilir. + +### Kimlik Yönetimi + +#### Amaç + +Kullanıcı, rol, permission, claim type, oturum, concurrent lisans kapsamındaki aktif kullanıcılar ve organizasyon birimi yönetimini sağlar. Bu bölüm, uygulamayı kullanabilecek kişilerin genel bilgilerini, iş bilgilerini, yetki gruplarını, şube erişimlerini, hesap durumlarını ve güvenlik seçeneklerini yönetmek için kullanılır. + +#### Ekranda Görülen Alanlar + +Kodda seed edilen veya servisle doğrulanan ekranlar: + +| Ekran | Menü/Route | Açıklama | +| --- | --- | --- | +| Kullanıcılar | `/admin/list/AbpIdentity.Users` | Kullanıcı listesi ve kullanıcı detayına geçiş. | +| Kullanıcı Detayı | `/admin/users/detail/:userId` | Kullanıcı bilgileri, avatar, kilit/aktiflik, rol ve permission işlemleri. | +| Roller | `/admin/list/AbpIdentity.Roles` | Rol listesi ve rol izinleri. | +| Permission Groups | `/admin/list/Abp.Identity.PermissionGroups` | Permission grup tanımları. | +| Permissions | `/admin/list/Abp.Identity.Permissions` | Permission tanımları. | +| Claim Types | `/admin/list/App.IdentityManagement.ClaimTypes` | Kullanıcı claim tipleri. | +| Audit Logs | `/admin/list/App.IdentityManagement.AuditLogs` | Denetim kayıtları. | +| Sessions | `/admin/list/App.IdentityManagement.Sessions` | Kullanıcı oturum kayıtları. | +| Organization Units | `/admin/ous` | Organizasyon birimi ağacı, üye ve rol atamaları. | + +Kullanıcı tanımında yönetilebilen başlıca bilgi grupları: + +| Bilgi Grubu | Açıklama | +| --- | --- | +| Genel bilgiler | Ad, soyad, e-posta, telefon, kullanıcı adı ve temel profil bilgileri. | +| İş bilgileri | Kullanıcının departmanı, job position bilgisi, şubesi ve çalışma saati tanımı. | +| Kimlik bilgileri | Kullanıcıya ait ek kimlik/claim bilgileri. | +| Rol ve yetkiler | Kullanıcının hangi rollere sahip olduğu ve kullanıcı bazlı özel permissionları. | +| Şube erişimi | Kullanıcının hangi branch kayıtlarını görebileceği veya yönetebileceği. | +| Hesap durumu | Aktiflik, status, admin verification, email confirm, two factor ve account end date gibi hesap alanları. | +| Şifre politikası | Şifre değiştirme zamanı ve periyodik şifre değişim kuralları. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Kullanıcı listeleme | Kullanıcı kayıtları listelenir ve filtrelenir. | +| Kullanıcı bilgisi düzenleme | E-posta, ad, soyad, telefon, aktiflik ve doğrulama bilgileri düzenlenebilir. | +| Rol atama | Kullanıcıya rol atanabilir. | +| Permission yönetimi | Kullanıcı veya role permission verilebilir. | +| Permission kopyalama | Kullanıcı veya rol yetkileri başka kullanıcı/role kopyalanabilir. | +| Claim type yönetimi | ABP claim type kayıtları tanımlanır ve kullanıcı tanımlama sürecinde kullanılabilir. | +| Kullanıcı oturumu sonlandırma | `kickUser` servisi ile oturum düşürülebilir. | +| Organizasyon birimi yönetimi | Birim oluşturma, taşıma, silme, kullanıcı/rol atama işlemleri yapılabilir. | +| Aktif kullanıcı izleme | Concurrent lisans yönetimi kapsamında aktif kullanıcılar ve oturumlar takip edilebilir. | + +#### İş Akışı + +1. Yönetici Kimlik Yönetimi menüsünden ilgili ekranı açar. +2. Kullanıcı, rol, permission group, claim type veya organizasyon birimi kaydını seçer. +3. Kullanıcı tanımında genel bilgileri, iş bilgilerini, departman/job position alanlarını, şube erişimini ve rol bilgilerini düzenler. +4. Gerekirse kullanıcı veya rol permissionlarını tanımlar ya da mevcut yetkileri başka kullanıcı/role kopyalar. +5. Organization Unit ekranında takım/birim oluşturur ve ilgili kullanıcıları bu birime atar. +6. Sistem değişiklikleri kaydeder ve ilgili listeyi günceller. + +#### Dikkat Edilmesi Gerekenler + +| Konu | Açıklama | +| --- | --- | +| Kullanıcı permissionları | Rol permissionlarına ek olarak kullanıcı özelinde verilebilir. | +| Kilit yönetimi | Hesap kilidi ve aktiflik alanları kullanıcının girişini etkiler. | +| Permission değişikliği | Menü görünürlüğü ve işlem butonları üzerinde etkili olur. | +| Audit takibi | Audit kayıtları üzerinden hangi kullanıcının ne zaman hangi API çağrısını yaptığı, insert/update/delete gibi işlemler ve işlem detayları takip edilebilir. | +| Aktif oturum | Concurrent lisans yönetimi nedeniyle aktif kullanıcı listesi önemlidir; yetkili kullanıcı gerektiğinde aktif oturumu sonlandırabilir. | + +### Profil + +#### Amaç + +Kullanıcının kendi profil bilgilerini, şifresini ve bildirim tercihlerini yönetmesini sağlar. + +#### Ekranda Görülen Alanlar + +| Sekme | Açıklama | +| --- | --- | +| Genel | Profil bilgileri. | +| Şifre | Şifre değiştirme alanları. | +| Bildirim Ayarları | Kullanıcı bildirim kuralları ve kanalları. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Profil güncelleme | Kullanıcı kendi bilgilerini günceller. | +| Şifre değiştirme | Mevcut şifre ve yeni şifre bilgileriyle şifre değiştirir. | +| Bildirim tercihi | Bildirim tiplerine göre kural ve kanal ayarlarını yönetir. | + +#### İş Akışı + +1. Kullanıcı Profil menüsüne girer. +2. İlgili sekmeyi seçer. +3. Alanları düzenler. +4. Kaydet butonuyla değişiklikleri uygular. + +#### Dikkat Edilmesi Gerekenler + +Şifre kuralları sistem ayarlarında tanımlanabilir. Profil ve şifre alanlarının görünürlüğü permission veya ayarlarla kısıtlanabilir. + +### Tenant ve Şube Yönetimi + +#### Amaç + +Çok kiracılı yapıda tenant kayıtlarını, tenant bazlı bağlantı ayarlarını, şube tanımlarını, tenant bazında değiştirilebilen tanım listelerini ve organizasyon birimlerini yönetmek için kullanılır. Platform tenant, branch ve organization unit bazında kayıtları ayırabilir veya filtreleyebilir. Kurulum tercihine göre her tenant ayrı veritabanı bağlantısı ile de çalışabilir. + +#### Ekranda Görülen Alanlar + +| Ekran | Açıklama | +| --- | --- | +| Tenant Listesi | Tenant kayıtlarının listelenmesi. | +| Tenant Connection String | Tenant varsayılan bağlantı cümlesini görüntüleme/güncelleme/silme. | +| Tenant Seed | Tenant verisini oluşturma veya güncelleme. | +| Şubeler | `App.Branches` list formu. | +| Organization Units | Organizasyon birimi ağacı, kullanıcı ve rol atamaları. | +| Sectors | Tenant bazında sektör tanımları. | +| Departments | Tenant bazında departman tanımları. | +| Job Positions | Tenant bazında görev/pozisyon tanımları. | +| Organizasyon Şeması | Departman, job position ve kullanıcı bilgileriyle oluşturulan organizasyon görünümü. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Tenant listeleme | Tenant kayıtlarını görüntüler. | +| Tenant detay görüntüleme | Tenant bilgilerine ulaşır. | +| Bağlantı ayarı yönetme | Varsayılan connection string düzenlenir. | +| Seed çalıştırma | Tenant için başlangıç verileri oluşturulur. | +| Şube yönetimi | Şube kayıtları dinamik liste üzerinden yönetilir. | +| Branch bazlı yetkilendirme | Kullanıcıların yetkileri ve veri erişimleri şube bazında sınırlandırılabilir. | +| Organizasyon birimi yönetimi | Departman/birim ağacı üzerinden kullanıcı ve rol ilişkileri yönetilir. | +| Tenant bazlı tanım yönetimi | Sector, Department ve Job Position gibi tanımlar tenant ihtiyacına göre düzenlenir. | +| Organizasyon şeması oluşturma | Tanımlanan departman, pozisyon ve kullanıcı bilgileriyle organizasyon şeması hazırlanır. | + +#### İş Akışı + +1. Yönetici tenant veya şube ekranını açar. +2. İlgili kaydı seçer. +3. Gerekirse tenant bağlantı cümlesini veya tenant seed işlemini yönetir. +4. Tenant altında kullanılacak branch kayıtlarını tanımlar. +5. Tenant için sector, department ve job position tanımlarını oluşturur. +6. Kullanıcıları departman, pozisyon ve şube bilgileriyle ilişkilendirir. +7. Organization Unit veya organizasyon şeması ekranında birim/takım yapısını düzenler. +8. Sistem başarı veya hata bildirimi gösterir. + +#### Dikkat Edilmesi Gerekenler + +Tenant connection string değişiklikleri uygulamanın veri erişimini doğrudan etkiler. Bu işlem teknik yetki gerektirir. Branch ve organization unit yetkileri kullanıcıların hangi kayıtları görebileceğini etkileyebileceği için bu tanımlar dikkatli yapılmalıdır. Tenant bazlı sector, department ve job position tanımları kullanıcı kartları, organizasyon şeması ve filtreleme davranışlarında kullanılabilir. + +### Sistem Ayarları + +#### Amaç + +Uygulama ayarlarını gruplar halinde görüntülemek ve güncellemek için kullanılır. ABP setting altyapısı kullanılır; mevcut ayarlar yönetilebildiği gibi sisteme yeni ayar tanımları da eklenebilir. Bazı ayarlar global düzeyde, bazı ayarlar tenant düzeyinde değiştirilebilir. + +#### Ekranda Görülen Alanlar + +| Alan | Açıklama | +| --- | --- | +| Ana grup menüsü | Ayar ana grupları sol menüde listelenir. | +| Alt grup kartları | Her ana grup altında alt grup kartları yer alır. | +| Ayar alanları | Text, Number, Memo, Bool ve List tipleri desteklenir. | +| Yardım ikonu | Ayar açıklaması tooltip olarak gösterilir. | +| Kaydet | Değişiklikleri kaydeder. | + +Yönetilebilen önemli ayar grupları: + +| Ayar Grubu | Açıklama | +| --- | --- | +| Tema | Elstar tema yapısı, açık/koyu mod ve public/admin görünüm ayarları. | +| Kayıt ve giriş | Register, local login, iki aşamalı doğrulama ve süreli giriş davranışları. | +| Captcha | Cloudflare Turnstile/Captcha endpoint, site key ve secret key ayarları. | +| Hesap doğrulama | Admin verification, e-posta doğrulama ve telefon doğrulama ayarları. | +| Şifre standartları | Minimum uzunluk, benzersiz karakter, küçük/büyük harf, rakam, özel karakter ve periyodik şifre değiştirme kuralları. | +| Kilitlenme | Hatalı giriş sayısı ve kilit süresi ayarları. | +| E-posta | SMTP, varsayılan gönderici, Amazon SES profil/region/access key ayarları. | +| SMS | Posta Güvercini URL, kullanıcı adı ve şifre ayarları. | +| WhatsApp | WhatsApp URL, phone number id, template name ve token ayarları. | +| Rocket.Chat | Rocket URL, user id ve token ayarları. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Ayar görüntüleme | Kullanıcı yetkili olduğu ayarları görür. | +| Ayar düzenleme | Alan tipine göre değer girer veya seçim yapar. | +| Yeni ayar tanımı yönetme | Yetkili teknik/yönetici kullanıcılar setting definition kayıtlarını genişletebilir. | +| Tema değiştirme | Site theme style ayarı değiştiğinde açık/koyu mod güncellenir. | +| Kaydetme | Başarılı işlemde başarı bildirimi gösterilir. | + +#### İş Akışı + +1. Yönetici Ayarlar ekranına girer. +2. Sol menüden ana ayar grubunu seçer. +3. Alt grup içindeki değerleri günceller. +4. Kaydet butonuna basar. +5. Sistem ayarları kaydeder ve uygulama konfigürasyonunu yeniler. + +#### Dikkat Edilmesi Gerekenler + +Ayarlar permission ve provider bilgilerine göre değişebilir. Yanlış e-posta, captcha, SMS, Rocket.Chat, WhatsApp, Amazon SES, SMTP veya tema ayarı ilgili entegrasyonları etkileyebilir. Tenant bazında değiştirilebilen ayarlar yalnızca ilgili tenant davranışını etkilerken global ayarlar tüm sistemi etkileyebilir. + +### Datasource Yönetimi + +#### Amaç + +Datasource tanımları, dinamik listelerin ve Developer Kit araçlarının hangi veritabanı veya bağlantı üzerinden çalışacağını belirler. Platform birden fazla veritabanı kaynağından liste, form ve endpoint üretimini destekler. + +#### Ekranda Görülen Alanlar + +| Alan | Açıklama | +| --- | --- | +| Datasource listesi | Tanımlı veri kaynakları listelenir. | +| Kod/ad bilgisi | Datasource'un list form veya endpointlerde seçilebilmesi için kullanılır. | +| Veritabanı sağlayıcısı | MSSQL veya PostgreSQL gibi sağlayıcı bilgisi. | +| Bağlantı bilgisi | İlgili veritabanına erişim için kullanılan bağlantı tanımı. | +| Tenant ilişkisi | Datasource tenant bazlı kullanılacaksa ilgili tenant bağlamı. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Datasource ekleme | Yeni veritabanı kaynağı tanımlanır. | +| Datasource düzenleme | Bağlantı ve sağlayıcı bilgileri güncellenir. | +| Listeye datasource seçme | Dinamik list formun hangi datasource üzerinden çalışacağı belirlenir. | +| Endpointlere datasource bağlama | CRUD endpoint veya custom endpoint için veri kaynağı seçilir. | + +#### İş Akışı + +1. Teknik kullanıcı Datasource ekranını açar. +2. MSSQL veya PostgreSQL bağlantısı için datasource kaydı oluşturur. +3. Dinamik list form, CRUD endpoint veya custom endpoint içinde bu datasource'u seçer. +4. Sistem liste, form veya API işlemlerini seçilen kaynak üzerinden yürütür. + +#### Dikkat Edilmesi Gerekenler + +Yanlış datasource veya bağlantı bilgisi dinamik listelerin veri getirememesine ya da hatalı veritabanında işlem yapmasına neden olabilir. Tenant bazlı çalışmada datasource seçimi veri izolasyonunu doğrudan etkiler. + +### Menü ve Route Yönetimi + +#### Amaç + +Uygulama menülerini, menü gruplarını, route kayıtlarını ve menü ağacını yönetir. Route yapısı veritabanından beslendiği için public, authenticated ve protected ekranlar merkezi olarak tanımlanabilir. Route kayıtlarında hem hazır statik componentler hem de Developer Kit ile oluşturulan dinamik componentler kullanılabilir. + +#### Ekranda Görülen Alanlar + +| Ekran | Açıklama | +| --- | --- | +| Menü Grupları | Menü grubu kayıtları. | +| Menü Listesi | Menü kodu, parent code, URL, ikon, sıra, permission gibi alanlar. | +| Menü Manager | Sürükle-bırak veya ağaç yapısında menü düzenleme. | +| Routes | Route path, component type, component path, route type ve authority bilgileri. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Menü ekleme/düzenleme | Menü kaydı oluşturulur veya güncellenir. | +| Menü sıralama | Menü ağacında sıralama ve parent ilişkisi düzenlenir. | +| Permission bağlama | Menü görünürlüğü için `RequiredPermissionName` atanır. | +| Route yönetme | Route kayıtlarının component ve yetki bilgileri düzenlenir. | +| Dinamik component bağlama | Aktif custom componentler istenilen route path altında kullanıcıya sunulur. | +| Menü grubu yönetme | Tenant veya uygulama ihtiyacına göre menü grupları tanımlanır. | + +#### İş Akışı + +1. Yönetici Menü Yönetimi ekranını açar. +2. Menü veya route kaydını seçer. +3. URL, component path, yetki ve görünüm bilgilerini düzenler. +4. Kaydeder. +5. Uygulama konfigürasyonu yenilendiğinde route ve menü davranışı güncellenir. + +#### Dikkat Edilmesi Gerekenler + +Yanlış component path route yüklenememesine neden olur. Yanlış permission adı menünün görünmemesine veya yetkisiz erişime neden olabilir. Menü pathi ile route pathi uyumlu değilse kullanıcı menüden ekrana gidemeyebilir. + +### Developer Kit + +#### Amaç + +Teknik kullanıcıların SQL nesnelerini, custom componentleri, custom endpointleri, CRUD endpointleri, dynamic service kayıtlarını ve Wizard Manager ile yeni low-code ekranları yönetmesini sağlar. Developer Kit, uygulamanın kullanıcı tarafından genişletilebilmesi için hazırlanmış teknik araç setidir. + +#### Ekranda Görülen Alanlar + +| Ekran | Route | Açıklama | +| --- | --- | --- | +| List Form Wizard | `/admin/listform/wizard` veya seed menüde wizard manager | Yeni dinamik ekran üretimi. | +| Custom Endpoints | `/admin/list/App.DeveloperKit.CustomEndpoints` | Custom endpoint tanımları. | +| CRUD Endpoints | `/admin/developerkit/endpoints` | Entity üzerinden endpoint üretimi/yönetimi. | +| Components | `/admin/developerkit/components` | Dinamik React component yönetimi. | +| Dynamic Services | `/admin/developerkit/dynamic-services` | C# dynamic service kodu test/compile/publish işlemleri. | +| SQL Query Manager | `/admin/sqlQueryManager` | SQL nesne ve sorgu yönetimi. | + +Developer Kit içinde öne çıkan araçlar: + +| Araç | Kullanım Amacı | +| --- | --- | +| SQL Query Manager | Veritabanı nesnelerini inceleme, sorgu çalıştırma, tablo oluşturma, seçili nesneleri farklı veritabanına kopyalama ve değişiklikleri seed dosyalarına taşıma. | +| CRUD Endpoints | Seçilen datasource ve tablo üzerinden CRUD API endpointleri üretme. | +| Custom Endpoints | Dinamik SQL çalıştıran, GET/POST destekleyen, URL, parametre ve permission ile yönetilen özel endpointler oluşturma. | +| Custom Components | React tabanlı dinamik component tanımlama, aktif/pasif yapma ve route üzerinden sunma. | +| Dynamic Services | C# ile yazılan servisleri derleme, yayınlama, Swagger üzerinde API olarak görünür hale getirme ve componentlerle entegre etme. | +| Wizard Manager | Menü, alt menü, SQL tablo seçimi, sütun seçimi, editor seçimi, list form, sub list, workflow, widget, dil metni ve permission üretimini adımlı olarak yapma. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Component oluşturma | Dinamik component adı, açıklaması, bağımlılıkları, kodu ve aktiflik durumu yönetilir. | +| Endpoint üretme | CRUD endpoint tanımı oluşturulur veya aktif/pasif yapılır. | +| Custom endpoint oluşturma | SQL, parametre, HTTP metodu, URL ve permission bilgileriyle özel API tanımlanır. | +| Dynamic service derleme | Kod test compile edilir, yayınlanır veya pasif yapılır. | +| SQL çalıştırma | Yetkili kullanıcı SQL nesnelerini ve sorgularını yönetir. | +| Veritabanı nesnesi kopyalama | Table, stored procedure, view ve function nesneleri birden fazla veritabanına kopyalanabilir. | +| Seed güncelleme | Deploy edilen SQL objesi `SqlData` yapısı altında JSON olarak saklanarak sonraki seeder çalıştırmalarında güncel tutulabilir. | +| Low-code ekran deploy etme | Wizard Manager sonunda menü, dil metni, permission, grid/form/gantt/chart gibi ayarlar otomatik oluşturulabilir. | + +#### İş Akışı + +1. Teknik kullanıcı Developer Kit menüsünden ilgili aracı açar. +2. Gerekiyorsa SQL Query Manager ile tablo, view, function veya stored procedure hazırlar. +3. Datasource ve tablo seçimi yapar. +4. CRUD endpoint, custom endpoint, dynamic service veya custom component tanımlar. +5. Wizard Manager kullanılıyorsa menü, alt menü, kolonlar, editorler, sub listeler, widgetlar ve workflow adımları belirlenir. +6. Test/compile/generate işlemi çalıştırılır. +7. Başarılıysa deploy/publish edilir. +8. Oluşturulan route ve menüler permissionlarla birlikte kullanıcılara sunulur. + +#### Hazır Component Örnekleri + +| Component | Açıklama | +| --- | --- | +| `DynamicEntityComponent` | Dinamik entity veya tablo kaynaklı veriyi component içinde göstermek için örnek olarak kullanılabilir. | +| `RoleListComponent` | Rol listesini veya rol odaklı bir görünümü örneklemek için kullanılan hazır componenttir. | + +#### Wizard Manager ile Low-Code Ekran Oluşturma + +Wizard Manager, yeni bir ekranın teknik detaylarını adım adım oluşturmak için kullanılır: + +| Adım | Açıklama | +| --- | --- | +| Menü seçimi | Yeni menü eklenir veya mevcut bir menünün altına alt menü oluşturulur. | +| SQL tablo seçimi | Datasource içindeki tablolar arasından kaynak tablo seçilir. | +| Sütun seçimi | Listede ve formda gösterilecek sütunlar belirlenir. | +| Editor seçimi | SelectBox, TextBox ve DevExpress editorleri gibi alan tipleri seçilir. | +| Alt liste ilişkisi | Oluşturulan formun altında sub listeler tanımlanabilir. | +| Form ilişkisi | İki form arasında ilişki kurulabilir. | +| Widget tanımı | Listenin üst kısmında SQL ile beslenen özet widgetlar oluşturulabilir. | +| Workflow tanımı | Start, Compare, Approval, Information ve Finish adımlarından oluşan dinamik akış kurulabilir. | +| Deploy | Menü, dil textleri, grid/form/gantt/chart ayarları, permission group ve permissionlar otomatik tanımlanır. | + +#### Dikkat Edilmesi Gerekenler + +Bu modül son kullanıcıdan çok teknik yönetici içindir. Dynamic service, custom endpoint ve SQL işlemleri sistem davranışını doğrudan etkiler. SQL çalıştırma için `SqlQueryManager.SqlExecution.Execute` izni gerekir. Deploy edilen dinamik ekranlar kullanıcı menüsüne eklendiğinde ilgili permissionlar da doğru rol veya kullanıcılara atanmalıdır. + +### Dosya Yönetimi + +#### Amaç + +Host veya tenant bazında dosya ve klasörlerin yönetilmesini sağlar. File Manager, ABP BlobManager/BlobStoring altyapısında tutulan dosyaları kullanıcı arayüzünden dinamik olarak yönetilebilir hale getirir. Tenant bazında her kiracıya ait dizin ayrı yönetilebilir. + +#### Ekranda Görülen Alanlar + +| Alan | Açıklama | +| --- | --- | +| Tenant seçimi | Host bağlamında tenant veya Host dosya alanı seçilebilir. Tenant kullanıcısında seçim sabitlenir. | +| Breadcrumb | Klasör yolu gösterilir. | +| Dosya/klasör grid veya liste görünümü | Kullanıcı görünüm modunu değiştirebilir. | +| Arama | Dosya ve klasör adıyla arama yapılır. | +| Sıralama | Ada, boyuta veya değiştirilme tarihine göre sıralama yapılır. | +| Toolbar | Yükle, klasör oluştur, kopyala, kes, yapıştır, yeniden adlandır, indir, sil, tümünü seç. | +| Tenant dizini | Her tenant/kiracı için ayrı dosya alanı yönetilebilir. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Dosya yükleme | Dosya seçilerek mevcut klasöre yüklenir. | +| Klasöre girme | Klasör üzerinde çift tıklanarak klasör içine girilir. | +| Klasör oluşturma | Mevcut klasör altında yeni klasör oluşturulur. | +| Yeniden adlandırma | Seçili tek öğenin adı değiştirilir. | +| İndirme | Sadece dosya tipindeki tek öğe indirilebilir. | +| Silme | Tekil veya çoklu silme yapılır. | +| Kopyalama/taşıma | Seçili öğeler panoya alınır ve hedef klasöre yapıştırılır. | +| Cut/Copy/Paste | Dosya veya klasörler kesilebilir, kopyalanabilir ve başka dizine yapıştırılabilir. | +| Arama/sıralama | Liste görünümü daraltılır veya sıralanır. | + +#### İş Akışı + +1. Kullanıcı Dosyalar ekranını açar. +2. Host bağlamındaysa tenant/kiracı dizinini seçer. +3. Klasör üzerinde çift tıklayarak klasör içinde gezinir. +4. Dosya yükler, dosya indirir, dizin oluşturur veya öğe seçer. +5. Copy, cut, paste, rename veya delete gibi toolbar işlemlerini kullanır. +6. Sistem başarı/hata bildirimi gösterir. + +#### Dikkat Edilmesi Gerekenler + +| Kısıt | Açıklama | +| --- | --- | +| Sistem klasörleri | `intranet`, `avatar`, `import`, `note`, `backup` klasörleri korumalıdır. | +| Koruma | Korumalı klasörler seçilemez, silinemez, kopyalanamaz veya yeniden adlandırılamaz. | +| Klasör silme | İçinde dosya bulunan klasör güvenlik nedeniyle silinmez. | +| Aynı klasöre taşıma | Aynı klasöre taşıma işlemi engellenir. | + +### Bildirim Yönetimi + +#### Amaç + +Sistem bildirimlerinin türlerini, kurallarını, kullanıcı bildirimlerini ve kullanıcı bildirim tercihlerini yönetir. Bildirimler yazılımın herhangi bir anında tanımlanan kişi, telefon, e-posta, rol veya organizasyon hedefine iletilebilir. + +#### Ekranda Görülen Alanlar + +| Ekran | Açıklama | +| --- | --- | +| Notification Types | Bildirim tipleri. | +| Notification Rules | Bildirim kuralları. | +| Notifications | Gönderilen veya kullanıcıya ulaşan bildirim kayıtları. | +| Profil Bildirim Ayarları | Kullanıcının kendi bildirim tercihleri. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Bildirim listeleme | Bildirim kayıtları görüntülenir. | +| Okundu bilgisi güncelleme | Bildirim tekil veya kanal bazlı okundu yapılabilir. | +| Kural yönetme | Kullanıcı kendi bildirim kuralını ekleyebilir veya silebilir. | +| Test bildirim gönderme | Uygun servis üzerinden bildirim kuralına bağlı mesaj gönderilebilir. | +| Rol bazlı bildirim | Bildirim hedefi rol olarak seçilebilir. | +| Kişi bazlı bildirim | Belirli kullanıcı veya iletişim bilgilerine bildirim gönderilebilir. | +| Kanal bazlı gönderim | Mail, SMS, Rocket, UI toast, desktop veya WhatsApp gibi kanallar kullanılabilir. | + +#### İş Akışı + +1. Yönetici bildirim tip ve kurallarını tanımlar. +2. Gönderim kanalı, hedef kullanıcı/rol/telefon/e-posta bilgisi ve mesaj şablonu belirlenir. +3. Kullanıcı Profil > Bildirim Ayarları bölümünden tercihlerini düzenler. +4. Sistem olay oluştuğunda uygun kanaldan bildirim üretir. +5. Kullanıcı bildirimi okundu olarak işaretleyebilir. + +#### Dikkat Edilmesi Gerekenler + +Kodda SMS, Mail, Rocket, Desktop, UiActivity, UiToast ve WhatsApp kanal sabitleri görülmektedir. Kanalın çalışması ilgili ayarların doğru yapılandırılmasına bağlıdır. + +### Intranet + +#### Amaç + +Tenant bazında kurum içi duyuru, anket, sosyal gönderi, etkinlik ve kullanıcıya sunulacak dosya içeriklerini yönetmek için kullanılır. Kullanıcılar online olduklarında intranet alanında anonsları görebilir, anketlere katılabilir, sosyal duvar üzerinden paylaşım yapabilir, etkinlikleri takip edebilir ve doğum günü gibi dashboard bilgilerini görüntüleyebilir. + +#### Ekranda Görülen Alanlar + +| Ekran/Alan | Açıklama | +| --- | --- | +| Duyurular | `App.Intranet.Announcement` list formu. | +| Anketler | `App.Intranet.Survey`, soru, seçenek, cevap ve yanıt list formları. | +| Sosyal Gönderiler | `App.Intranet.SocialPost` ve yorum kayıtları. | +| Etkinlikler | Etkinlik tipi, kategori, etkinlik ve beğeni kayıtları. | +| Dashboard widget'ları | Yaklaşan etkinlikler, doğum günleri, anketler, dokümanlar ve duyurular. | +| Social Wall | Gönderi oluşturma, medya, konum ve etkileşim bileşenleri. | +| Dosya gösterimi | Kullanıcılara sunulacak dosyalar ve dokümanlar intranet widgetları içinde gösterilebilir. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Duyuru görüntüleme | Kullanıcı duyuruları dashboard veya modal üzerinden görür. | +| Anons yönetimi | Yetkili kullanıcı tenant bazında anons/duyuru tanımlayabilir. | +| Ankete katılma | Anket modalı üzerinden yanıt verilir. | +| Anket oylama | Kullanıcı anket sorularına oy verebilir veya yanıt gönderebilir. | +| Sosyal gönderi oluşturma | Metin, medya veya konum içeren gönderi oluşturulabilir. | +| Sosyal duvar etkileşimi | Kullanıcı gönderileri görüntüler, yorum veya beğeni gibi etkileşimlerde bulunabilir. | +| Etkinlik görüntüleme | Etkinlik bilgisi modal üzerinden açılabilir. | +| Event tanımlama | Yetkili kullanıcı etkinlik tipi, kategori ve etkinlik kayıtlarını yönetebilir. | +| Doğum günü görüntüleme | Doğum günü olan kullanıcılar dashboard widgetında gösterilebilir. | +| Doküman görüntüleme | Kullanıcıya sunulan dosya veya dokümanlar widget üzerinden erişilebilir hale gelir. | + +#### İş Akışı + +1. Yönetici tenant kapsamında duyuru, anket, sosyal gönderi ve event kayıtlarını oluşturur. +2. Dosya gösterilecekse ilgili dokümanlar File Manager/Blob alanında hazırlanır. +3. Kullanıcı intranet dashboard veya social wall ekranını açar. +4. Widget veya gönderiler üzerinden içeriğe ulaşır. +5. Anket oylama, yorum, medya, beğeni veya etkinlik gibi etkileşimler yapılır. + +#### Dikkat Edilmesi Gerekenler + +Google Maps veya konum işlevleri için ilgili API anahtarı gerekebilir. Konum picker hata mesajları kodda ayrıca ele alınmıştır. Intranet içerikleri tenant bağlamında çalıştığı için bir tenantta tanımlanan duyuru, anket veya event başka tenant kullanıcılarına gösterilmeyebilir. + +### Forum + +#### Amaç + +Kurum, platform veya kiralama yapan kullanıcıların kategori, konu ve gönderiler üzerinden ortak çalışmasını ve görüş alışverişi yapmasını sağlar. + +#### Ekranda Görülen Alanlar + +| Ekran | Açıklama | +| --- | --- | +| Forum | Kullanıcıların kategori, konu ve gönderileri görüntülediği ekran. | +| Forum Management | Yönetim dashboard'u ve kategori/konu/gönderi yönetimi. | +| Search Modal | Forum içinde arama. | +| Create Topic Modal | Yeni konu oluşturma. | +| Create Post Modal | Konuya gönderi/cevap ekleme. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Kategori listeleme | Forum kategorileri görüntülenir. | +| Konu oluşturma | Yetkili kullanıcı yeni konu açar. | +| Gönderi oluşturma | Konuya cevap eklenir. | +| Beğenme | Konu veya gönderi beğenilebilir. | +| Sabitleme/kilitleme | Yetkili kullanıcı konuyu sabitleyebilir veya kilitleyebilir. | +| Çözüm işaretleme | Bir gönderi kabul edilen cevap olarak işaretlenebilir. | +| Yönetim işlemleri | Kategori, konu ve gönderi kayıtları yönetilir. | +| Ortak çalışma | Kiralama yapan veya platformu kullanan kullanıcılar ortak bir bilgi paylaşım alanında buluşabilir. | + +#### İş Akışı + +1. Kullanıcı Forum ekranını açar. +2. Kategori seçer veya arama yapar. +3. Konu detayını görüntüler. +4. Cevap yazar veya etkileşimde bulunur. +5. Yetkili kullanıcı gerekiyorsa konuyu kilitler, sabitler veya çözüm işaretler. + +#### Dikkat Edilmesi Gerekenler + +Kilitli kategori veya konu üzerinde yeni gönderi oluşturma davranışı backend ve yetkiye bağlıdır. Yönetim ekranları yalnızca ilgili permissionlara sahip kullanıcılara açılmalıdır. + +### Video Oda + +#### Amaç + +Canlı video oda/toplantı süreçlerini yönetir. Kodda oda listesi, oda detayı, dashboard, katılımcı, sohbet, ekran paylaşımı ve SignalR/WebRTC servisleri doğrulanmıştır. Kullanıcı bir oda oluşturup diğer kullanıcıları davet ederek uygulama içinde videolu görüşme yapabilir. + +#### Ekranda Görülen Alanlar + +| Ekran/Panel | Açıklama | +| --- | --- | +| Video Oda Dashboard | Genel video oda yönetim alanı. | +| Oda Listesi | Oda kayıtlarını listeler. | +| Oda Detayı | Oda ve katılımcı bilgileri. | +| Video Player | Kamera/ses akışı. | +| Participants Panel | Katılımcı listesi. | +| Chat Panel | Genel ve özel mesajlar. | +| Documents Panel | Oda dokümanları. | +| Screen Share Panel | Ekran paylaşımı. | +| Kick Participant Modal | Katılımcı çıkarma onayı. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Oda oluşturma/düzenleme | Video oda kaydı oluşturulur veya güncellenir. | +| Kullanıcı davet etme | Odaya katılacak kullanıcılar davet edilebilir veya katılımcı listesine eklenebilir. | +| Oda başlatma/bitirme | Toplantı başlatılır veya sonlandırılır. | +| Odaya katılma | SignalR bağlantısı kurulur, WebRTC medya akışı başlatılır. | +| Mesaj gönderme | Genel veya özel mesaj gönderilebilir. | +| Duyuru gönderme | Katılımcılara duyuru iletilebilir. | +| El kaldırma | Katılımcı el kaldırabilir; yetkili kullanıcı onaylayabilir veya indirebilir. | +| Susturma/çıkarma | Yetkili kullanıcı katılımcıyı susturabilir veya odadan çıkarabilir. | +| Kamera/mikrofon açma kapama | Kullanıcı medya ayarlarını değiştirebilir. | + +#### İş Akışı + +1. Yönetici veya yetkili kullanıcı video oda kaydı oluşturur. +2. Görüşmeye katılacak kullanıcıları davet eder. +3. Oda başlatılır. +4. Katılımcılar odaya bağlanır. +5. Kamera, mikrofon, sohbet ve ekran paylaşımı kullanılır. +6. Oda sonunda toplantı bitirilir. + +#### Dikkat Edilmesi Gerekenler + +Kamera ve mikrofon için tarayıcı izni gerekir. SignalR bağlantısı koptuğunda yeniden bağlanma bildirimleri gösterilir. Kamera/mikrofon açılamazsa hata bildirimi verilir. + +### Public Site ve İçerik Yönetimi + +#### Amaç + +Public site sayfalarını, ürünleri, ödeme akışını, blog içeriklerini, demo taleplerini, iletişim kayıtlarını ve kiralama/sipariş süreçlerini yönetir. Public sayfalar dinamik component ve Tailwind CSS düzenlemeleriyle yönetilebilir. + +#### Ekranda Görülen Alanlar + +| Public Ekran | Route | +| --- | --- | +| Home | `/home` | +| About | `/about` | +| Services | `/services` | +| Products | `/products` | +| Checkout | `/checkout` | +| Payment | `/payment` | +| Success | `/success` | +| Blog | `/blog` | +| Blog Detail | `/blog/:id` | +| Demo | `/demo` | +| Contact | `/contact` | + +Yönetim tarafında doğrulanan listeler: + +| Yönetim Ekranı | Açıklama | +| --- | --- | +| Home/About/Services/Contact designer | Public sayfa tasarım/yönetim ekranları. | +| Products | Ürün kayıtları. | +| Payment Methods | Ödeme yöntemi kayıtları. | +| Installment Options | Taksit seçenekleri. | +| Sales Orders | Satış siparişleri ve satış sipariş kalemleri. | +| Blog Categories | Blog kategori kayıtları. | +| Blog Posts | Blog yazıları. | +| Demos | Demo talep kayıtları. | + +Public site tarafında kullanılan temel içerikler: + +| İçerik | Açıklama | +| --- | --- | +| Home, About, Services | Public sayfa içerikleri ve dinamik tasarım alanları. | +| Product | Kiralanabilir ürün veya paket kayıtları. | +| Payments | Ödeme yöntemi yönetimi. | +| Installment Options | Taksit veya ödeme periyodu seçenekleri. | +| Sales Orders | Aylık veya yıllık kiralama siparişleri. | +| Blog Posts | Blog içerikleri. | +| Demo, Contact | Talep ve iletişim formları. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Public içerik görüntüleme | Ziyaretçi public sayfaları görüntüler. | +| Demo talebi gönderme | Demo formu üzerinden talep oluşturulur. | +| Ürün seçme | Ürün ve ödeme ekranları üzerinden sipariş akışı başlatılır. | +| Sipariş oluşturma | Ödeme bilgileri ile satış siparişi oluşturulur. | +| Aylık/yıllık kiralama | Kullanıcı ürün veya paket için aylık/yıllık sipariş oluşturabilir. | +| Subdomain ile kullanım | Sipariş/tenant süreci sonrasında kiracıya subdomain üzerinden sistem kullandırılabilir. | +| Blog görüntüleme | Blog listesi ve detayları görüntülenir. | +| İçerik yönetimi | Yönetici list form ekranları üzerinden içerik kayıtlarını yönetir. | + +#### İş Akışı + +1. Ziyaretçi public siteye girer. +2. Ürün, hizmet veya blog içeriğini inceler. +3. Demo, iletişim veya ödeme akışını kullanır. +4. Yönetici admin panelinden public içerikleri ve gelen kayıtları yönetir. + +#### Dikkat Edilmesi Gerekenler + +Mevcut işleyiş Havale/EFT ile çalışacak şekilde tarif edilmiştir. Kredi kartı entegrasyonu ileride eklenebilecek bir geliştirme alanıdır. Sipariş, tenant ve subdomain süreçleri birlikte ele alınmalıdır. + +### Dil ve Lokalizasyon + +#### Amaç + +Uygulama metinlerinin ve dil kayıtlarının yönetilmesini sağlar. ABP lokalizasyon yapısı genişletilerek dil, language key ve language text kayıtlarının dinamik olarak yönetilebildiği bir yapı sunulur. Uygulama 15'ten fazla dil ile çalışabilecek şekilde tasarlanmıştır. + +#### Ekranda Görülen Alanlar + +| Ekran | Açıklama | +| --- | --- | +| Language | Dil kayıtları. | +| Language Text | Çeviri metinleri. | +| Language Key | Backend servis olarak doğrulanmıştır; menüde ayrı kayıt bu taramada doğrulanmadı. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Dil kaydı yönetme | Desteklenen diller eklenir veya düzenlenir. | +| Language key oluşturma | Uygulama içinde kullanılacak metin anahtarları tanımlanır. | +| Çeviri metni yönetme | Anahtar bazlı metinler güncellenir. | +| Çoklu dil yönetimi | Her dil için karşılık gelen text değerleri girilir. | +| Cache temizleme | `languageText.service.ts` içinde Redis cache temizleme servisi doğrulanmıştır. | + +#### İş Akışı + +1. Yönetici Dil menüsünü açar. +2. Dil veya çeviri metni kaydını seçer. +3. Değeri günceller. +4. Gerekirse cache temizlenir. + +#### Dikkat Edilmesi Gerekenler + +Lokalizasyon veritabanı üzerinden kullanılmaktadır. Yanlış çeviri anahtarı veya eksik metin kullanıcı arayüzünde ham anahtar görünmesine neden olabilir. Yeni dinamik ekranlar deploy edilirken menü, alan ve permission metinleri için dil kayıtlarının da oluşturulması önemlidir. + +### Raporlama + +#### Amaç + +Rapor kategori ve rapor template kayıtlarını yönetmek, DevExpress report viewer ve report designer altyapısını kullanmak için hazırlanmıştır. Yetkili kullanıcılar tanımlı raporları görüntüleyebilir, mevcut raporları düzenleyebilir ve rapor tasarımlarını güncelleyebilir. + +#### Ekranda Görülen Alanlar + +| Ekran | Açıklama | +| --- | --- | +| Report Categories | Rapor kategori tanımları. | +| Report Templates | Rapor template kayıtları. | +| Report Viewer | DevExpress rapor görüntüleyici. | +| Report Designer | DevExpress rapor tasarım ekranı. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Rapor kategorisi yönetme | Kategori ekleme/düzenleme/silme. | +| Template yönetme | Rapor şablonu kayıtlarını yönetme. | +| Rapor görüntüleme | Yetkili raporu viewer ile açma. | +| Rapor tasarlama | Designer üzerinden rapor tasarımını düzenleme. | +| Rapor düzenleme | Tanımlanan bir rapor açılarak DevExpress designer ile değiştirilebilir. | + +#### İş Akışı + +1. Yönetici rapor kategorisi oluşturur. +2. Rapor template kaydını ilgili kategori altında tanımlar. +3. Kullanıcı rapor görüntüleme route'u ile raporu açar. +4. Yetkili teknik kullanıcı DevExpress report designer ekranında tasarımı günceller. +5. Değiştirilen rapor yeniden görüntülenebilir hale gelir. + +#### Dikkat Edilmesi Gerekenler + +DevExpress controllerları Swagger dokümantasyonundan hariç tutulmuştur. Rapor tasarımı teknik bilgi gerektirir. + +### Background Worker ve Mail Queue + +#### Amaç + +Zamanlanmış veya arka plan işleriyle ilgili kayıtları yönetir. ABP Background Workers ve Hangfire altyapısı kullanılır. Cron zamanına göre tanımlanan worker kayıtları belirli aralıklarla çalıştırılabilir, izlenebilir ve detayları incelenebilir. + +#### Ekranda Görülen Alanlar + +| Ekran | Açıklama | +| --- | --- | +| Recurring Jobs | Tekrarlı job kayıtları. | +| Jobs | Çalışan veya geçmiş job kayıtları. | +| MailQueue modülü | Mail queue altyapısı backend modülü olarak doğrulanmıştır. | + +Tanımlanabilen veya kodda altyapısı bulunan worker örnekleri: + +| Worker | Açıklama | +| --- | --- | +| BackupWorker | Yedekleme işlemleri için kullanılabilir. | +| MailQueueWorker | Kuyruktaki e-posta işlemlerini yürütür. | +| NotificationWorker | Bildirim üretme/gönderme süreçlerini çalıştırır. | +| SqlWorker | Belirlenen SQL işlemlerini zamanlanmış olarak çalıştırır. | +| SessionCleanupWorker | Kullanıcı oturum temizleme süreçlerini yürütür. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Job listeleme | Arka plan iş kayıtları görüntülenir. | +| Job üretme | `generateBackgroundWorkers` servisi doğrulanmıştır. | +| Hangfire dashboard görüntüleme | Geliştirme ortamında veya yetkili üretim route'u ile dashboard açılır. | +| Cron izleme | Çalıştırılan cron kayıtları ve detayları incelenebilir. | + +#### İş Akışı + +1. Yönetici background worker ekranını açar. +2. Worker tipini, cron zamanını ve gerekli parametreleri tanımlar. +3. Hangfire zamanı geldiğinde worker'ı çalıştırır. +4. Yönetici çalışan veya geçmiş job kayıtlarını kontrol eder. +5. Gerekirse worker üretme veya düzeltme işlemleri yapılır. + +#### Dikkat Edilmesi Gerekenler + +Hangfire veritabanı bağlantısı hazır değilse başlatılmaz. Üretim ortamında dashboard yetkilendirme ile korunur. + +### Tanımlar + +#### Amaç + +Sistem genelinde kullanılan referans verilerin yönetilmesini sağlar. Genel tanımlar platformun içinde hazır olarak bulunur; yetkili kullanıcılar bu kayıtları dinamik listeler üzerinden görüntüleyebilir ve ihtiyaç halinde güncelleyebilir. + +#### Ekranda Görülen Alanlar + +Kodda doğrulanan tanım listeleri: + +| Grup | Listeler | +| --- | --- | +| SaaS Tanımlar | GlobalSearch, AiBot, ContactTitle, Currency, CountryGroup, Country, City, District, UomCategory, Uom, Sequence, SkillType, SkillLevel, Skill | +| Administration Tanımlar | Sector, Department, JobPosition, WorkHour | +| Kısıtlar | IpRestrictions, WorkHour | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| Kayıt listeleme | Tanım kayıtları görüntülenir. | +| Kayıt ekleme/düzenleme/silme | Yetkiye göre CRUD işlemleri yapılır. | +| Lookup kullanımı | Bu tanımlar başka formlarda seçim alanı olarak kullanılabilir. | +| Otomatik tanım kullanımı | Sistem içinde hazır gelen genel tanımlar dinamik ekranlarda lookup veya filtre kaynağı olarak kullanılabilir. | +| Çalışma saati tanımlama | Kullanıcıların hangi gün ve saat aralıklarında uygulamayı kullanabileceği belirlenebilir. | +| IP restriction tanımlama | Kullanıcının yalnızca izin verilen IP adreslerinden bağlantı kurması sağlanabilir. | +| Tenant bazlı tanım yönetimi | Sector, Department, JobPosition ve WorkHour gibi tanımlar tenant ihtiyacına göre yönetilebilir. | + +#### İş Akışı + +1. Yönetici ilgili tanım ekranını açar. +2. Yeni kayıt ekler veya mevcut kaydı düzenler. +3. Kaydedilen tanım, bağlı formlarda lookup olarak kullanılabilir. +4. WorkHour tanımları kullanıcı kartları veya erişim kısıtlarıyla ilişkilendirilir. +5. IpRestriction tanımları güvenli bağlantı kuralları için kullanılır. + +#### Dikkat Edilmesi Gerekenler + +Tanım kayıtları başka formlara bağlı olabilir. Silme işleminden önce bağlı kayıt etkileri kontrol edilmelidir. Hazır gelen genel tanımlar sistem davranışını etkileyebileceği için gereksiz değişiklik yapılmamalıdır. WorkHour ve IP restriction kayıtları kullanıcıların sisteme erişimini doğrudan etkileyebileceği için değişiklikler kontrollü yapılmalıdır. + +### AI Assistant ve AiBot Tanımları + +#### Amaç + +AI asistan ekranı ve AiBot tanımlarını yönetmek için kullanılır. + +#### Ekranda Görülen Alanlar + +| Ekran | Açıklama | +| --- | --- | +| Assistant | `ui/src/views/ai/Assistant.tsx` ile doğrulanmıştır. | +| AiBot Tanımları | `App.Definitions.AiBot` list formu ve `AiBotAppService`. | + +#### Kullanıcı İşlemleri + +| İşlem | Açıklama | +| --- | --- | +| AI asistanı kullanma | Asistan ekranında sorgu/yanıt akışı kullanılır. | +| Bot tanımı yönetme | AiBot kayıtları dinamik liste ile yönetilir. | + +#### İş Akışı + +1. Kullanıcı AI ekranını açar. +2. Asistanla etkileşime girer. +3. Yönetici bot tanımlarını güncelleyerek davranışı yapılandırır. + +#### Dikkat Edilmesi Gerekenler + +AI servis sağlayıcı ayrıntıları bu statik taramada doğrulanmamıştır. Entegrasyon ayarları ayrıca kontrol edilmelidir. + +## 5. Ortak Komponentler + +### DataGrid / Dinamik Tablo + +| Özellik | Kullanıcı Açısından Açıklama | +| --- | --- | +| Nerelerde kullanılır | `/admin/list/:listFormCode` route'u ile açılan dinamik listelerde. | +| Nasıl kullanılır | Kayıtlar satır-sütun yapısında görüntülenir; arama, filtre, grup, sıralama ve sayfalama yapılır. | +| Özel davranış | Kolon yetkileri, state kaydı, conditional styling, summary, alt form ve workflow butonları list form tanımına göre değişir. | + +### Form Komponentleri + +| Özellik | Kullanıcı Açısından Açıklama | +| --- | --- | +| Nerelerde kullanılır | Yeni kayıt, düzenleme ve görüntüleme ekranlarında. | +| Nasıl kullanılır | Alanlar doldurulur; zorunlu alanlar tamamlanır; kaydet butonu ile işlem tamamlanır. | +| Özel davranış | View modunda alanlar read-only olur. Ekleme/düzenleme modunda alan bazlı permission ve script davranışı uygulanır. | + +### Modal / Popup + +| Özellik | Kullanıcı Açısından Açıklama | +| --- | --- | +| Nerelerde kullanılır | Düzenleme popup'ı, import modalı, not paneli, silme onayı, dosya upload, forum konu/gönderi oluşturma, video katılımcı çıkarma. | +| Nasıl kullanılır | Kullanıcı modal içindeki formu doldurur veya onay verir. | +| Özel davranış | Mobil/dokunmatik cihazlarda bazı popup'lar tam genişlikte açılır. | + +### Lookup / Select Alanları + +| Özellik | Kullanıcı Açısından Açıklama | +| --- | --- | +| Nerelerde kullanılır | Tanım seçimi, tenant seçimi, ayar listeleri, dinamik form lookup alanları. | +| Nasıl kullanılır | Açılır listeden değer seçilir; temizleme butonu varsa seçim kaldırılabilir. | +| Özel davranış | Cascade lookup alanlarında üst alan seçilmeden alt alan pasif kalabilir. | + +### Date Picker / DateBox + +| Özellik | Kullanıcı Açısından Açıklama | +| --- | --- | +| Nerelerde kullanılır | Tarih ve saat alanlarında. | +| Nasıl kullanılır | Takvimden tarih seçilir veya maskeli giriş yapılır. | +| Özel davranış | `useMaskBehavior`, `openOnFieldClick` ve `showClearButton` davranışları uygulanır. | + +### Dosya Yükleme + +| Özellik | Kullanıcı Açısından Açıklama | +| --- | --- | +| Nerelerde kullanılır | Dosya yöneticisi, not dosyaları, image upload editor, import manager. | +| Nasıl kullanılır | Dosya seçilir veya yükleme alanına bırakılır. | +| Özel davranış | Import manager Excel/CSV önizleme ve aktarım süreci sunar. | + +### Bildirim / Toast + +| Özellik | Kullanıcı Açısından Açıklama | +| --- | --- | +| Nerelerde kullanılır | Kayıt, silme, yükleme, bağlantı, hata ve uyarı işlemlerinde. | +| Nasıl kullanılır | Kullanıcı bildirimleri ekranın köşesinde kısa süreli olarak görür. | +| Özel davranış | Başarı, bilgi, uyarı ve hata tipleri vardır. | + +### Onay Pencereleri + +| Özellik | Kullanıcı Açısından Açıklama | +| --- | --- | +| Nerelerde kullanılır | Silme, developer kit silme, dosya silme, workflow veya özel aksiyonlarda. | +| Nasıl kullanılır | Kullanıcı işlemi onaylar veya vazgeçer. | +| Özel davranış | Bazı eski ekranlarda `window.confirm`, bazı ekranlarda özel `UiDialog` kullanılır. | + +### Sayfalama, Sıralama ve Filtreleme + +| Özellik | Kullanıcı Açısından Açıklama | +| --- | --- | +| Nerelerde kullanılır | Dinamik listeler ve dosya yöneticisi. | +| Nasıl kullanılır | Sayfa boyutu, ileri/geri butonları, kolon sıralama ve filtre alanları kullanılır. | +| Özel davranış | Liste form ayarına göre standart, virtual veya infinite scrolling kullanılabilir. | + +## 6. API ve Swagger Açıklaması + +Swagger, teknik kullanıcıların ve sistem yöneticilerinin API endpointlerini görmesi, test etmesi ve model şemalarını incelemesi için kullanılır. + +Kodda doğrulanan Swagger özellikleri: + +| Özellik | Açıklama | +| --- | --- | +| Swagger UI | `/swagger` üzerinden ABP Swagger UI etkinleştirilmiştir. | +| Swagger JSON | `/swagger/v1/swagger.json` endpointi yapılandırılmıştır. | +| OAuth | Swagger OAuth client ve `Platform` scope ile yapılandırılmıştır. | +| API adı | `Sozsoft Platform Api`. | +| Hariç tutulan controllerlar | DevExpress `CustomReportDesigner`, `CustomWebDocumentViewer`, `QueryBuilder` Swagger'dan hariç tutulmuştur. | + +### Ana API Grupları + +| API Grubu | Amaç | +| --- | --- | +| `/api/app/*` | Genel uygulama servisleri: public, identity extension, list form data, dashboard, forum, intranet, file management, video room vb. | +| `/api/admin/*` | List form administration servisleri. | +| ABP Identity/Tenant API'leri | Kullanıcı, rol, permission, tenant ve hesap işlemleri. | +| Languages API | Dil ve çeviri metinleri. | +| Settings API | Ayar grupları ve ayar değerleri. | +| Notifications API | Bildirim, bildirim kuralı ve kullanıcı bildirim tercihleri. | +| SqlQueryManager API | SQL nesne ve sorgu yönetimi. | +| Dynamic Services | Runtime derlenen servislerin controller olarak kaydedilmesi. | + +### Önemli Endpoint Kategorileri + +| Kategori | Örnek Kullanım | +| --- | --- | +| Kimlik | Login, refresh token, logout, kayıt, şifre sıfırlama, hesap doğrulama. | +| Profil | Profil görüntüleme/güncelleme, şifre değiştirme, avatar güncelleme. | +| List Form | Liste konfigürasyonu alma, veri listeleme, CRUD, import, customization, workflow. | +| Datasource | Dinamik liste, endpoint ve SQL işlemleri için veri kaynağı tanımı. | +| Menü/Route | Menüleri alma, route kayıtları, custom component kayıtları. | +| Dosya | Dosya listeleme, yükleme, indirme, silme, taşıma, kopyalama. | +| Forum | Kategori, konu, gönderi, beğeni, sabitleme, kilitleme, çözüm işaretleme. | +| Video Oda | Oda listeleme, oluşturma, güncelleme, başlatma, bitirme, katılımcı ve sohbet. | +| Ayarlar | Ayarları listeleme ve değer güncelleme. | +| Bildirim | Bildirim listeleme, okundu bilgisi güncelleme, bildirim kuralı yönetimi. | + +### Yetkilendirme Gerektiren API'ler + +Admin ve dinamik list form API'lerinin çoğu authentication ve permission gerektirir. Kodda örnek olarak: + +| API/Servis | Yetki | +| --- | --- | +| Tenant update | `TenantManagementPermissions.Tenants.Update` | +| Identity user create/update | `IdentityPermissions.Users.Create`, `IdentityPermissions.Users.Update` | +| Identity role create/update | `IdentityPermissions.Roles.Create`, `IdentityPermissions.Roles.Update` | +| SQL execute | `SqlQueryManager.SqlExecution.Execute` | +| Dinamik liste işlemleri | İlgili list formun CRUD permissionları. | + +### API Kullanırken Dikkat Edilmesi Gerekenler + +| Konu | Açıklama | +| --- | --- | +| Token | Bearer token gerekir. Token süresi dolduğunda refresh veya yeniden giriş gerekir. | +| Tenant | Çok kiracılı yapıda tenant bağlamı veri erişimini etkiler. | +| Permission | Endpoint görünse bile permission yoksa 401/403 döner. | +| Correlation Id | Hata takibi için `X-Correlation-Id` header'ı expose edilmiştir. | +| Dynamic API | Runtime üretilen servisler canlı sistem davranışını değiştirebilir. | +| Datasource seçimi | Custom endpoint, CRUD endpoint ve list form işlemlerinde doğru datasource seçilmelidir. | +| Dynamic service | Yayınlanan C# servisleri Swagger üzerinde görünür hale gelebilir; permission ve güvenlik kontrolleri yapılmalıdır. | + +## 7. Kullanıcı Rolleri ve Yetkiler + +Kodda kullanıcıya atanmış hazır rol listesi değil, permission odaklı yetki modeli doğrulanmıştır. Bu nedenle tablo permission grupları üzerinden hazırlanmıştır. + +| Permission Grubu | Örnek Permission | Kullanıcıya Etkisi | +| --- | --- | --- | +| `AbpIdentity.Users` | `Create`, `Update`, `Delete`, `Export`, `Import`, `Note`, `ManagePermissions`, `ManageRoles` | Kullanıcı kayıtlarını ve kullanıcı rol/permissionlarını yönetir. | +| `AbpIdentity.Roles` | `Create`, `Update`, `Delete`, `ManagePermissions` | Rol kayıtlarını ve rol izinlerini yönetir. | +| `Abp.Identity.PermissionGroups` | `Create`, `Update`, `Delete`, `Export`, `Import`, `Note` | Permission group kayıtlarını yönetir. | +| `Abp.Identity.Permissions` | `Create`, `Update`, `Delete`, `Export`, `Import`, `Note` | Permission kayıtlarını yönetir. | +| `AbpTenantManagement.Tenants` | `Create`, `Update`, `Delete` | Tenant kayıtlarını yönetir. | +| `App.Menus.*` | Menü ve route permissionları | Menü ve route kayıtlarını yönetir. | +| `App.Listforms.*` | List form permissionları | Dinamik liste/form ekranları oluşturma ve düzenleme. | +| `App.Settings` / ayar permissionları | Ayar grubu permissionları | Ayarları görme ve güncelleme. | +| `App.Notifications.*` | Notification type/rule/notification | Bildirim altyapısını yönetir. | +| `App.Files` | Dosya ekranı | Dosya yöneticisini açar. | +| Branch bazlı yetkiler | Kullanıcı-şube ilişkileri | Kullanıcının hangi şube kayıtlarını görebileceğini veya yönetebileceğini sınırlar. | +| Organization Unit yetkileri | OU kullanıcı/rol ilişkileri | Organizasyon ağacı üzerinden kullanıcı ve rol erişimlerini yönetir. | +| `App.ForumManagement.*` | Forum yönetimi | Forum admin işlemleri. | +| `App.Videoroom.*` | Video oda ekranları | Video oda yönetim işlemleri. | +| `SqlQueryManager.SqlExecution.Execute` | SQL çalıştırma | SQL Query Manager üzerinde sorgu çalıştırma. | + +Doğrulanması Gereken Alan: Kuruma özel rol adları ve hangi role hangi permissionların verildiği veritabanındaki rol-permission eşleştirmesine bağlıdır. + +## 8. Formlar ve Zorunlu Alanlar + +### Statik Formlar + +| Form Adı | Kullanıldığı Ekran | Zorunlu Alanlar | Opsiyonel Alanlar | Validasyon | Kaydetme Sonrası | +| --- | --- | --- | --- | --- | --- | +| Login | `/login` | Kullanıcı adı, şifre; iki aşamalı doğrulama aktifse kod | Beni hatırla | Alanlar boş olamaz | Başarılıysa oturum açılır. | +| Register | `/register` | E-posta, şifre, şifre tekrarı, ad, soyad, captcha | - | E-posta formatı, şifre tekrarı eşleşmesi | Hesap oluşturma sonucu gösterilir. | +| Forgot Password | `/forgot-password` | E-posta, captcha | - | E-posta boş olamaz | Sıfırlama kodu gönderilir. | +| Reset Password | `/reset-password` | Şifre, şifre tekrarı | - | Şifre tekrarı eşleşmesi | Şifre güncellenir. | +| Confirmation Code | `/confirm` | E-posta, captcha | - | Alanlar boş olamaz | Doğrulama kodu gönderilir. | +| Extend Login | `/extend-login` | E-posta, captcha | - | Alanlar boş olamaz | Talep gönderilir. | +| Settings | `/admin/settings` | Ayar tipine göre değişir | Ayar tipine göre değişir | Tip bazlı giriş | Ayarlar kaydedilir, config yenilenir. | +| File Upload | `/admin/files` | En az bir dosya | Klasör seçimi | Dosya seçilmelidir | Dosya listesi yenilenir. | +| Create Folder | `/admin/files` | Klasör adı | Parent klasör | Ad boş olmamalıdır | Klasör listesi yenilenir. | +| Rename Item | `/admin/files` | Yeni ad | - | Ad boş olmamalıdır | Liste yenilenir. | + +### Dinamik Formlar + +Dinamik formlarda zorunlu alanlar list form field tanımlarından gelir. Kodda desteklenen validasyon tipleri: + +| Validasyon Tipi | Açıklama | +| --- | --- | +| `required` | Alan boş bırakılamaz. | +| `numeric` | Sayısal değer beklenir. | +| `range` | Belirli aralıkta değer beklenir. | +| `stringLength` | Metin uzunluğu kontrol edilir. | +| `custom` | Özel validasyon kuralı çalışabilir. | +| `compare` | Başka alanla karşılaştırma yapılabilir. | +| `pattern` | Regex/pattern kontrolü yapılır. | +| `email` | E-posta formatı kontrol edilir. | +| `async` | Asenkron validasyon yapılabilir. | + +Dinamik form alan tipleri: + +| Editor Tipi | Kullanım | +| --- | --- | +| `dxTextBox`, `dxTextArea` | Metin girişi. | +| `dxNumberBox` | Sayı girişi. | +| `dxDateBox`, `dxDateRangeBox`, `dxCalendar` | Tarih/tarih aralığı. | +| `dxSelectBox`, `dxLookup`, `dxAutocomplete` | Tekli seçim/arama. | +| `dxTagBox` | Çoklu seçim. | +| `dxDropDownBox`, `dxGridBox` | Gelişmiş seçim. | +| `dxCheckBox`, `dxSwitch`, `dxRadioGroup` | Boolean veya seçenekli alanlar. | +| `dxHtmlEditor` | Zengin metin. | +| `dxImageUpload` | Görsel yükleme. | + +## 9. Listeleme, Filtreleme ve Raporlama Özellikleri + +### Tablolar + +Dinamik listelerde DevExtreme DataGrid kullanılır. Tablo özellikleri list form ayarına göre değişir. + +| Özellik | Açıklama | +| --- | --- | +| Sıralama | Kolon başlığından veya list form sort ayarıyla yapılır. | +| Filtre satırı | Kolon altında filtre girişi sağlar. | +| Header filter | Kolon değerlerinden seçim yapılır. | +| Arama paneli | Tüm liste içinde arama sağlar. | +| Grup paneli | Kolon bazlı gruplama yapılabilir. | +| Sayfalama | Sayfa boyutu ve gezinme butonları desteklenir. | +| Kolon seçici | Kolon görünürlüğü kullanıcı tarafından değiştirilebilir. | +| State storing | Kullanıcı tablo düzenini kaydedebilir. | +| Summary | Toplam, ortalama, minimum, maksimum ve adet gösterilebilir. | + +### Filtreler + +| Filtre Tipi | Açıklama | +| --- | --- | +| Standart grid filtresi | Kolon değerlerine göre filtreleme. | +| Extra filter toolbar | List form özel filtre alanları. | +| URL filtresi | Route query parametresinden gelen filtre yeni kayıt default değerlerini etkileyebilir. | +| Lookup filtreleri | Seçim alanları için datasource bazlı filtre. | + +### Import / Export + +| İşlem | Açıklama | +| --- | --- | +| Template üretme | Excel veya CSV template alınabilir. | +| Dosya yükleme | Excel/CSV dosyası import session olarak yüklenir. | +| Önizleme | Aktarılacak kayıtlar ve validasyon durumu gösterilir. | +| Aktarım | Eşleştirme ve validasyon sonrası kayıtlar sisteme alınır. | +| Log görüntüleme | Import log kayıtları görüntülenebilir. | + +### Raporlama ve Grafik + +| Özellik | Açıklama | +| --- | --- | +| Chart route | `/admin/chart/:listFormCode` olarak tanımlanmıştır. | +| Pivot route | `/admin/pivot/:listFormCode` olarak tanımlanmıştır. | +| Gantt/Scheduler/Tree | List form ayar sekmelerinde desteklenir. | +| DevExpress Reporting | Report viewer ve designer bileşenleri vardır. | + +## 10. Hata Mesajları ve Kullanıcı Bildirimleri + +Kodda doğrulanan yaygın mesaj davranışları: + +| Mesaj / Durum | Ne Zaman Görünür | Kullanıcı Ne Yapmalı | +| --- | --- | --- | +| `Hata!` | Genel API veya render hatasında. | İşlemi tekrar deneyin; devam ederse yöneticiden correlation id ile destek isteyin. | +| 401 / 403 | Oturum geçersiz veya yetki yok. | Yeniden giriş yapın veya yetki talep edin. | +| `GridStateSaved` | Tablo görünüm düzeni kaydedildiğinde. | İşleme devam edebilirsiniz. | +| `GridStateSaveError` | Tablo görünüm ayarı kaydedilemediğinde. | Tekrar deneyin. | +| `Files uploaded successfully` | Dosya yükleme tamamlandığında. | Dosya listede görünür. | +| `Failed to upload files` | Dosya yükleme başarısız olduğunda. | Dosya boyutu, bağlantı veya yetkiyi kontrol edin. | +| `Folder created successfully` | Klasör oluşturulduğunda. | Klasörü kullanabilirsiniz. | +| `Failed to create folder` | Klasör oluşturulamadığında. | Adı ve yetkiyi kontrol edin. | +| `Protected system folders cannot be deleted` | Korumalı sistem klasörü silinmek istendiğinde. | Bu klasörlerde işlem yapmayın. | +| `Only files can be downloaded` | Klasör indirilmek istendiğinde. | Dosya tipinde bir öğe seçin. | +| `Cannot move items to the same folder` | Aynı klasöre taşıma denendiğinde. | Farklı hedef klasör seçin. | +| `Sınıfa katılamadı` | Video odaya katılım başarısız olduğunda. | Bağlantı, oda durumu ve yetkiyi kontrol edin. | +| `Kamera açılamadı` | Tarayıcı kamera izni veya cihaz erişimi yoksa. | Kamera izni verin veya cihazı kontrol edin. | +| `Mikrofon açılamadı` | Mikrofon izni veya cihaz erişimi yoksa. | Mikrofon izni verin veya cihazı kontrol edin. | +| `Bağlantı koptu, yeniden bağlanılıyor...` | SignalR bağlantısı kesildiğinde. | Bağlantının yeniden kurulmasını bekleyin. | +| `Your passwords do not match` | Şifre tekrarı eşleşmediğinde. | İki şifre alanını aynı girin. | +| `SuccessfullySaved` | Ayarlar başarıyla kaydedildiğinde. | Değişiklikler uygulanmıştır. | + +## 11. Sık Kullanılan Senaryolar + +### Senaryo: Yeni kayıt oluşturma + +1. Kullanıcı ilgili liste menüsüne girer. +2. Yeni kayıt butonuna basar. +3. Zorunlu alanları doldurur. +4. Lookup veya tarih alanlarını seçer. +5. Kaydet butonuna basar. +6. Sistem kaydı oluşturur ve listeyi yeniler. + +### Senaryo: Kayıt düzenleme + +1. Kullanıcı ilgili liste ekranında kaydı bulur. +2. Düzenleme aksiyonunu seçer. +3. Yetkili olduğu alanları günceller. +4. Kaydet butonuna basar. +5. Sistem değişiklikleri kaydeder. + +### Senaryo: Kayıt filtreleme + +1. Kullanıcı liste ekranını açar. +2. Arama paneline kelime yazar veya kolon filtresini kullanır. +3. Gerekirse extra filter alanlarını doldurur. +4. Liste filtreye göre güncellenir. + +### Senaryo: Excel/CSV içe aktarma + +1. Kullanıcı ilgili liste ekranında import yöneticisini açar. +2. Gerekirse template indirir. +3. Excel veya CSV dosyasını yükler. +4. Önizleme ekranında eşleşme ve validasyonları kontrol eder. +5. Aktarımı başlatır. +6. Sistem aktarım sonucunu ve logları gösterir. + +### Senaryo: Dosya yükleme + +1. Kullanıcı Dosyalar ekranını açar. +2. Gerekirse tenant seçer. +3. Hedef klasöre gider. +4. Dosya yükle butonuna basar. +5. Dosyaları seçer. +6. Sistem dosyaları yükler ve listeyi yeniler. + +### Senaryo: Kullanıcı yetkisi verme + +1. Yönetici kullanıcı veya rol ekranını açar. +2. İlgili kullanıcıyı veya rolü seçer. +3. Permission yönetimi ekranını açar. +4. Gerekli permissionları işaretler. +5. Kaydeder. +6. Kullanıcının menü ve işlem yetkileri güncellenir. + +### Senaryo: Ayar değiştirme + +1. Yönetici Ayarlar ekranına girer. +2. Sol menüden ayar grubunu seçer. +3. İlgili değeri değiştirir. +4. Kaydet butonuna basar. +5. Sistem başarı bildirimi gösterir ve konfigürasyonu yeniler. + +### Senaryo: Video odaya katılma + +1. Kullanıcı video oda ekranından odayı açar. +2. Tarayıcı kamera ve mikrofon izinlerini verir. +3. Sistem SignalR bağlantısını kurar. +4. Kullanıcı sohbet, kamera, mikrofon ve ekran paylaşımı özelliklerini kullanır. +5. İşlem sonunda odadan ayrılır veya oda sonlandırılır. + +### Senaryo: Forumda konu açma + +1. Kullanıcı Forum ekranını açar. +2. Kategori seçer. +3. Yeni konu oluşturma modalını açar. +4. Başlık ve içerik bilgilerini girer. +5. Kaydeder. +6. Konu forum listesinde görünür. + +### Senaryo: Tenant ve branch bazlı kullanım hazırlama + +1. Yönetici tenant kaydını oluşturur veya mevcut tenantı seçer. +2. Gerekirse tenant için ayrı connection string tanımlar. +3. Tenant seed işlemiyle başlangıç verilerini oluşturur. +4. Tenant altında branch kayıtlarını tanımlar. +5. Kullanıcıları ilgili branch veya organization unit yapısıyla ilişkilendirir. +6. Kullanıcılar yalnızca yetkili oldukları tenant/branch kapsamındaki kayıtları görür. + +### Senaryo: Low-code ile yeni liste ekranı oluşturma + +1. Teknik kullanıcı Datasource kaydını seçer veya oluşturur. +2. Wizard Manager ekranında yeni menü ya da alt menü bilgisini girer. +3. SQL tablo ve listede gösterilecek sütunları seçer. +4. Her sütun için uygun editor tipini belirler. +5. Gerekirse sub list, widget ve workflow adımlarını tanımlar. +6. Deploy işlemini çalıştırır. +7. Sistem menü, route, dil metni, permission group, permission, grid/form ve ilgili component ayarlarını oluşturur. + +### Senaryo: Custom endpoint ile veri sağlama + +1. Teknik kullanıcı Custom Endpoints ekranını açar. +2. Datasource, SQL, HTTP metodu, URL, parametre ve permission bilgilerini tanımlar. +3. Endpointi aktif hale getirir. +4. Dinamik veya statik component bu endpointten veri alacak şekilde yapılandırılır. +5. Yetkili kullanıcılar endpoint üzerinden beslenen ekranı kullanır. + +### Senaryo: Background worker tanımlama ve izleme + +1. Yönetici worker tanımını açar. +2. Worker tipini ve cron zamanını belirler. +3. Gerekli parametreleri kaydeder. +4. Hangfire zamanı geldiğinde worker'ı çalıştırır. +5. Yönetici çalışan job kayıtlarını ve detaylarını izler. + +### Senaryo: Organizasyon şeması oluşturma + +1. Yönetici tenant bazında sector, department ve job position tanımlarını hazırlar. +2. Kullanıcı kartlarında departman ve job position alanlarını doldurur. +3. Organization Unit ekranında takım veya birim oluşturur. +4. Kullanıcıları ilgili birimlere atar. +5. Organizasyon şeması departman, pozisyon ve kullanıcı bilgileriyle görüntülenir. + +### Senaryo: Intranet anketi veya duyurusu yayınlama + +1. Yönetici tenant kapsamında duyuru veya anket kaydı oluşturur. +2. Anket için soru ve seçenekleri tanımlar. +3. Gerekirse ilgili dosyaları File Manager üzerinden hazırlar. +4. Kullanıcı intranet dashboard veya social wall ekranında içeriği görür. +5. Kullanıcı ankete oy verir, duyuruyu görüntüler veya etkinliklere katılır. + +### Senaryo: Kullanıcı erişimini saat ve IP ile kısıtlama + +1. Yönetici WorkHour tanımında gün ve saat aralıklarını belirler. +2. Gerekirse IpRestriction kaydı ile izin verilen IP adreslerini tanımlar. +3. Kullanıcı kartında çalışma saati veya restriction ilişkisi belirlenir. +4. Kullanıcı yalnızca izin verilen zaman ve bağlantı koşullarında uygulamaya erişebilir. + +### Senaryo: Aktif kullanıcı oturumunu sonlandırma + +1. Yetkili kullanıcı aktif oturum veya session listesini açar. +2. Concurrent lisans kapsamında aktif kullanıcıları inceler. +3. Sonlandırılması gereken kullanıcı oturumunu seçer. +4. Kick işlemini çalıştırır. +5. Kullanıcının aktif oturumu düşürülür. + +### Senaryo: Rapor düzenleme + +1. Yönetici rapor kategorisini ve rapor template kaydını açar. +2. İlgili raporu DevExpress report designer ile düzenler. +3. Tasarımı kaydeder. +4. Kullanıcı report viewer ile güncellenen raporu görüntüler. + +## 12. Sık Sorulan Sorular + +### Menüyü neden göremiyorum? + +Menü görünürlüğü permissiona bağlıdır. Yetkiniz yoksa menü gösterilmeyebilir. Yöneticinizden ilgili permissionı talep edin. + +### Ekrana girdiğimde yetkisiz erişim sayfası açılıyor. Ne yapmalıyım? + +Oturumunuz bitmiş veya ilgili route için yetkiniz olmayabilir. Önce tekrar giriş yapın; sorun devam ederse yöneticinize başvurun. + +### Listedeki bazı butonlar neden görünmüyor? + +Ekleme, düzenleme, silme, export, import, note ve workflow butonları hem ekran ayarına hem de kullanıcı permissionına bağlıdır. + +### Tablo düzenimi kaydedebilir miyim? + +Evet. İlgili list formda state storing açıksa kolon, filtre ve görünüm düzeniniz kaydedilebilir. + +### Dosya yöneticisinde bazı klasörleri neden silemiyorum? + +Sistem klasörleri korumalıdır. Ayrıca içinde dosya bulunan klasörler güvenlik nedeniyle silinmez. + +### İçe aktarma yaparken zorunlu alan hatası alıyorum. Ne yapmalıyım? + +Template dosyasını kullanın ve zorunlu kolonları boş bırakmadığınızdan emin olun. Önizleme ekranındaki hata satırlarını kontrol edin. + +### Şifre sıfırlama linkim çalışmıyor. Ne yapmalıyım? + +Token süresi dolmuş olabilir. Şifremi unuttum ekranından yeni sıfırlama talebi oluşturun. + +### Video odada kamera veya mikrofon açılmıyor. Ne yapmalıyım? + +Tarayıcı izinlerini, cihaz bağlantısını ve başka bir uygulamanın kamerayı kullanıp kullanmadığını kontrol edin. + +### Swagger ne için kullanılır? + +Swagger teknik kullanıcıların API'leri incelemesi ve yetkili ise test etmesi için kullanılır. Son kullanıcı işlemleri için admin paneli tercih edilmelidir. + +### Tenant, branch ve organization unit arasındaki fark nedir? + +Tenant kiracı/kurum alanını, branch tenant içindeki şube ayrımını, organization unit ise kullanıcı ve rol ilişkilerinin ağaç yapısında yönetildiği organizasyon yapısını ifade eder. + +### Her tenant ayrı veritabanı kullanabilir mi? + +Evet. Tenant bazlı connection string tanımlanarak tenantların ayrı veritabanı üzerinde çalışması sağlanabilir. + +### Dinamik liste farklı veritabanından veri gösterebilir mi? + +Evet. Datasource tanımları sayesinde MSSQL veya PostgreSQL kaynakları seçilebilir ve dinamik listeler bu kaynaklardan beslenebilir. + +### Public ürünler nasıl kiralanır? + +Public ürün ve ödeme ekranları üzerinden aylık veya yıllık sipariş oluşturulabilir. Mevcut akış Havale/EFT odaklıdır; kredi kartı entegrasyonu ileride eklenebilir. + +### Developer Kit ile kod yazmadan ekran oluşturulabilir mi? + +Evet. Wizard Manager, datasource, tablo, sütun, editor, menü, permission, widget, sub list ve workflow seçimleriyle low-code şekilde yeni liste/form ekranı oluşturmayı destekler. + +### Kullanıcıların hangi saatlerde uygulamaya gireceği yönetilebilir mi? + +Evet. WorkHour tanımlarıyla kullanıcıların hangi gün ve saat aralıklarında uygulamayı kullanabileceği belirlenebilir. + +### Kullanıcı girişi belirli IP adresleriyle sınırlandırılabilir mi? + +Evet. IP restriction tanımlarıyla sadece izin verilen IP adreslerinden bağlantı kurulması sağlanabilir. + +### Organizasyon şeması hangi bilgilerden oluşur? + +Organizasyon şeması tenant bazında tanımlanan department, job position ve kullanıcı ilişkileriyle oluşturulur. + +### Aktif kullanıcılar izlenebilir mi? + +Evet. Concurrent lisans yönetimi nedeniyle aktif kullanıcı/session kayıtları izlenebilir ve yetkili kullanıcı gerektiğinde kick işlemiyle oturumu sonlandırabilir. + +### Raporlar sonradan değiştirilebilir mi? + +Evet. Yetkili kullanıcı DevExpress report designer ile tanımlı raporları düzenleyebilir ve report viewer ile görüntüleyebilir. + +## 13. Ekler + +### Terimler Sözlüğü + +| Terim | Açıklama | +| --- | --- | +| Tenant | Çok kiracılı yapıda ayrı müşteri/kurum alanı. | +| Permission | Bir ekranı veya işlemi yapma izni. | +| Role | Birden fazla permission içerebilen kullanıcı grubu. | +| List Form | Dinamik liste ve form ekranı tanımı. | +| Lookup | Başka kayıtlardan seçim yapılan alan. | +| Workflow | Kayıt üzerinde onay/red gibi durum geçişlerini yöneten akış. | +| Import | Excel/CSV dosyasından veri alma işlemi. | +| Export | Liste verisini dışa aktarma işlemi. | +| State Storing | Tablo görünüm ayarlarının kullanıcı için saklanması. | +| Swagger | API dokümantasyonu ve test arayüzü. | +| SignalR | Canlı bağlantı ve anlık iletişim altyapısı. | +| WebRTC | Tarayıcı üzerinden ses/görüntü iletişimi altyapısı. | + +### Kısaltmalar + +| Kısaltma | Açıklama | +| --- | --- | +| API | Application Programming Interface. | +| CRUD | Create, Read, Update, Delete. | +| UI | User Interface. | +| JWT | JSON Web Token. | +| CDN | Content Delivery Network veya dosya sunum alanı. | +| SQL | Structured Query Language. | + +### Teknik Notlar + +| Konu | Not | +| --- | --- | +| Backend | C#, ABP Framework, OpenIddict, Hangfire, DevExpress Reporting, SignalR. | +| Frontend | React, Vite, Tailwind CSS, DevExtreme, Formik, React Router. | +| Çok kiracılık | `PlatformConsts.IsMultiTenant` aktiftir. | +| Cache | Redis cache yapılandırması bulunur. | +| Blob/File | ABP BlobStoring FileSystem ile CDN path üzerinden çalışır. | +| Swagger | OAuth destekli ABP Swagger UI kullanılır. | +| Dynamic Services | Runtime derleme ve controller registration altyapısı vardır. | + +### Modül Listesi + +| Modül | Açıklama | +| --- | --- | +| Platform | Ana uygulama modülü. | +| Languages | Dil ve lokalizasyon yönetimi. | +| Settings | Ayar yönetimi. | +| Notifications | Bildirim yönetimi. | +| MailQueue | Mail queue altyapısı. | +| Sender | SMS, Rocket, WhatsApp gibi gönderim ayarları/altyapısı. | +| SqlQueryManager | SQL nesne ve sorgu yönetimi. | +| DataSource | MSSQL/PostgreSQL kaynaklarının tenant ve dinamik liste/endpoint bazında yönetimi. | +| FileManagement | Dosya ve klasör yönetimi. | +| DeveloperKit | SQL Query Manager, CRUD endpoint, custom endpoint, dynamic service, custom component ve Wizard Manager ile low-code geliştirme. | +| Intranet | Duyuru, anket, sosyal gönderi, etkinlik. | +| Forum | Kategori, konu, gönderi. | +| Videoroom | Canlı oda/toplantı yönetimi. | + +### Ekran Listesi + +| Ekran | Route veya Kod | +| --- | --- | +| Login | `/login` | +| Register | `/register` | +| Forgot Password | `/forgot-password` | +| Reset Password | `/reset-password` | +| Setup | `/setup` | +| Dashboard | `/admin/dashboard` | +| Dynamic List | `/admin/list/:listFormCode` | +| Form New | `/admin/form/:listFormCode` | +| Form View | `/admin/form/:listFormCode/:id` | +| Form Edit | `/admin/form/:listFormCode/:id/edit` | +| Chart | `/admin/chart/:listFormCode` | +| Pivot | `/admin/pivot/:listFormCode` | +| Settings | `/admin/settings` | +| Files | `/admin/files` | +| Forum | `/admin/forum` | +| Forum Management | `/admin/forumManagement` | +| Video Room Dashboard | `/admin/videoroom/dashboard` | +| Video Room List | `/admin/videoroom/list` | +| Video Room Detail | `/admin/videoroom/room/:id` | +| Organization Units | `/admin/ous` | +| Menu Manager | `/admin/menuManager` | +| Developer Components | `/admin/developerkit/components` | +| Developer Endpoints | `/admin/developerkit/endpoints` | +| Dynamic Services | `/admin/developerkit/dynamic-services` | +| Public Home | `/home` | +| Public About | `/about` | +| Public Services | `/services` | +| Public Products | `/products` | +| Public Checkout | `/checkout` | +| Public Payment | `/payment` | +| Public Blog | `/blog` | +| Public Demo | `/demo` | +| Public Contact | `/contact` | + +## Eksik / Netleştirilmesi Gereken Konular + +| Konu | Açıklama | +| --- | --- | +| Kuruma özel rol adları | Kodda permission modeli doğrulandı; rol-permission eşleştirmeleri veritabanından doğrulanmalıdır. | +| Canlı menü sırası ve görünürlük | Seed dosyası incelendi; canlı ortamda menü kayıtları değişmiş olabilir. | +| Dinamik component içerikleri | Backend custom component kayıtları runtime veritabanından geldiği için canlı kayıtlar ayrıca kontrol edilmelidir. | +| Route sabitlerinde geçen ERP alanları | Supply chain, maintenance, warehouse, projects, CRM, MRP ve accounting route sabitleri var; ancak bu taramada fiziksel ekran veya seed menü kanıtı bulunmadı. | +| Ödeme sağlayıcı ayrıntıları | Sipariş oluşturma akışı doğrulandı; ödeme sağlayıcı entegrasyon ayrıntısı statik koddan netleşmedi. | +| AI entegrasyonu | AI ekranı ve AiBot tanımları doğrulandı; sağlayıcı/model ayarları ayrıca kontrol edilmelidir. | +| Swagger endpointlerinin tam listesi | Uygulama çalıştırılarak `/swagger/v1/swagger.json` çıktısı alınırsa endpoint listesi daha ayrıntılı tabloya dönüştürülebilir. |