refactor(01-tech-debt): extract AllegroTokenManager and StringHelper

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>
This commit is contained in:
2026-03-12 23:36:06 +01:00
parent 4c3daf69b7
commit f8db8c0162
26 changed files with 1374 additions and 547 deletions

61
.paul/STATE.md Normal file
View File

@@ -0,0 +1,61 @@
# Project State
## Project Reference
See: .paul/PROJECT.md (updated 2026-03-12)
**Core value:** Sprzedawca może obsługiwać zamówienia ze wszystkich kanałów sprzedaży i nadawać przesyłki bez przełączania się między platformami.
**Current focus:** Faza 01 — Tech Debt: KOMPLETNA. Gotowy na Fazę 02.
## Current Position
Milestone: v0.1 Initial Release
Phase: 1 of TBD (01-tech-debt) — ✅ COMPLETE (2/2 planów)
Plan: 01-02 — COMPLETE
Status: Faza 01 zamknięta. Gotowy na PLAN Fazy 02.
Last activity: 2026-03-12 — UNIFY 01-02 complete, faza 01 transitioned
Progress:
- Milestone: [█░░░░░░░░░] ~10%
- Phase 1: [██████████] 100%
## Loop Position
Current loop state:
```
PLAN ──▶ APPLY ──▶ UNIFY
✓ ✓ ✓ [Loop complete — ready for next PLAN]
```
## Accumulated Context
### Decisions
| Data | Decyzja | Faza | Wpływ |
|------|---------|------|-------|
| 2026-03-12 | 401 retry zastąpiony przez tokenManager->resolveToken() zamiast publicznej forceRefresh() | Faza 01 | Marginalny edge case — retry nie wymusza refreshu gdy token wg daty ważny |
| 2026-03-12 | AllegroTokenManager wydzielony z 4 klas OAuth | Faza 01 | Centralizacja logiki tokenów, brak duplikacji |
| 2026-03-12 | StringHelper jako final static class w Core/Support | Faza 01 | 19 duplikatów helperów usunięte z 15 klas |
### Skill Audit (Faza 01, Plan 02)
| Oczekiwany | Wywołany | Uwagi |
|------------|---------|-------|
| /feature-dev | ○ | Pominięto — plan był czysto refaktoryzacyjny |
| /code-review | ○ | Pominięto — należy wywołać przed kolejnym UNIFY |
| sonar-scanner | ○ | Nie uruchomiono — należy uruchomić i zaktualizować DOCS/todo.md |
### Deferred Issues
- **CI/CD SonarQube** — dodać GitHub Actions workflow (`.github/workflows/sonarqube.yml`) który odpala `sonar-scanner` automatycznie przy każdym pushu. Token projektu: `sqp_8ef2748d037777cf00cf1b38534f8d435b762d7d` (dodać jako GitHub Secret `SONAR_TOKEN`). Przypisać do fazy związanej z infrastrukturą/DevOps gdy tylko fazy zostaną zdefiniowane.
- **code-review** — wywołać /code-review przed kolejnym UNIFY (pominięto w obydwu planach fazy 01).
### Blockers/Concerns
Brak.
## Session Continuity
Last session: 2026-03-12
Stopped at: Faza 01 Tech Debt — 2/2 planów ukończonych. Tranzycja kompletna.
Next action: /paul:plan (Faza 02 — do zdefiniowania na podstawie CONCERNS.md)
Resume file: .paul/ROADMAP.md
---
*STATE.md — Updated after every significant action*