ikinci temizlik tamamlandı

This commit is contained in:
Ümit Tunç
2026-04-28 21:15:09 +03:00
parent f80443aec0
commit 37e7296527
8313 changed files with 2400677 additions and 0 deletions
@@ -0,0 +1,55 @@
## Non-Welded Joint Types – Final Roadmap
**Branch:** `feature/weldlog-non-welded-joints`
**Scope:** Mechanical joints (BJ, FJ, TH, CJ) must be editable in grids but excluded from every welding-related calculation, report and sync path.
---
### 1. Foundation (Database + Helpers)
- `joint_types` table now has `is_welded`, `is_mechanical`, `has_ndt` (see migrations `2025_11_14_181113_*`, `2025_11_14_181220_*`).
- `MechanicalJointTypesSeeder` guarantees the core mechanical joints exist in every environment.
- `JointTypeService` + `app/Functions/joint_type_helpers.php` cache joint-type lists and expose helpers:
- `apply_welded_filter()` / `apply_mechanical_filter()` wrap any Builder or table name and add the correct `whereIn`.
- `is_welded_joint`, `is_mechanical_joint`, `requires_ndt`, cache clear helpers.
### 2. DevExtreme Grid Behaviour
- `resources/views/components/table/datagrid*.blade.php` handles everything:
- Greys out mechanical rows, disables welder/WPS/NDT fields, keeps `fitter_name` + fit-up dates editable.
- Footer SUM/AVG now send `excludeMechanicalSummary=1`; backend (`SummaryContext` + `AggregateHelper`) runs `CASE WHEN` filters so totals only consider welded joints.
- `type_of_welds` dropdown restored for Weldlog/Weldmap (joint_types + fallback list).
### 3. Application Surfaces Updated
| Area | Files | Result |
| --- | --- | --- |
| Dashboards & reports | `resources/views/admin-ajax/*`, `resources/views/admin/dashboard/chart/monthly-progress.blade.php` | Every weld log query wraps `apply_welded_filter`, so mechanical rows never inflate KPIs. |
| Cron & sync jobs | `resources/views/cron/*.blade.php`, `app/Http/Controllers/SaveTrigger/test_pack_base_statuses.php` | Spool, paint, NDE and test-package syncs skip mechanical joints automatically. |
| Register Creator & PDFs | `app/Services/RegisterCreator/...`, `resources/views/admin-ajax/pdf/*`, `generate-pdf-*` | Register exports and PDF builders read only welded joints; mechanical rows do not trigger file searches. |
| Page modules | `resources/views/admin/type/weldlog.blade.php`, `weldmap*.blade.php`, `nde-matrix.blade.php`, `manage-ndt.blade.php`, `spool-release*` | All modules share the same helper-based filtering and the DevExtreme UI behaviour. |
### 4. Testing & Tooling
- `php artisan mechanical:verify-summaries --columns=nps_1,...` validates SUM/AVG output; CLI table prints welded vs mechanical totals for audit.
- Guide and roadmap (this file + `mechanical-overview.md`) explain the architecture and test plan.
### 5. Commands & References
```bash
# Seed mechanical joints (first-time environments)
php artisan db:seed --class=MechanicalJointTypesSeeder
# Rebuild helper cache if joint_types table changes
php artisan tinker --execute="clear_joint_types_cache();"
# Run SUM/AVG regression
php artisan mechanical:verify-summaries --columns=nps_1,nps_2,outside_diameter_1,outside_diameter_2,wall_thickness_1,wall_thickness_2
```
### 6. Key Principles
1. **Never** query `weld_logs` without `apply_welded_filter()` unless the screen explicitly needs mechanical rows.
2. Mechanical rows can exist in listings (for fit-up tracking) but should not trigger welding KPIs, NDT scopes, spool or paint logic.
3. DevExtreme grids are the single source of UI logic; avoid duplicating mechanical detection per module.
4. Register/PDF builders must only read welded joints to keep QA documentation aligned with real weld data.
---
**Last Updated:** 2025-11-21
**Owner:** AI Assistant + Team