--- phase: 06-integrations-refactoring plan: 02 subsystem: domain tags: [apilo, integrations, refactoring, migration] requires: - phase: 06-01 provides: ApiloRepository class with all apilo* methods provides: - "Wszyscy konsumenci apilo* używają ApiloRepository" - "IntegrationsRepository lean (~225 linii): settings, logi, product linking, ShopPRO" affects: [] tech-stack: added: [] patterns: - "IntegrationsController z dwoma repozytoriami: IntegrationsRepository + ApiloRepository" key-files: created: [] modified: - autoload/admin/Controllers/IntegrationsController.php - autoload/admin/App.php - autoload/Domain/Order/OrderAdminService.php - cron.php - autoload/Domain/Integrations/IntegrationsRepository.php - tests/Unit/Domain/Integrations/IntegrationsRepositoryTest.php - tests/Unit/admin/Controllers/IntegrationsControllerTest.php key-decisions: - "IntegrationsController dostał ApiloRepository jako drugi argument konstruktora" - "OrderAdminService: tylko 3 z 5 instancji zmienione na ApiloRepository (2 używają getSettings — zostają)" - "cron.php: $apiloRepository obok $integrationsRepository (oba potrzebne)" patterns-established: - "Kontroler używający dwóch repozytoriów: każde do swojej domeny" duration: ~20min started: 2026-03-12T00:00:00Z completed: 2026-03-12T00:00:00Z --- # Phase 6 Plan 02: Migracja konsumentów + cleanup IntegrationsRepository **Wszyscy konsumenci apilo* zmigrowano na ApiloRepository; IntegrationsRepository oczyszczono do ~225 linii; 818/818 testów green.** ## Performance | Metric | Value | |--------|-------| | Duration | ~20 min | | Completed | 2026-03-12 | | Tasks | 3 / 3 | | Files modified | 7 | ## Acceptance Criteria Results | Criterion | Status | Notes | |-----------|--------|-------| | AC-1: IntegrationsController używa ApiloRepository dla apilo* | Pass | 6 wywołań przeniesione | | AC-2: OrderAdminService i cron.php używają ApiloRepository | Pass | 3 metody + 5 wywołań w cron | | AC-3: IntegrationsRepository nie zawiera metod apilo* | Pass | 0 wystąpień apilo* | | AC-4: Pełna suite green | Pass | 818/818 testów | ## Accomplishments - IntegrationsRepository: ~650 linii usunięte, zostały settings + logi + product linking + ShopPRO - IntegrationsController: nowy konstruktor `(IntegrationsRepository, ApiloRepository)` - OrderAdminService: 3 metody (resendToApilo, syncApiloPayment, syncApiloStatus) używają ApiloRepository - cron.php: `$apiloRepository` dla 5 wywołań apilo*; `$integrationsRepository` dla getSettings/saveSetting - IntegrationsRepositoryTest: oczyszczony z 8 duplikatów apilo testów + przywrócone 3 testy generyczne - IntegrationsControllerTest: zaktualizowany do nowego 2-arg konstruktora ## Files Modified | File | Zmiana | |------|--------| | `autoload/admin/Controllers/IntegrationsController.php` | +ApiloRepository dependency, 6 apilo* calls rerouted | | `autoload/admin/App.php` | Inject ApiloRepository do IntegrationsController | | `autoload/Domain/Order/OrderAdminService.php` | 3× IntegrationsRepository → ApiloRepository | | `cron.php` | +$apiloRepository, 5 apilo* calls rerouted | | `autoload/Domain/Integrations/IntegrationsRepository.php` | Usunięto ~650 linii apilo* | | `tests/Unit/Domain/Integrations/IntegrationsRepositoryTest.php` | Cleanup + przywrócone testy generyczne | | `tests/Unit/admin/Controllers/IntegrationsControllerTest.php` | Zaktualizowany do 2-arg konstruktora | ## Deviations from Plan - IntegrationsControllerTest wymagał aktualizacji (nie był w planie) — auto-fix podczas weryfikacji - 3 testy przypadkowo usunięte przez regex (testAllPublicMethodsExist, testSettingsTableMapping, testShopproProviderWorks) — przywrócone ## Next Phase Readiness **Ready:** Refaktoring fazy 6 kompletny. IntegrationsRepository lean, ApiloRepository izolowany. **Blockers:** Brak --- *Phase: 06-integrations-refactoring, Plan: 02* *Completed: 2026-03-12*