Files
orderPRO/.paul/phases/02-bug-fixes/02-04-SUMMARY.md
Jacek Pyziak 880ab5933f feat(02-bug-fixes): extract CronHandlerFactory, complete Phase 2
Phase 2 complete (4/4 plans):
- Plan 02-01: Fix dead ZPL page size condition in AllegroShipmentService
- Plan 02-02: Add time-based cursor to AllegroStatusSyncService
- Plan 02-03: Fix ShopproOrdersSyncService using wrong state repository
- Plan 02-04: Extract CronHandlerFactory as single cron composition point

Plan 02-04 specifics:
- New CronHandlerFactory builds complete cron object graph
- Application::maybeRunCronOnWeb() reduced from 80+ to ~20 lines
- bin/cron.php reduced from 123 to 26 lines
- Fixed 2 bugs: AllegroOAuthClient→AllegroTokenManager,
  AllegroOrderSyncStateRepository→ShopproOrderSyncStateRepository

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-13 00:43:04 +01:00

4.9 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
02-bug-fixes 04 cron
cron
factory
refactor
dependency-injection
phase provides
02-bug-fixes Application.php z AllegroTokenManager (plan 02-03), ShopproPaymentStatusSyncService (plan 02-01)
CronHandlerFactory — jedyne miejsce budujące graf obiektów crona
Application::maybeRunCronOnWeb() skrócona z 80+ do ~20 linii logiki
bin/cron.php skrócone ze 123 do 26 linii
Naprawione dwa błędy w bin/cron.php (AllegroOAuthClient→AllegroTokenManager, AllegroOrderSyncStateRepository→ShopproOrderSyncStateRepository)
cron
bin/cron
Application
integracje
added patterns
Factory pattern dla kompozycji obiektów
Single source of truth dla okablowania crona
created modified
src/Modules/Cron/CronHandlerFactory.php
src/Core/Application.php
bin/cron.php
Factory przyjmuje tylko PDO i integrationSecret — bez DI container (odrębny temat)
ShopproIntegrationsRepository tworzony raz w fabryce i współdzielony między 3 serwisami
CronHandlerFactory::build(CronRepository, Logger): CronRunner — standardowy kontrakt fabryki
~20min 2026-03-13T00:00:00Z 2026-03-13T00:00:00Z

Phase 2 Plan 04: CronHandlerFactory Summary

Wydzielono CronHandlerFactory jako jedyne miejsce budujące graf obiektów crona; naprawiono 2 błędy zależności w bin/cron.php (AllegroOAuthClient→AllegroTokenManager, AllegroOrderSyncStateRepository→ShopproOrderSyncStateRepository).

Performance

Metric Value
Duration ~20 min
Started 2026-03-13
Completed 2026-03-13
Tasks 3 completed
Files modified 3 (1 nowy, 2 zmodyfikowane)

Acceptance Criteria Results

Criterion Status Notes
AC-1: Jeden punkt definicji handlerów crona Pass CronHandlerFactory jedynym miejscem new AllegroIntegrationRepository / new ShopproIntegrationsRepository w kontekście crona
AC-2: Web cron działa identycznie jak przed zmianą Pass maybeRunCronOnWeb() wywołuje fabrykę z tymi samymi handlerami
AC-3: bin/cron.php używa poprawnych zależności Pass AllegroTokenManager zamiast AllegroOAuthClient, ShopproOrderSyncStateRepository zamiast AllegroOrderSyncStateRepository

Accomplishments

  • Nowy CronHandlerFactory (97 linii) — kompletny graf obiektów crona w jednym miejscu
  • Application.php: usunięto 20+ importów cron; maybeRunCronOnWeb() skrócona z 80+ do ~20 linii (3 linie fabryki zamiast ~80 linii ręcznej konstrukcji)
  • bin/cron.php: skrócone ze 123 do 26 linii; naprawiono 2 istniejące błędy w zależnościach

Files Created/Modified

File Change Purpose
src/Modules/Cron/CronHandlerFactory.php Created Jedyne miejsce budujące graf obiektów crona
src/Core/Application.php Modified Zastąpiono 80+ linii ręcznej konstrukcji wywołaniem fabryki; usunięto 20+ zbędnych importów
bin/cron.php Modified Zastąpiono 100+ linii wywołaniem fabryki; naprawiono 2 błędy zależności

Decisions Made

Decision Rationale Impact
Factory przyjmuje PDO + integrationSecret, nie Application Unikanie circular dependency i nadmiernego coupling Fabryka przenośna, testowalność wyższa
ShopproIntegrationsRepository tworzony raz i współdzielony Application.php tworzył go 3x niepotrzebnie Spójność z intencją kodu, mniejsze zużycie zasobów
Nie wprowadzamy DI container Odrębny temat (CONCERNS.md [MEDIUM]) Brak scope creep

Deviations from Plan

Summary

Type Count Impact
Auto-fixed 0
Scope additions 0
Deferred 0

Total impact: Brak odchyleń — plan wykonany dokładnie jak napisano.

Skills

Skill Status Notes
sonar-scanner ANALYSIS SUCCESSFUL — 0 nowych issues w zmienionych plikach
/code-review gh CLI niedostępne w środowisku; brak PR (praca na main)

Issues Encountered

Issue Resolution
gh CLI niedostępne — code-review niemożliwy Pominięto; sonar-scanner jako główna weryfikacja jakości

SonarQube — post plan 02-04 (skan 2026-03-13)

Brak nowych issues w CronHandlerFactory.php (nowy plik). Pre-existing issues w Application.php (S1142, S1448, S4833, S2003) — niezmienione przez nasze modyfikacje.

Next Phase Readiness

Ready:

  • Graf obiektów crona w jednym miejscu — gotowe do dalszej pracy z handlerami
  • bin/cron.php i Application.php zsynchronizowane — brak ryzyka rozjechania zależności

Concerns:

  • Application ma nadal 22 metody (S1448 pre-existing) — kandydat do podziału w przyszłości

Blockers: Brak


Phase: 02-bug-fixes, Plan: 04 Completed: 2026-03-13