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

231 lines
13 KiB
Markdown
Raw Normal View History

# Üretim (`App.Production`)
> Menünün altındaki her dal bu dosyada bir bölümdür (`module-doc:section`); dosya ve bölümler ilk deploy'da otomatik açılır. `module-doc:todo` işaretli alt bölümleri modülü üreten kişi ya da AI doldurur (`lowcode.instructions.md` §0.13); MCP ile üretimde talep bu bölümler doldurulmadan Testing'e alınamaz. "Ek — Ekran envanteri" bölümü wizard dosyalarından üretilir, elle düzenlenmez.
<!-- module-doc:section App.Production.Definitions -->
## Tanımlamalar (`App.Production.Definitions`)
### 1. Amaç ve kapsam
Üretimin ana verisi: iş merkezleri (verimlilik, OEE, kurulum/temizlik süresi, saatlik maliyetler, ürün kapasitesi), iş merkezi etiketleri ve operasyonlar (iş merkezi, varsayılan süre, varyant kapsamı, talimatlar). Reçeteler (`App.Inventory.Bom`) bu tanımları kullanır. Kullanıcılar: üretim planlama ve maliyet ekipleri. Üretim emri ve iş emri bu dalın kapsamı dışındadır.
### 2. Analiz ve kararlar
- Ekranlar ilk olarak `Envanter › Tanımlamalar` altında üretildi (talep "Inventory -> Tanımlamalar"; analiz `App.Inventory.md` §2). Talep "Production menüsü" ile ayrı modüle taşındı.
- Taşıma tam modül taşımasıdır: ekran kodu `App.Inventory.*` → `App.Production.*`, tablo öneki `Inv_T_` → `Prd_T_`, izin grubu `App.Production`, modül `Production`; menü `Üretim › Tanımlamalar` (Envanter'in hemen sağı, kök sıra 7).
- Haftalık çalışma saati ayardan (`%WeeklyWorkingTimeLimit%`) okunur, yoksa 40.
- Operasyonun "Varyantlara Uygula" seçenekleri Envanter'in nitelik değerlerinden (`Inv_T_AttributeValue`) gelir; modüller arası bağ yalnızca lookup'tır.
### 3. Menü ve ekranlar
`Üretim (App.Production) › Tanımlamalar (App.Production.Definitions)` altında sırasıyla: İş Merkezi Etiketleri, İş Merkezleri, Operasyonlar.
Sekmeler (menüsüz alt formlar):
- İş Merkezleri › Genel Bilgi (aynı satır), Ürün Kapasitesi
- Operasyonlar › Açıklamalar
### 4. Veri modeli
Tüm tablolar kiracı + tam audit + soft delete, anahtar `Id uniqueidentifier`.
| Tablo | İçerik |
| --- | --- |
| `Prd_T_WorkCenterTag` | Etiket adı, renk |
| `Prd_T_WorkCenter` | Ad, kod, etiketler (`|` Id), alternatif iş merkezleri (`|` Id), haftalık saat, verimlilik, OEE, kurulum/temizlik, saatlik maliyetler |
| `Prd_T_WorkCenterCapacity` | İş merkezi × ürün (`Inv_T_Product`) kapasitesi |
| `Prd_T_Operation` / `Prd_T_OperationInstruction` | Operasyon (iş merkezi, varsayılan süre, varyantlara uygula, maliyet/süre yöntemi) ve talimatları |
### 5. İş kuralları ve hesaplar
- **Çoklu değer alanları** (Etiketler, Alternatif İş Merkezleri, Varyantlara Uygula; `dxTagBox`) `|` ile ayrılmış metin kolonunda saklanır.
- **Operasyon maliyeti** reçetede hesaplanır: süre ÷ 60 × iş merkezi saatlik maliyeti (`App.Inventory.BomOverview`).
- Reçete operasyonunda operasyon seçilince iş merkezi ve varsayılan süre operasyondan dolar (`App.Inventory.BomOperation`).
### 6. Yetki ve görünürlük
İzin grubu `App.Production`, modül `Production`. Ekranların okuma yetkisi `App.Production.Definitions` altında; alt formların yetkisi bağlı oldukları listenin altındadır (Genel Bilgi ve Ürün Kapasitesi → `App.Production.WorkCenter`, Açıklamalar → `App.Production.Operation`). Her listede `.Create/.Update/.Delete/.Export/.Import/.Note`. Yetkiler hiçbir role otomatik verilmez; taşıma sonrası eski `App.Inventory.*` yetkileri silindiği için rollere yeniden verilmelidir. Tüm ekranlar kiracı filtrelidir.
### 7. Entegrasyonlar
Dış entegrasyon yok. Envanter modülü iki yönde bağlıdır: Ürün Kapasitesi ürünü, Operasyon nitelik değerlerini Envanter'den okur; Reçete Operasyonları, Reçete Bileşenleri ve Reçeteye Genel Bakış iş merkezi ve operasyonları bu modülden okur.
### 8. Akış örneği
1. İş Merkezi Etiketleri'nde "Apre" etiketini aç.
2. İş Merkezleri'nde "ram makinası"nı etiketle, Genel Bilgi sekmesinde saatlik maliyetini gir.
3. Operasyonlar'da "Apre"yi ram makinası, 60 dk olarak tanımla; Açıklamalar sekmesine iş talimatını ekle.
4. Envanter › Reçeteler › Operasyonlar sekmesinde "Apre"yi seç; iş merkezi ve süre dolar, Genel Bakış maliyeti hesaplar.
### 9. Sık sorulanlar
- **Menüde ekranlar görünmüyor?** Yetkiler `App.Production.*` adıyla yeniden açıldı; rol ekranından verilmelidir.
- **Eski iş merkezi kayıtları nerede?** Veritabanı yeniden kurulmadıysa satırlar eski `Inv_T_*` tablolarında kalır; yeni tablolar `Prd_T_*`'dır.
### 10. Dosyalar ve geri alma
- **Tablolar:** `sql/object/Prd_T_*.sql` + `postgres/object/Prd_T_*.sql` (5 tablo).
- **Wizard'lar:** WorkCenterTag, WorkCenter, WorkCenterGeneral, WorkCenterCapacity, Operation, OperationInstruction (`.json`).
- **Demo veri aynaları:** `data/App.Production.{WorkCenterTag,WorkCenter}.json`.
- **Geri alma:** Wizard Manager'da ana ekranlar (WorkCenter, Operation) önce, alt formları sonra silinir; Envanter'in reçete ekranları bu tablolara lookup ile bağlıdır. Tablolar ancak açık onayla `dropTables` ile düşürülür.
<!-- module-doc:auto:begin -->
## Ek — Ekran envanteri (otomatik)
> Wizard dosyalarından üretilir; deploy, silme, tasarımcı kaydı ve import'ta yenilenir. Elle düzenleme bir sonraki yenilemede kaybolur.
### Tanımlamalar (`App.Production.Definitions`)
#### İş Merkezi Etiketleri — `App.Production.WorkCenterTag`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/WorkCenterTag.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Production.Definitions` › `App.Production.WorkCenterTag` (sıra 1) |
| Yetki | `App.Production.WorkCenterTag` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | İş Merkezi Etiketleri — iş merkezlerini sınıflandırmak için kullanılan etiketler (boyahane, apre, montaj…). |
| Geliştirme talebi | Inventory -> Tanımlamalar |
| Kaynak | `Prd_T_WorkCenterTag` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` |
| Veri aynası | `data/App.Production.WorkCenterTag.json` |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Ad | dxTextBox | ✓ | ✓ | |
| `Color` | Renk | dxColorBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### İş Merkezleri — `App.Production.WorkCenter`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/WorkCenter.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Production.Definitions` › `App.Production.WorkCenter` (sıra 2) |
| Yetki | `App.Production.WorkCenter` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | İş Merkezleri — operasyonların yapıldığı makine ya da istasyonlar (ör. ram makinası). |
| Geliştirme talebi | Inventory -> Tanımlamalar |
| Kaynak | `Prd_T_WorkCenter` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Production.WorkCenterGeneral` (Id → Id), `App.Production.WorkCenterCapacity` (Id → WorkCenterId) |
| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` |
| Form varsayılanları | IsActive=true |
| Veri aynası | `data/App.Production.WorkCenter.json` |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | İş Merkezi Adı | dxTextBox | ✓ | ✓ | |
| `Code` | Kod | dxTextBox | | ✓ | |
| `Tags` | Etiketler | dxTagBox | | ✓ | sorgu: Prd_T_WorkCenterTag |
| `WeeklyWorkingHours` | Çalışma Saatleri (Haftalık) | dxNumberBox | ✓ | ✓ | |
| `AlternativeWorkCenterIds` | Alternatif İş Merkezleri | dxTagBox | | ✓ | sorgu: Prd_T_WorkCenter |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### Operasyonlar — `App.Production.Operation`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Operation.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Production.Definitions` › `App.Production.Operation` (sıra 3) |
| Yetki | `App.Production.Operation` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Operasyonlar — bir iş merkezinde yapılan üretim adımları (ör. ram makinasında Apre). |
| Geliştirme talebi | Inventory -> Tanımlamalar |
| Kaynak | `Prd_T_Operation` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Production.OperationInstruction` (Id → OperationId) |
| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` |
| Form varsayılanları | IsActive=true |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Operasyon Adı | dxTextBox | ✓ | ✓ | |
| `WorkCenterId` | İş Merkezi | dxSelectBox | ✓ | ✓ | sorgu: Prd_T_WorkCenter |
| `DefaultDurationMin` | Varsayılan Süre (dk) | dxNumberBox | ✓ | ✓ | |
| `ApplyOnVariants` | Varyantlara Uygula | dxTagBox | | ✓ | sorgu: Inv_T_AttributeValue |
| `CostBasis` | Maliyete Dayalı | dxRadioGroup | ✓ | ✓ | liste: Actual, Theoretical |
| `DurationMode` | Süre Hesaplama | dxRadioGroup | ✓ | ✓ | liste: Fixed, Computed |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### Genel Bilgi — `App.Production.WorkCenterGeneral`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/WorkCenterGeneral.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Production.WorkCenterGeneral` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | İş Merkezi Genel Bilgi — iş merkezinin üretim ve maliyetlendirme bilgileri. |
| Geliştirme talebi | Inventory -> Tanımlamalar |
| Kaynak | `Prd_T_WorkCenter` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `TimeEfficiency` | Zaman Verimliliği (%) | dxNumberBox | ✓ | ✓ | |
| `OeeTarget` | OEE Hedefi (%) | dxNumberBox | ✓ | ✓ | |
| `SetupTimeMin` | Kurulum Zamanı (dk) | dxNumberBox | | ✓ | |
| `CleanupTimeMin` | Temizlik Zamanı (dk) | dxNumberBox | | ✓ | |
| `CostPerHour` | Saat Başına Maliyet (İş Merkezi) | dxNumberBox | | ✓ | |
| `EmployeeCostPerHour` | Saat Başına Maliyet (Çalışan) | dxNumberBox | | ✓ | |
| `Description` | Açıklama | dxTextArea | | ✓ | |
#### Ürün Kapasitesi — `App.Production.WorkCenterCapacity`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/WorkCenterCapacity.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Production.WorkCenterCapacity` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | İş Merkezi Ürün Kapasitesi — iş merkezinin bir çevrimde bir üründen kaç birim işleyebildiği. |
| Geliştirme talebi | Inventory -> Tanımlamalar |
| Kaynak | `Prd_T_WorkCenterCapacity` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `WorkCenterId` | İş Merkezi | dxSelectBox | | | sorgu: Prd_T_WorkCenter |
| `ProductId` | Ürün | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Product |
| `Capacity` | Kapasite | dxNumberBox | ✓ | ✓ | |
| `UomId` | Birim | dxSelectBox | | ✓ | sorgu: Adm_T_Uom |
| `SetupTimeMin` | Kurulum Zamanı (dk) | dxNumberBox | | ✓ | |
| `CleanupTimeMin` | Temizlik Zamanı (dk) | dxNumberBox | | ✓ | |
#### Açıklamalar — `App.Production.OperationInstruction`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/OperationInstruction.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Production.OperationInstruction` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Operasyon Açıklamaları — bir operasyonda operatöre gösterilen iş talimatları. |
| Geliştirme talebi | Inventory -> Tanımlamalar |
| Kaynak | `Prd_T_OperationInstruction` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `OperationId` | Operasyon | dxSelectBox | | | sorgu: Prd_T_Operation |
| `Title` | Başlık | dxTextBox | ✓ | ✓ | |
| `InstructionType` | Tip | dxSelectBox | ✓ | ✓ | liste: Text, Pdf, Image, Link |
| `Reference` | Referans | dxTextBox | | ✓ | |
| `Note` | Not | dxTextArea | | ✓ | |
| `SortOrder` | Sıra | dxNumberBox | | ✓ | |
<!-- module-doc:auto:end -->