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

8.5 KiB
Raw Blame History

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) backende 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 AJAXları 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 helperlı. 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ı helpera 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/NULLa ç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 backendde 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 cachelenen 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ı CLIdan otomatik çalıştırılabiliyor; rapor çıktıları guideda 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.