sozsoft-platform/.github/instructions/list.instructions.md
2026-03-25 08:52:55 +03:00

149 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Sozsoft Platform Module Implementation Rules & Instructions
## Purpose
This document summarizes the rules, standards, and step-by-step instructions for implementing any module (e.g., CRM, MRP, HR) with a sample list (e.g., Opportunity, Order) in the Sozsoft Platform. Replace all placeholders (e.g., {Modul}, {Liste}, {Entity}) with your actual module, list, or entity names. Use as a reference for future development and as a prompt guide for similar tasks.
---
## General Principles
- **Configuration First:** Always prefer platform configuration (menus, permissions, forms, localization) over custom code.
- **Modularization:** Each module (e.g., {Modul}) must have its own seeder, permission group, and localization entries.
- **Naming Conventions:**
- Table names: `{Modul}_T_{Entity}` (e.g., `Mrp_T_Order`)
- Menu/permission keys: `App.{Modul}`, `App.{Modul}.{Liste}`
- **Tenant Isolation:** All data, forms, and permissions must be tenant-aware.
- **Localization:** Every menu, list, and field must have a corresponding entry in `LanguagesData.json`.
- **No Redundant Code:** Avoid duplicating permission grants or seeding logic across modules.
- **SeedConsts Rule:** For every new module/entity, add a constant to `SeedConsts` (e.g., `public static class {Modul}` and `public const string {Liste}`) if it does not already exist. Never duplicate existing constants.
- **DeleteCommand Rule:** In all `ListFormSeeder_{Modul}.cs` files, the `DeleteCommand` property **must** use the `DefaultDeleteCommand` function, e.g., `DeleteCommand = DefaultDeleteCommand("{TabloAdı}")`. Never use a raw SQL string directly for `DeleteCommand`.
---
## Special File Handling Rules
- **MenusData.json:**
- Never modify the `Routes` section directly. Only `MenuGroups` and `Menus` sections can be changed for menu additions or updates. All menu additions must use the platform's configuration mechanisms or be added to `MenuGroups` and `Menus` as required by platform design.
- **LanguagesData.json:**
- When adding a new key, always check if the key already exists. Only add the key if it does not exist to prevent duplicates.
---
## File-by-File Change Summary
### 1. MenusData.json
- **{Modul} menu** added as a top-level menu with `ShortName: {Modul}`.
- **{Liste}** added as a child menu under {Modul}.
### 2. PermissionsData.json
- **{Modul} permissions** grouped under `App.{Modul}`.
- **{Liste} permissions** nested under {Modul} group.
### 3. ListFormSeeder_Administration.cs
- **Removed** {Liste} seeding logic (moved to {Modul} seeder).
### 4. ListFormSeeder_{Modul}.cs
- **Created** new seeder file for {Modul}.
- **Seeds** {Liste} list-form, referencing `{Modul}_T_{Entity}`.
### 5. SqlTables.sql
- **Renamed** {Liste} table to `{Modul}_T_{Entity}`.
- **Updated** all related constraints and references.
### 6. PlatformIdentityDataSeeder.cs
- **Removed** redundant {Modul} permission grant logic (now handled by PermissionsData.json).
### 7. LanguagesData.json
- **Added** localization entries for:
- {Modul} menu and {Liste} list
- {Liste} list fields (e.g., `FullName`, `Phone`)
---
## Step-by-Step Instructions (Prompt Examples)
### 1. Add a New Module (e.g., {Modul})
```
Yeni bir modül ekle (ör: {Modul}):
- MenusData.json'a kök menü olarak ekle
- PermissionsData.json'da ayrı bir PermissionGroup oluştur
- ListFormSeeder_{Modul}.cs dosyası oluştur ve list-form seed'ini buraya taşı
- SqlTables.sql'de tabloyu {Modul}_T_{Entity} olarak adlandır
- LanguagesData.json'a menü, liste ve alan çevirilerini ekle
```
### 2. Add a New List Under a Module
```
Yeni bir liste ekle (ör: {Liste}):
- {Modul} ana menüsünün altına ekle
- ListFormSeeder_{Modul}.cs dosyasına seed kodunu ekle
- SqlTables.sql'de tabloyu {Modul}_T_{Entity} olarak oluştur
- PermissionsData.json'da ilgili izinleri {Modul} grubuna ekle
- LanguagesData.json'a liste ve alan çevirilerini ekle
```
### 3. Enforce Tenant Isolation and Full Audit
```
Tablo ve list-form için tenant izolasyonu ve full-audit alanlarını ekle:
- Tabloya TenantId, CreationTime, CreatorId, LastModificationTime, LastModifierId, IsDeleted, DeleterId, DeletionTime alanlarını ekle
- List-form seed'inde tenant-aware ayarları kontrol et
```
### 4. Add/Update Localization
```
Yeni menü, liste veya alan eklediğinde LanguagesData.json'a şu şekilde ekle:
- App.{Modul}
- App.{Modul}.{Liste}
- App.Listform.ListformField.{Alan}
```
### 5. SeedConsts and DeleteCommand Rules
```
- SeedConsts.cs dosyasına, yeni modül veya entity için (ör: public static class {Modul} ve altında public const string {Liste}) sabit ekle. Eğer zaten varsa tekrar ekleme.
- ListFormSeeder_{Modul}.cs dosyalarında DeleteCommand satırı **her zaman** DefaultDeleteCommand fonksiyonu ile olmalı:
DeleteCommand = DefaultDeleteCommand("{TabloAdı}")
- DeleteCommand'da doğrudan SQL stringi **kullanma**.
```
### 5. Remove Redundant or Incorrect Code
```
- Farklı modüllerde aynı izin veya seed kodu varsa, sadece ilgili modülde bırak
- PlatformIdentityDataSeeder.cs'de Permission grant kodunu kaldır, PermissionsData.json'dan yönet
```
---
## Validation Checklist
- [ ] Menü ve izinler doğru hiyerarşide mi?
- [ ] List-form seed'leri doğru modül dosyasında mı?
- [ ] Tablo isimleri ve referansları standartlara uygun mu? (örn: {Modul}_T_{Entity})
- [ ] LanguagesData.json'da tüm yeni menü, liste ve alanlar var mı?
- [ ] Redundant kod veya izin grant'ı var mı?
- [ ] Seed ve migration sonrası UI'da çeviriler doğru görünüyor mu?
- [ ] SeedConsts.cs dosyasında ilgili sabitler var mı, tekrar eklenmemiş mi?
- [ ] ListFormSeeder dosyalarında DeleteCommand satırı DefaultDeleteCommand fonksiyonu ile mi atanmış?
---
## Rollback Strategy
- Değişiklikleri modül bazında geri al (örn: sadece {Modul} ile ilgili dosyaları revert et)
- JSON dosyalarında eski anahtarları ve çevirileri sil
- Seeder ve migration dosyalarını eski haline getir
---
## Quick Prompts for Future Use
- "Yeni bir modül ekle ve tüm standartlara göre yapılandır."
- "Yeni bir liste ekle, tenant izolasyonu ve çevirileriyle birlikte."
- "Mevcut bir modülde eksik olan çeviri veya izinleri tamamla."
- "Tüm {Modul} ile ilgili seed ve izinleri modüler yapıya uygun şekilde güncelle."
---
> **Not:** Tüm işlemlerden sonra seed'leri çalıştırıp UI'da menü ve çevirileri kontrol etmeyi unutma.