sozsoft-platform/configs/seeds/docs/modules/App.Saas.md

131 lines
9.2 KiB
Markdown
Raw Normal View History

2026-10-17 18:51:10 +00:00
# Saas (`App.Saas`)
> Bu modülün ekranları wizard ile değil C# seeder (`ListFormSeeder_Saas`) ve `data/*.json` dosyalarıyla kurulur; bu yüzden dosya ve bölümler deploy tarafından değil elle yazılır (`lowcode.instructions.md` §0.13, "wizard dışı modülün bölümü elle yazılır"). Ekran sözleşmeleri alan alan `lowcode-reference.instructions.md` §12'de, çalışma şekli `README.md`'nin anılan bölümlerindedir; burada her dal için amaç, ekran listesi ve gerçeğin yaşadığı yer tutulur. Menü ağacı `data/App.Menus.Menu.json`, yetkiler `data/Abp.Identity.Permissions.json` (`Modules = Sas`, yalnızca host bağlamında görünür).
<!-- module-doc:section App.Saas.Definitions -->
## Tanımlamalar (`App.Saas.Definitions`)
### 1. Amaç ve kapsam
Bütün kiracıların ortak kullandığı host tanımları: AI botları, genel arama kaynakları, hitaplar, para birimleri, ülke grubu › ülke › şehir › ilçe zinciri, menü modülleri ve uygulama paketleri. Satırlar seed dosyasından gelir ve host yöneticisi tarafından düzenlenir; kiracı ekranları bu tanımları lookup olarak okur.
### 2. Menü ve ekranlar
| Sıra | Ekran | Kod | Seed verisi |
| --- | --- | --- | --- |
| 1 | AI Botları | `App.Definitions.AiBot` | `data/App.Definitions.AiBot.json` (README §13.8) |
| 2 | Genel Arama | `App.Definitions.GlobalSearch` | `data/App.Definitions.GlobalSearch.json` |
| 3 | Hitaplar | `App.Definitions.ContactTitle` | `data/App.Definitions.ContactTitle.json` |
| 4 | Para Birimleri | `App.Definitions.Currency` | `data/App.Definitions.Currency.json` |
| 5 | Ülke Grupları | `App.Definitions.CountryGroup` | `data/App.Definitions.CountryGroup.json` |
| 6 | Ülkeler | `App.Definitions.Country` | `data/App.Definitions.Country.json` |
| 7 | Şehirler | `App.Definitions.City` | `data/App.Definitions.City.json` |
| 8 | İlçeler | `App.Definitions.District` | `data/App.Definitions.District.json` |
| 9 | Modüller | `App.Menus.Module` | `data/App.Menus.Module.json` (README §9) |
| 10 | Uygulama Paketleri | `App.Definitions.ApplicationSuite` | `data/App.Definitions.ApplicationSuite.json` |
### 3. Veri modeli ve kurallar
- Tablolar `Sas_H_*` (host; `TableNameResolver`, `TableNameEnum`). Ülke grubu › ülke › şehir › ilçe dosyaları `Order` alanıyla bağımlılık sırasında uygulanır (CLAUDE.md "Menü ağacı ve yetkiler").
- Para birimi lookup'ının anahtarı `Name`'dir (`'TRY'` gibi); ekranlardaki `*CurrencyId` varsayılanı tablo `DEFAULT`'undan gelir (standing default 18).
- Adres zinciri (Ülke › Şehir › İlçe › Mahalle) Kiracılar ve Kontaklar ekranlarında `CascadeParentFields` ile kullanılır (`lowcode-reference.instructions.md` §12).
<!-- module-doc:section App.Public -->
## Public Site Yönetimi (`App.Public`)
### 1. Amaç ve kapsam
Ziyaretçiye açık sitenin arkasındaki yönetim ekranları: ürün/ödeme/taksit tanımları ve satış siparişleri (sepet akışı), blog kategorileri ve yazıları, demo talepleri. Sitenin sayfaları Custom Component, menüsü `Pub` modülüdür (README §10.4); buradaki ekranlar onların verisini yönetir.
### 2. Menü ve ekranlar
| Sıra | Ekran | Kod | Not |
| --- | --- | --- | --- |
| 1 | Ürünler | `App.Orders.Products` | sepet/ödeme akışının ürün kataloğu |
| 2 | Ödeme Yöntemleri | `App.Orders.PaymentMethods` | |
| 3 | Taksit Seçenekleri | `App.Orders.InstallmentOptions` | |
| 4 | Satış Siparişleri | `App.Orders.SalesOrders` | sipariş e-postası `PublicAppService` üretir; tarih/tutar `CultureFormat` ile aktif kültürde |
| 5 | Blog Kategorileri | `App.BlogManagement.Category` | sitemap'e giren yayın kaynağı (`SeoAppService`) |
| 6 | Blog Yazıları | `App.BlogManagement.Posts` | yayın tarihi `BlogPost.Publish(Clock.Now)` |
| 7 | Demo Talepleri | `App.Demos` | public demo formunun kayıtları |
<!-- module-doc:section AbpTenantManagement.Tenants -->
## Kiracılar (`AbpTenantManagement.Tenants`) ve Şubeler (`App.Branches`)
### 1. Amaç ve kapsam
Kiracı kaydı (ABP TenantManagement; kendi veritabanı ya da host veritabanı paylaşımı), kiracı yöneticisinin ilk seed'i ve şube tanımı. Çalışma şekli README §12 (Çok Kiracılılık); seed kapsamı CLAUDE.md "Seed kapsamı" (`SeedFileScope`). Şube ekranı kullanıcıya atanmış aktif şubelerin kaynağıdır (`Sas_T_BranchUsers`, `LookupQueryValues.UserBranchValues`; standing default 1).
| Ekran | Kod | Not |
| --- | --- | --- |
| Kiracılar | `AbpTenantManagement.Tenants` | ABP yerleşik yetkileri (`ManageConnectionStrings`, `ManageFeatures`) |
| Şubeler | `App.Branches` | `Sas_T_Branch`; host şubesi `PlatformConsts.Branches.BranchIdDefaultValue` |
<!-- module-doc:section App.SettingDefinitions -->
## Ayar Tanımları (`App.SettingDefinitions`)
Uygulama ayarlarının tanım listesi (`data/App.SettingDefinitions.json`, `Sozsoft.Settings` modülü); değerler Ayarlar ekranından host/kiracı/kullanıcı düzeyinde yazılır. Ayar anahtarları ve anlamları README §6.3 ve `lowcode-reference.instructions.md`'de; SEO varsayılanları `App.SiteManagement.Seo.*` (CLAUDE.md "SEO").
<!-- module-doc:section App.Languages -->
## Diller (`App.Languages`)
| Ekran | Kod | Seed verisi |
| --- | --- | --- |
| Diller | `App.Languages.Language` | `data/App.Languages.Language.json` |
| Dil Metinleri | `App.Languages.LanguageText` | `data/App.Languages.LanguageText.json` (EN + TR, `Id` = `Sas_H_LanguageText:{ResourceName}:{Key}:{CultureName}` v5 GUID) |
Kullanıcıya görünen her metin dil anahtarıyla gelir (standing default 4); UI çevirisi `useLocalization`/`translateStatic`, API çevirisi `IStringLocalizer<PlatformResource>`. Tarih/sayı biçimi aktif kültürü izler (`localeFormat.ts`, `CultureFormat`; README §18.3).
<!-- module-doc:section App.DataSource -->
## Veri Kaynakları (`App.DataSource`)
Ekranların bağlandığı bağlantı kayıtları (`DataSourceManager`); kiracı tablosunun satırları kiracı adıyla kayıtlı `DataSource` üzerinden gider (CLAUDE.md "Seed kapsamı"). Varsayılan veri kaynağını `HostDataSeeder` appsettings'teki bağlantı cümlesinden kurar. İki sağlayıcı (SQL Server / PostgreSQL) `DataSourceTypeEnum` ile ayrılır; SQL metinleri ANSI tırnaklı ya da sağlayıcıya göre dallanır (standing default 16).
<!-- module-doc:section App.BackgroundWorkers -->
## Arka Plan İşleri (`App.BackgroundWorkers`)
| Ekran | Kod | Not |
| --- | --- | --- |
| Zamanlanmış İşler | `App.BackgroundWorkers.RecurringJobs` | `data/App.BackgroundWorkers.RecurringJobs.json`; `Scope` = Host / Tenant / Host ve Kiracılar (`WorkerScopeEnum`) |
| İşler | `App.BackgroundWorkers.Jobs` | Hangfire kuyruğu |
Çalışma şekli README §14; `BeforeSp`/`AfterSp` yordam adları `SqlIdentifier.IsSafe` ile doğrulanıp sağlayıcıya göre `EXEC`/`CALL` ile çağrılır (`SpRepository`). Mail kuyruğu işi (`MailQueueWorker`) şablonunu `Options.MailTemplate` alanından `PlatformTemplateDynamicStore` ile okur (README §13.7, `lowcode-reference.instructions.md` §11).
<!-- module-doc:section App.Menus -->
## Menüler (`App.Menus`)
| Ekran | Kod | Seed verisi |
| --- | --- | --- |
| Rotalar | `App.Menus.Routes` | `data/App.Menus.Routes.json` (yalnızca `Seo*` alanları çerçeve içinde düzenlenir) |
| Menü | `App.Menus.Menu` | `data/App.Menus.Menu.json` |
| Menü Yöneticisi | `App.Menus.Manager` | `/admin/menuManager` (çekirdek sayfa) |
Menü/route/yetki modeli README §9; yetki ağacı menü ağacını izler (standing default 2).
<!-- module-doc:section App.DeveloperKit -->
## Developer Kit (`App.DeveloperKit`)
| Ekran | Kod | Not |
| --- | --- | --- |
| Geliştirme Talepleri | `App.DevRequests` | MCP talep döngüsü (CLAUDE.md "Talep analizi"); `data/App.DevRequests/` klasör modu |
| SQL Query Manager | `App.SqlQueryManager` | `/admin/sqlQueryManager`; tablo tasarımcısı iki sağlayıcının scriptini üretir (`PostgreSqlTableScript`) |
| Dosyalar | `App.Files` | `/admin/files` (README §16) |
| Custom Endpoint'ler | `App.DeveloperKit.CustomEndpoints` | `crud/{Entity}.json` (`CrudEndpointSeedApplier`) |
| Dynamic Service'ler | `App.DeveloperKit.DynamicServices` | runtime derleme (`DynamicAssemblyRegistrationService`) |
| Custom Component'ler | `App.DeveloperKit.CustomComponents` | `data/App.DeveloperKit.CustomComponents/{Id}.json` (README §8.2) |
| ListForm'lar | `App.Listforms.Listform` | ekran tanımları; kayıt wizard seed dosyasına geri yazılır (`WizardSeedSynchronizer`) |
| Intranet Widget'ları | `App.DeveloperKit.IntranetWidgets` | `data/App.DeveloperKit.IntranetWidgets.json` |
| MCP Sunucuları | `App.DeveloperKit.McpServers` | `AllowedTools` (README §13.9) |
| Wizard Manager | `App.Listforms.WizardManager` | `/admin/listform/wizardManager`; deploy yalnızca seed dosyası yazar, kurulum DB Migrate'tedir (`lowcode.instructions.md` §4.0) |
<!-- module-doc:section App.ForumManagement -->
## Forum Yönetimi (`App.ForumManagement`)
| Ekran | Kod |
| --- | --- |
| Kategoriler | `App.ForumManagement.Categories` |
| Konular | `App.ForumManagement.Topics` |
| Gönderiler | `App.ForumManagement.Posts` |
Tablolar `Sas_T_Forum*` kiracı tablosudur (menü öneki ile tablo öneki örtüşmez; `lowcode-reference.instructions.md` "Tablo adlandırma"). Forum sayfaları kullanıcı tarafında `views/forum` altındadır.