Files
orderPRO/.paul/phases/06-sonarqube-quality/06-05-SUMMARY.md
2026-03-13 17:26:03 +01:00

6.4 KiB

phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, patterns-established, duration, started, completed
phase plan subsystem tags requires provides affects tech-stack key-files key-decisions patterns-established duration started completed
06-sonarqube-quality 05 settings
php
refactoring
god-class
S1448
shoppro
allegro
phase provides
06-04 cognitive complexity fixes (S3776)
ShopproOrderMapper — all order mapping methods extracted from ShopproOrdersSyncService
ShopproProductImageResolver — image fetching logic extracted
AllegroStatusMappingController — status mapping routes extracted from AllegroIntegrationController
AllegroDeliveryMappingController — delivery mapping routes extracted
ShopproOrdersSyncService reduced to 9 methods (orchestration only)
07-*
future-testing
added patterns
god class split via move-method — no logic change, only structural reorganization
created modified
src/Modules/Settings/ShopproOrderMapper.php
src/Modules/Settings/ShopproProductImageResolver.php
src/Modules/Settings/AllegroStatusMappingController.php
src/Modules/Settings/AllegroDeliveryMappingController.php
src/Modules/Settings/ShopproOrdersSyncService.php
src/Modules/Settings/AllegroIntegrationController.php
src/Modules/Cron/CronHandlerFactory.php
routes/web.php
AllegroIntegrationController stays at 25 methods (not ≤15): file had 35 methods, not 30 as planned — full split requires AllegroImportScheduleService, deferred to next phase
god class split: extract mapper/resolver classes, inject via constructor, update factory composition
~2h 2026-03-13T00:00:00Z 2026-03-13T00:00:00Z

Phase 06 Plan 05: God Classes Split — Summary

ShopproOrdersSyncService split 39→9 methods via ShopproOrderMapper + ShopproProductImageResolver; AllegroIntegrationController split 35→25 methods via 2 new controllers — S1448 reduced from 6x to 2x.

Performance

Metric Value
Duration ~2h
Started 2026-03-13
Completed 2026-03-13
Tasks 3 completed (incl. 1 checkpoint)
Files modified 8

Acceptance Criteria Results

Criterion Status Notes
AC-1: ShopproOrderMapper wydzielony Pass 24+ metod mapowania przeniesione; sync używa $this->mapper
AC-2: ShopproProductImageResolver wydzielony Pass resolveProductImagesForOrder + fetchPrimaryProductImageUrl
AC-3: ShopproOrdersSyncService ≤20 metod Pass 9 metod (sync + orchestration)
AC-4: AllegroIntegrationController podzielony Partial 25 metod (cel ≤15) — patrz Odchylenia
AC-5: Brak regresji Pass Checkpoint human-verify: approved

Accomplishments

  • ShopproOrdersSyncService: 39 → 9 metod — najduższa klasa w projekcie skurczyła się o 75%
  • 4 nowe pliki PHP, każdy z jedną odpowiedzialnością
  • routes/web.php zaktualizowane — publiczne URL bez zmian, nowe kontrolery obsługują routing
  • CronHandlerFactory wstrzykuje nowe zależności poprawnie
  • Zero błędów składniowych (php -l na wszystkich plikach)

Task Commits

Praca wykonana jako zestaw zmian uncommitted podczas APPLY (paused before UNIFY):

Task File Zmiana
Task 1 ShopproOrderMapper.php Nowy — 24+ metody mapowania
Task 1 ShopproOrdersSyncService.php Usunięto metody mapowania, wstrzyknięto mapper
Task 1 CronHandlerFactory.php Dodano ShopproOrderMapper do kompozycji
Task 2 ShopproProductImageResolver.php Nowy — image fetching
Task 2 ShopproOrdersSyncService.php Usunięto image methods, wstrzyknięto resolver
Task 3 AllegroStatusMappingController.php Nowy — 7 metod
Task 3 AllegroDeliveryMappingController.php Nowy — 9 metod
Task 3 AllegroIntegrationController.php Usunięto 10 metod do nowych kontrolerów
Task 3 routes/web.php Routing przepięty do nowych kontrolerów

Files Created/Modified

File Zmiana Cel
src/Modules/Settings/ShopproOrderMapper.php Nowy Wszystkie metody mapowania danych zamówień Shoppro
src/Modules/Settings/ShopproProductImageResolver.php Nowy Pobieranie zdjęć produktów z API Shoppro
src/Modules/Settings/AllegroStatusMappingController.php Nowy Obsługa mapowań statusów Allegro (7 metod)
src/Modules/Settings/AllegroDeliveryMappingController.php Nowy Obsługa mapowań dostawy Allegro (9 metod)
src/Modules/Settings/ShopproOrdersSyncService.php Zmodyfikowany Orchestrator sync — 9 metod
src/Modules/Settings/AllegroIntegrationController.php Zmodyfikowany Główne ustawienia Allegro — 25 metod
src/Modules/Cron/CronHandlerFactory.php Zmodyfikowany Nowe zależności w kompozycji
routes/web.php Zmodyfikowany Routing do nowych kontrolerów

Decisions Made

Decision Rationale Impact
AllegroIntegrationController pozostaje przy 25 metodach Plik miał 35 metod (plan zakładał 30). Prywatne helpery (validate*, findImportSchedule, ensureDefaultSchedules, itp.) nie mogły być przeniesione bez nowej klasy serwisu AC-4 częściowo — S1448 nadal narusza dla tego pliku; wymaga planu 06-07 lub kolejnej fazy

Deviations from Plan

Summary

Type Count Impact
Scope limit hit 1 AllegroIntegrationController 25 metod zamiast ≤15

Total impact: S1448 spada z 6x do 2x (zamiast planowanego 1x). Odchylenie dokumentowane, nie blokuje.

Deferred Items

  • AllegroImportScheduleService extraction — AllegroIntegrationController nadal ma 25 metod (S1448 violation). Wymaga wydzielenia logiki harmonogramów (findImportSchedule, findStatusSyncSchedule, currentImportIntervalSeconds, ensureDefaultSchedulesExist) do osobnej klasy.

Issues Encountered

Issue Resolution
AllegroIntegrationController miał 35 metod, nie 30 Przeniesiono 10 metod do 2 nowych kontrolerów — max możliwy podział bez nowej klasy serwisu

Next Phase Readiness

Ready:

  • Phase 06 kompletna (6/6 planów zamknięte)
  • S1448 violations: 6x → 2x (ShopproIntegrationsController + AllegroIntegrationController)
  • Architektura modułu Settings bardziej modularna — łatwiejsze testowanie

Concerns:

  • AllegroIntegrationController (25 metod) i ShopproIntegrationsController nadal naruszają S1448
  • Oba mogą być adresowane w przyszłej fazie maintenance/quality

Blockers: None


Phase: 06-sonarqube-quality, Plan: 05 Completed: 2026-03-13