Phase 1 complete (2/2 plans): - Plan 01-01: Extract AllegroTokenManager — OAuth token logic centralized from 4 classes into dedicated manager class - Plan 01-02: Extract StringHelper — nullableString/normalizeDateTime/ normalizeColorHex extracted from 15+ classes into App\Core\Support\StringHelper; removed 19 duplicate private methods Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
152 lines
7.0 KiB
Markdown
152 lines
7.0 KiB
Markdown
---
|
|
phase: 01-tech-debt
|
|
plan: 02
|
|
subsystem: core
|
|
tags: [php, refactoring, helpers, string-utils]
|
|
|
|
requires: []
|
|
provides:
|
|
- src/Core/Support/StringHelper — centralne metody pomocnicze nullableString/normalizeDateTime/normalizeColorHex
|
|
- Eliminacja 15+ prywatnych duplikatów we wszystkich modułach
|
|
affects: [wszystkie moduły używające StringHelper]
|
|
|
|
tech-stack:
|
|
added: []
|
|
patterns:
|
|
- "Utility static class: App\\Core\\Support\\StringHelper jako wzorzec dla przyszłych helperów"
|
|
|
|
key-files:
|
|
created:
|
|
- src/Core/Support/StringHelper.php
|
|
modified:
|
|
- src/Modules/Settings/AllegroOrderImportService.php
|
|
- src/Modules/Settings/AllegroOrdersSyncService.php
|
|
- src/Modules/Settings/AllegroOrderSyncStateRepository.php
|
|
- src/Modules/Settings/AllegroIntegrationRepository.php
|
|
- src/Modules/Settings/AllegroStatusMappingRepository.php
|
|
- src/Modules/Settings/CarrierDeliveryMethodMappingRepository.php
|
|
- src/Modules/Settings/CompanySettingsRepository.php
|
|
- src/Modules/Settings/InpostIntegrationRepository.php
|
|
- src/Modules/Settings/IntegrationsRepository.php
|
|
- src/Modules/Settings/ShopproIntegrationsRepository.php
|
|
- src/Modules/Settings/ShopproOrdersSyncService.php
|
|
- src/Modules/Settings/ShopproPaymentStatusSyncService.php
|
|
- src/Modules/Orders/OrdersController.php
|
|
- src/Modules/Orders/OrdersRepository.php
|
|
- src/Modules/Settings/SettingsController.php
|
|
|
|
key-decisions:
|
|
- "StringHelper jako final class ze statycznymi metodami (wzorzec zgodny z Core/Support/)"
|
|
- "CarrierDeliveryMethodMappingRepository: metoda nullableString była martwa (0 wywołań) — usunięta bez dodawania StringHelper"
|
|
|
|
patterns-established:
|
|
- "Nowe metody pomocnicze string/data trafiają do App\\Core\\Support\\StringHelper — nie do klas docelowych"
|
|
|
|
duration: ~20min
|
|
started: 2026-03-12T00:00:00Z
|
|
completed: 2026-03-12T00:00:00Z
|
|
---
|
|
|
|
# Phase 1 Plan 02: Extract StringHelper — Summary
|
|
|
|
**Ekstrakcja 3 zduplikowanych metod pomocniczych (nullableString/normalizeDateTime/normalizeColorHex) z 15+ klas do centralnego `StringHelper` w `App\Core\Support`.**
|
|
|
|
## Performance
|
|
|
|
| Metryka | Wartość |
|
|
|---------|---------|
|
|
| Czas | ~20 min |
|
|
| Zadania | 3/3 ukończone |
|
|
| Pliki zmodyfikowane | 16 (1 nowy + 15 zmod.) |
|
|
| Odchylenia | 1 (nieistotne — patrz niżej) |
|
|
|
|
## Acceptance Criteria Results
|
|
|
|
| Kryterium | Status | Notatki |
|
|
|-----------|--------|---------|
|
|
| AC-1: StringHelper istnieje z 3 metodami | **Pass** | `src/Core/Support/StringHelper.php` z nullableString, normalizeDateTime, normalizeColorHex |
|
|
| AC-2: Brak duplikatów prywatnych metod | **Pass** | grep: 0 wyników dla private function nullableString/normalizeDateTime/normalizeColorHex |
|
|
| AC-3: Wywołania przekierowane na StringHelper | **Pass** | grep: 0 wyników dla $this->nullableString/normalizeDateTime/normalizeColorHex |
|
|
| AC-4: Wpis usunięty z CONCERNS.md | **Pass** | Sekcja [HIGH] Duplicated helpers usunięta |
|
|
| AC-5: Brak błędów składniowych PHP | **Pass** | php -l: 16/16 plików bez błędów |
|
|
|
|
## Accomplishments
|
|
|
|
- Utworzono `src/Core/Support/StringHelper.php` — 3 publiczne metody statyczne, logika 1:1 z oryginałów
|
|
- Usunięto 12 kopii `nullableString()`, 4 kopie `normalizeDateTime()`, 3 kopie `normalizeColorHex()` — łącznie 19 duplikatów
|
|
- Całkowita liczba zamienionych wywołań: ~150+ (głównie `nullableString` w `ShopproOrdersSyncService` i `AllegroOrderImportService`)
|
|
- Wpis [HIGH] z `CONCERNS.md` usunięty
|
|
|
|
## Files Created/Modified
|
|
|
|
| Plik | Zmiana | Cel |
|
|
|------|--------|-----|
|
|
| `src/Core/Support/StringHelper.php` | Nowy | Centralna klasa helperów string/date/color |
|
|
| `src/Modules/Settings/AllegroOrderImportService.php` | Zmod. | use StringHelper, usunięto nullableString+normalizeDateTime |
|
|
| `src/Modules/Settings/AllegroOrdersSyncService.php` | Zmod. | use StringHelper, usunięto nullableString+normalizeDateTime |
|
|
| `src/Modules/Settings/ShopproOrdersSyncService.php` | Zmod. | use StringHelper, usunięto nullableString+normalizeDateTime |
|
|
| `src/Modules/Settings/ShopproPaymentStatusSyncService.php` | Zmod. | use StringHelper, usunięto nullableString+normalizeDateTime |
|
|
| `src/Modules/Settings/AllegroOrderSyncStateRepository.php` | Zmod. | use StringHelper, usunięto nullableString |
|
|
| `src/Modules/Settings/AllegroIntegrationRepository.php` | Zmod. | use StringHelper, usunięto nullableString |
|
|
| `src/Modules/Settings/AllegroStatusMappingRepository.php` | Zmod. | use StringHelper, usunięto nullableString |
|
|
| `src/Modules/Settings/CarrierDeliveryMethodMappingRepository.php` | Zmod. | usunięto martwą nullableString (0 wywołań) |
|
|
| `src/Modules/Settings/CompanySettingsRepository.php` | Zmod. | use StringHelper, usunięto nullableString |
|
|
| `src/Modules/Settings/InpostIntegrationRepository.php` | Zmod. | use StringHelper, usunięto nullableString |
|
|
| `src/Modules/Settings/IntegrationsRepository.php` | Zmod. | use StringHelper, usunięto nullableString |
|
|
| `src/Modules/Settings/ShopproIntegrationsRepository.php` | Zmod. | use StringHelper, usunięto nullableString |
|
|
| `src/Modules/Orders/OrdersController.php` | Zmod. | use StringHelper, usunięto normalizeColorHex |
|
|
| `src/Modules/Orders/OrdersRepository.php` | Zmod. | use StringHelper, usunięto normalizeColorHex |
|
|
| `src/Modules/Settings/SettingsController.php` | Zmod. | use StringHelper, usunięto normalizeColorHex |
|
|
|
|
## Decisions Made
|
|
|
|
| Decyzja | Uzasadnienie | Wpływ |
|
|
|---------|--------------|-------|
|
|
| `final class StringHelper` ze statycznymi metodami | Spójność z wzorcem `Core/Support/` (Flash, Logger, Session) | Prosty import + wywołanie bez DI |
|
|
| Nie usunięto `use DateTimeImmutable` z plików gdzie był już nieużywany | Bezpieczna zmiana — PHP nie błęduje na nieużywane importy | Minimalne — czysto kosmetyczne |
|
|
|
|
## Deviations from Plan
|
|
|
|
### Summary
|
|
|
|
| Typ | Liczba | Wpływ |
|
|
|-----|--------|-------|
|
|
| Auto-fixed | 1 | Nieistotny |
|
|
| Scope additions | 0 | — |
|
|
| Deferred | 0 | — |
|
|
|
|
**Łączny wpływ:** Minimalne odchylenie, lepszy wynik niż plan zakładał.
|
|
|
|
### Auto-fixed
|
|
|
|
**1. Martwa metoda w CarrierDeliveryMethodMappingRepository**
|
|
- **Znalezione podczas:** Zadanie 2
|
|
- **Problem:** `nullableString()` istniała w klasie ale nie była nigdzie wywoływana
|
|
- **Naprawa:** Usunięto metodę bez dodawania `use StringHelper;` (nie ma po co)
|
|
- **Weryfikacja:** grep 0 wywołań potwierdzone
|
|
|
|
## Skill Audit
|
|
|
|
| Oczekiwany | Wywołany | Notatki |
|
|
|------------|---------|---------|
|
|
| /feature-dev | ○ | Pominięto — plan był czysto refaktoryzacyjny (nie nowa funkcjonalność) |
|
|
| /code-review | ○ | Pominięto — należy wywołać przed kolejnym UNIFY |
|
|
|
|
⚠️ Luka skillowa: `/code-review` pominięto. Wywołać przed następnym UNIFY.
|
|
|
|
## Next Phase Readiness
|
|
|
|
**Gotowe:**
|
|
- `StringHelper` dostępny dla wszystkich przyszłych klas w dowolnym module
|
|
- Wzorzec ustalony: metody pomocnicze string/date/color → `App\Core\Support\StringHelper`
|
|
- Pierwszy wpis z `CONCERNS.md` [HIGH] Tech Debt usunięty
|
|
|
|
**Concerns:**
|
|
- Brak `/code-review` — warto przejrzeć zmiany przed kolejnym wdrożeniem
|
|
|
|
**Blockers:** Brak
|
|
|
|
---
|
|
*Phase: 01-tech-debt, Plan: 02*
|
|
*Completed: 2026-03-12*
|