Files
citrus-cms/resources/views/guide/mechanical-overview.md
T
2026-04-28 21:15:09 +03:00

76 lines
8.5 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.
## Mechanical Controls – Consolidated Guide
### 1. Amaç ve Kapsam
- **Hedef:** BJ/FJ/TH/CJ gibi mekanik eklemler, tüm modüllerde (Weldlog, Weldmap, Repair Log, NDT/Spool/Paint süreçleri, register & cron görevleri) kaynaklı sayımları, SUM/AVG hesaplarını ve senkronizasyonları etkilemesin.
- **Veri Kaynağı:** `weld_logs.type_of_welds` alanı; `JointTypeService` üzerinden `weldedTypes` / `mechanicalTypes` listeleri.
- **Temel Strateji:** Tüm sorguların `apply_welded_filter()` veya `apply_mechanical_filter()` yardımıyla aynı servis katmanına bağlanması + DevExtreme gridlerinde `weldedOnly` özetleri.
### 2. Mimari Özeti
| Katman | Dosyalar | İşlev |
| --- | --- | --- |
| Servis & Helper | `app/Services/JointTypeService.php`, `app/Functions/joint_type_helpers.php`, `database/seeders/MechanicalJointTypesSeeder.php` | Ortak tip listeleri, `filterWelded/Mechanical`, `apply_welded_filter()` ve mekanik joint kayıtlarının seed edilmesi |
| DevExtreme çekirdeği | `app/DevExtreme/AggregateHelper.php`, `app/DevExtreme/DbSet.php`, `app/DevExtreme/SummaryContext.php`, `resources/views/components/table/datagrid*.blade.php` | `weldedOnly` SUM/AVG, `type_of_welds` seçimi, mekanik satır davranışı |
| Uygulama ekranları | `resources/views/admin/type/*`, `resources/views/admin-ajax/*` | Gridler + PDF/Excel üretimleri, tamamı helper’ı kullanır |
| Arka plan işlemleri | `resources/views/cron/*.blade.php`, `app/Services/RegisterCreator/*`, `app/Http/Controllers/SaveTrigger/test_pack_base_statuses.php` | NDE, spool, paint, register senkronizasyonlarında mekanik filtreleme |
| Komutlar & dokümantasyon | `app/Console/Commands/*`, `resources/views/guide/*.md` | Otomatik testler, raporlar ve bu kılavuz |
### 3. Ana Davranışlar
1. **Grid Seviyesi**
- `$enableMechanicalControls` → mekanik satırlar gri, kaynak alanları `readOnly`.
- `$excludeMechanicalFromSummaries` → DevExtreme `totalItems` için `selector + weldedOnly`.
- `type_of_welds` kolonu her istekte seçiliyor; `SummaryContext` parametresi (`excludeMechanicalSummary=1`) backend’e iletiliyor.
2. **Sorgu Seviyesi**
- Tüm `db("weld_logs")` ve `WeldLog::query()` kullanımları `apply_welded_filter()` ile sarıldı; mekanik senaryolar için `apply_mechanical_filter()` mevcut.
- Cron/SaveTrigger/Register akışlarında da aynı helper kullanıldığından, veritabanı senkronizasyonları mekanik satırı asla tetiklemiyor.
### 4. Test ve Doğrulama
- **Otomatik SUM/AVG kontrolü:**
```
php artisan mechanical:verify-summaries --columns=nps_1,nps_2,outside_diameter_1,outside_diameter_2,wall_thickness_1,wall_thickness_2
```
Çıktıdaki “SUM (Mechanical)” değerlerinin 0 olması beklenir; sonuçlar `weldlog-mechanical-summary.md` içinde saklanır.
- **Manuel Grid Kontrolü:**
- Weldlog/Weldmap/Base Weldmap: Gri `[MECH]` satırları, kilitli kaynak alanları ve doğru footer değerlerini gözlemleyin.
- Repair Log, Spool Release, Manage NDT vs.: Şu an yalnızca `count` özetleri kullanıyor; gelecekte SUM/AVG eklerseniz aynı bayrakları aktifleştirin.
- **Regresyon testi:** `php artisan tinker` veya özel SQL scriptleriyle mekanik toplamları karşılaştırın; fark oluşursa ilgili gridde `weldedOnly` konfigürasyonunu doğrulayın.
### 5. Modül Bazında Durum
| Modül / Süreç | Durum | Not |
| --- | --- | --- |
| **Weldlog / Weldmap / Base Weldmap** | SUM/AVG tamamen kaynaklı veriden geliyor; CLI sonuçları dokümante edildi. |
| **Repair Log** | Veri kümesi sadece kaynaklı kayıtlardan oluşuyor; izleme amaçlı tinker komutu hazır. |
| **Spool & Paint akışları** | `spool-status-changer`, `paint-follow-up-updater`, tüm spool-release AJAX’ları helper kullanıyor; mekanik kayıtlar statü/pint süreçlerine girmez. |
| **NDT / Manage NDT / NDT Order** | Gridler sadece `count` özetlerine sahip; veri kaynakları zaten helper’lı. Gelecekte SUM/AVG eklenirse bayraklar açılmalı. |
| **NDE Matrix** | Mekanik satırlar veri bütünlüğü için korunuyor ancak `showMechanicalNdtPlaceholder` sayesinde test alanları otomatik “N/A – Non-Welded Connection” ile etiketleniyor. |
| **Register Creator (QA/WDB)** | Belge tarama ve satır derleme aşamasında sadece kaynaklı kayıtlar okunuyor; gereksiz dosya taramaları engellendi. |
| **Cron Senkronları** | Line list ↔ NDE ↔ weld log, spool, paint, repair senaryoları helper’a geçti; mekanik satırlar arka planda yok sayılıyor. |
### 6. Bakım Kontrol Listesi
1. Yeni bir ekran/cron yazarken `db("weld_logs")` kullanacaksanız ilk satıra `apply_welded_filter()` koyun.
2. DevExtreme gridine SUM/AVG eklerken:
- `$enableMechanicalControls = true`, `$excludeMechanicalFromSummaries = true`, `$alwaysSelectColumns[] = 'type_of_welds'`.
- `totalItems` için `selector` + `weldedOnly: true` atamayı unutmayın.
3. Tip listeleri değişirse `php artisan cache:clear` veya `clear_joint_types_cache()` çağrısını tetikleyin; yeni ortam kurulurken `php artisan db:seed --class=MechanicalJointTypesSeeder` çalıştırmayı unutmayın.
4. Rehberleri (bu dosya) güncel tutun; yeni kolonlar/testler eklendikçe tabloya değerleri ekleyin.
> Bu doküman, daha önce yayılan üç ayrı rehberin (DevExtreme davranışları, genel task özeti, SUM/AVG doğrulamaları) birleşik ve sadeleştirilmiş halidir. Tüm mekanik iş mantığına ait tek referans olarak kullanılmalıdır.
### 7. Güncel Dosya Değişiklikleri
| Dosya | Açıklama ve Neden |
| --- | --- |
| `resources/views/components/table/datagrid.blade.php` | DevExtreme gridleri için mekanik satırları gri yapma, kaynak alanlarını `readOnly` tutma ve SUM/AVG hesaplarında `weldedOnly` filtresini uygulama mantığı tek merkezde toplandı. Böylece tüm gridler aynı davranışı otomatik olarak devralıyor. |
| `app/DevExtreme/AggregateHelper.php` & `app/DevExtreme/DbSet.php` | DevExtreme sunucu tarafı sorguları, `weldedOnly` bayrağı geldiğinde mekanik tipleri SQL seviyesinde `CASE WHEN` ile 0/NULL’a çeviriyor. Bu sayede footer SUM/AVG değerleri yalnızca kaynaklı kayıtları kapsıyor. |
| `resources/views/components/table/datagrid/partials/js-data-source.blade.php` & `resources/views/admin/devextreme.php` | Grid isteklerine `excludeMechanicalSummary=1` parametresi eklenip backend’de `SummaryContext` ayarlanıyor; `type_of_welds` kolonunun her sorguda seçilmesi garanti edildi. |
| `resources/views/admin/type/weldlog.blade.php`, `weldmap.blade.php`, `weldmap-fast2.blade.php`, `resources/views/admin/type/weldmap/main.blade.php` | Grid başlatılırken `$alwaysSelectColumns = ['type_of_welds']`, `$excludeMechanicalFromSummaries = true`, `$enableMechanicalControls = true` atandı. Ayrıca `type_of_welds` alanı için dropdown (joint_types + fallback listesi) geri getirildi, böylece mekanik tip seçimi hatasız yapılabiliyor. |
| `resources/views/admin/type/nde-matrix.blade.php` | Mekanik satırlardaki NDT/PWHT kolonları otomatik olarak “N/A – Non-Welded Connection” placeholder’ıyla gösteriliyor; diğer satırlar normal veri taşıyor. |
| `resources/views/admin-ajax/*`, `resources/views/cron/*`, `app/Http/Controllers/SaveTrigger/test_pack_base_statuses.php`, `app/Services/RegisterCreator/*` | Tüm sorgular `apply_welded_filter()` veya `apply_mechanical_filter()` yardımcılarını kullanacak şekilde güncellendi. Böylece mekanik kayıtlar spool, paint, register ve rapor çıktılarında yanlışlıkla hesaplamaya girmiyor. |
| `app/Functions/joint_type_helpers.php`, `app/Services/JointTypeService.php` | Mekanik/kaynaklı tip listeleri cache’lenen servis katmanına taşındı; `apply_welded_filter()` fonksiyonu Eloquent/Query Builder üzerinde aynı mantığı tekrar kullanmamızı sağlıyor. |
| `database/migrations/*`, `database/seeders/MechanicalJointTypesSeeder.php`, `database/seeders/DatabaseSeeder.php` | `joint_types` tablosuna mekanik bayraklar, `weld_logs` tablosuna `fitter_name` alanı eklendi; mekanik tiplerin varlığı garanti altına alındı (lokal ortamlar için seeder). |
| `app/Console/Commands/VerifyMechanicalSummaries.php` | SUM/AVG doğrulaması CLI’dan otomatik çalıştırılabiliyor; rapor çıktıları guide’da saklanıyor. |
| `resources/views/guide/mechanical-overview.md` (bu dosya) | Tüm mimari, test adımları ve değişiklik listesi tek referansta toplandı; sunum/handover sırasında kullanılmak üzere güncel tutuluyor. |
> Yukarıdaki dosyalar dışında listelenen vendor/composer değişiklikleri yeni servis sınıflarını çözümlemek için Composer autoload üretimi sırasında oluştu; ekteki kod yürütmesi için gerekli olup ek müdahale gerektirmiyor.