16 KiB
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: v1.5 completed - phases 40-43 delivered
Current Position
Milestone: v1.5 Operational Workflow Cleanup Phase: [4] of [4] (Print Queue Entry Removal) - Unified Plan: 43-01 completed with summary Status: PLAN/APPLY/UNIFY closed for phases 40-43 Last activity: 2026-03-25 23:59 - Completed phases 41-43 and updated docs/summaries
Progress:
- v0.1 Initial Release: [##########] 100% done
- v0.2 Pre-Expansion Fixes: [##########] 100% done
- v0.3 Moduł Paragonów: [##########] 100% done
- v0.4 Moduł E-mail: [##########] 100% done
- v0.5 Moduł Automatyzacji: [##########] 100% done
- v0.6 Poprawki UX: [##########] 100% done
- v0.7 Zdalne drukowanie etykiet: [##########] 100% done
- v0.8 Poprawki źródła zamówień: [##########] 100% done
- v0.9 Poprawki ustawień firmy: [##########] 100% done
- v1.0 Presety przesyłek: [##########] 100% done
- v1.1 Ręczny numer przesyłki: [##########] 100% done
- v1.2 Śledzenie przesyłek: [##########] 100% done
- Phase 27: [##########] 100% done (1/1 plans)
- Phase 28: [##########] 100% done (1/1 plans)
- v1.3 Konfiguracja śledzenia przesyłek: [##########] 100% done
- Phase 29: [##########] 100% done (1/1 plans)
- v1.4 UI Readability Tweaks: [##########] 100% done
- Phase 30: [##########] 100% done (1/1 plans)
- v1.5 Operational Workflow Cleanup: [##########] 100% done
- Phase 40: [##########] Complete (1/1 plans)
- Phase 41: [##########] Complete (1/1 plans)
- Phase 42: [##########] Complete (1/1 plans)
- Phase 43: [##########] Complete (1/1 plans)
Loop Position
Current loop state:
PLAN --> APPLY --> UNIFY
done done done [Loop closed for phases 40-43]
Accumulated Context
Decisions
| Data | Decyzja | Faza | Wpływ |
|---|---|---|---|
| 2026-03-25 | Import Allegro: trigger context + deduplikacja logow (source_order_id + source_updated_at + trigger) |
Faza 41 | Czytelniejsza historia zamowienia i mniej duplikatow wpisow import |
| 2026-03-25 | Automatyzacja: event shipment.status_changed z warunkiem shipment_status (mapowanie biznes->techniczny) |
Faza 42 | Reguly moga reagowac na realny status dostawy bez przebudowy engine |
| 2026-03-25 | Tracking cron triggeruje automatyzacje tylko przy realnej zmianie delivery_status |
Faza 42 | Brak falszywych triggerow i mniejszy szum automatyzacji |
| 2026-03-25 | Kolejka druku: usuwanie wpisu przez panel ustawien z OrderProAlerts.confirm |
Faza 43 | Operator moze bezpiecznie czyscic kolejke bez operacji SQL |
| 2026-03-25 | Override required skill: sonar-scanner pominięty w APPLY 40-01 (uruchomienie przesunięte przed UNIFY) |
Faza 40 | Kontynuacja wdrożenia bez blokady, z jawnym ryzykiem jakości do domknięcia w UNIFY |
| 2026-03-25 | Rozdzielenie tokenow kolorow akcji (--c-action-primary) od naglowkow (--c-primary) |
Faza 30 | Lepsza czytelnosc UI i szybsze rozpoznanie CTA |
| 2026-03-23 | Dwupoziomowy system statusów: normalized + raw z API | Faza 27 | Max szczegółowość dla usera + spójna logika filtrowania |
| 2026-03-23 | Osobny ShipmentTrackingInterface (nie rozszerzenie ShipmentProviderInterface) | Faza 27 | Czysta separacja tracking vs creation; łatwe dodawanie providerów |
| 2026-03-23 | Idempotentne migracje (IF NOT EXISTS + INSERT IGNORE) | Faza 27 | Bezpieczne re-run migracji |
| 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 |
| 2026-03-13 | CronHandlerFactory jako jedyne miejsce kompozycji crona | Faza 02 | Application.php i bin/cron.php zsynchronizowane; 2 bugi naprawione |
| 2026-03-13 | Pole CSRF w formularzach: _token (nie _csrf_token) |
Faza 03 | Ustandaryzowane w OrdersController, ShipmentController i 2 widokach |
| 2026-03-13 | Flash messages: Flash::set('module.type') / Flash::get('module.type', '') | Faza 05 | OrdersController i ShipmentController zmigrowane; jeden wzorzec w całej aplikacji |
| 2026-03-13 | validateXxxInput(): ?string i validateXxxAccess(): ?Response jako wzorce helperów walidacji | Faza 06 | Redukcja return statements do ≤3; wzorzec do użycia w kolejnych planach |
| 2026-03-15 | dg/bypass-finals zamiast usuwania final z klas produkcyjnych | Faza 07 | Testy mockujÄ… final classes bez zmiany konwencji projektu |
| 2026-03-15 | 3 bugi use-statement naprawione (odkryte przez testy) | Faza 07 | RuntimeException catch w 401 retry wreszcie działa; AllegroOAuthException rzucane poprawnie |
| 2026-03-15 | InPost ShipX API (nie Allegro WZA) jako natywny provider | Faza 07 | InpostShipmentService niezależny od Allegro; workaround remap usunięty |
| 2026-03-15 | vendor/ dodany do ftp-kr ignore; deploy vendor ręcznie | Faza 07 | Auto-upload nie nadpisze vendor/ na serwerze |
| 2026-03-15 | Snapshot pattern: seller/buyer/items jako JSON | Faza 10 | Dane zamroĹĽone w momencie wystawienia paragonu |
| 2026-03-15 | Natywny stream_socket_client do testu SMTP (bez PHPMailer) | Faza 13 | Test połączenia SMTP bez nowych zależności; PHPMailer w fazie 15 |
| 2026-03-15 | IntegrationSecretCipher do szyfrowania haseł SMTP | Faza 13 | Reuse istniejącego AES-256-CBC+HMAC; spójny wzorzec |
| 2026-03-15 | Auto-reset is_default na email_mailboxes przy save | Faza 13 | Tylko jedna domyślna skrzynka |
| 2026-03-15 | Atomowe numerowanie: INSERT ON DUPLICATE KEY UPDATE | Faza 10 | Bezpieczne kolejne numery paragonĂłw |
| 2026-03-15 | Moduł Accounting w App\Modules\Accounting | Faza 10 | Separacja od Settings |
| 2026-03-15 | dompdf v3.1 server-side PDF generation | Faza 11 | Nowa zależność composer; wymaga vendor/ na serwerze |
| 2026-03-15 | ftp-kr vendor/ nie ignorowany (zmiana na /vendor/bin) | Faza 11 | Automatyczny upload vendor/ przy zmianach; rewizja decyzji z fazy 07 |
| 2026-03-15 | PhpSpreadsheet v5.5 dla eksportu XLSX | Faza 12 | Nowa zależność composer; XLSX lepszy od CSV dla księgowości |
| 2026-03-15 | POST eksport z CSRF + dwa tryby (zaznaczone/wszystkie z filtra) | Faza 12 | Bezpieczny eksport; selectable table-list reuse |
| 2026-03-16 | ATTACHMENT_TYPES jako centralna mapa typów załączników | Faza 14 | Rozszerzalność: nowy typ = 1 linia w tablicy PHP |
| 2026-03-16 | Quill.js 2.0.3 CDN dla edytora szablonĂłw | Faza 14 | Brak build pipeline; CDN prostszy |
| 2026-03-17 | PHPMailer v7.0.2 jako SMTP transport | Faza 15 | Nowa zależność composer; in-memory attachments (addStringAttachment) |
| 2026-03-17 | Email history jako wpisy w order_activity_log (nie osobna sekcja) | Faza 15 | Spójność z istniejącym UX — jeden timeline zamiast fragmentacji |
| 2026-03-17 | VariableResolver wydzielony z EmailTemplateController | Faza 15 | Reuse logiki zmiennych; resolwer niezaleĹĽny od kontrolera szablonĂłw |
Skill Audit (Faza 43, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | override | Pominięto na podstawie explicit user override; lint PHP + build CSS + grep PASS |
Skill Audit (Faza 42, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | override | Pominięto na podstawie explicit user override; lint PHP + grep PASS |
Skill Audit (Faza 41, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | override | Pominięto na podstawie explicit user override; lint PHP + grep PASS |
Skill Audit (Faza 40, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | override | Pominięto na podstawie explicit user override; lint PHP + grep PASS |
Skill Audit (Faza 29, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | âś“ | 0 nowych unikalnych issues; 3x S1192 pre-existing DeliveryStatus, 1x S1142 pre-existing matchCarrierByName, 2x accessibility minor (pre-existing pattern) |
Skill Audit (Faza 28, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | âś“ | 0 nowych unikalnych issues; 1x S1448 CronRepository (22 metod, pre-existing pattern) |
Skill Audit (Faza 27, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | âś“ | 0 nowych unikalnych issues; 3 pre-existing patterns (2x S1192 DeliveryStatus, 1x S1172 handler) |
Skill Audit (Faza 26, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | âś“ | 0 nowych issues; 8 pre-existing na ShipmentController (S3776, S1192, S1142, S3358) |
Skill Audit (Faza 25, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | âś“ | 0 nowych issues na zmienionych plikach |
Skill Audit (Faza 24, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | âś“ | 0 nowych issues na zmienionych plikach |
Skill Audit (Faza 23, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | âś“ | 0 issues na nowych plikach |
Skill Audit (Faza 22, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | âś“ | 0 nowych issues na zmienionym pliku; 1 pre-existing S1172 |
Skill Audit (Faza 21, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | âś“ | 0 nowych issues na zmienionych plikach; 18 pre-existing |
Skill Audit (Faza 20, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | n/a | Projekt C# — poza zakresem skanera PHP |
Skill Audit (Faza 19, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | âś“ | 0 nowych blocker/critical; 4 minor/major zalogowane w DOCS/todo.md |
Skill Audit (Faza 18, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | ○ | Required — do uruchomienia przed kolejnym UNIFY |
Skill Audit (Faza 17, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | âś“ | 0 nowych issues na zmienionych plikach |
Skill Audit (Faza 15, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | ○ | Required — do uruchomienia przed kolejnym milestone |
Skill Audit (Faza 14, Plan 02)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | ○ | Required — do uruchomienia przed kolejnym UNIFY |
Skill Audit (Faza 13, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | ○ | Required — do uruchomienia przed kolejnym UNIFY |
Skill Audit (Faza 12, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | ○ | Required — do uruchomienia przed kolejnym UNIFY |
Skill Audit (Faza 11, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | ○ | Required — do uruchomienia przed kolejnym UNIFY |
Skill Audit (Faza 10, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | ○ | Required — do uruchomienia przed kolejnym UNIFY |
Skill Audit (Faza 07, Plan 05)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | â—‹ | Zainstalowany (v4.3.5) ale nie uruchomiony w tym planie |
Skill Audit (Faza 07, Plan 04)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | ○ | Pominięto — brak instalacji w PATH |
Skill Audit (Faza 07, Plan 03)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | ○ | Pominięto — brak instalacji w PATH |
Skill Audit (Faza 07, Plan 02)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | ○ | Pominięto — brak instalacji w PATH |
Skill Audit (Faza 07, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | ○ | Pominięto — brak instalacji w PATH |
Skill Audit (Faza 06, Plan 06)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | ○ | Pominięto — brak instalacji w PATH |
Skill Audit (Faza 06, Plan 02)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | ○ | Pominięto — brak instalacji w PATH; S1142 violations powinny spaść o ~12-15 po uruchomieniu |
Skill Audit (Faza 05, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | ○ | Pominięto — uruchomić ręcznie przed następnym planem z kodem PHP |
Skill Audit (Faza 04, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | ○ | Pominięto — plan czysto dokumentacyjny (komentarze SQL, brak nowego kodu PHP); uruchomić przy kolejnym planie z kodem |
Skill Audit (Faza 03, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| sonar-scanner | ○ | Pominięto — przejście do UNIFY bez skanowania; uruchomić przy kolejnym planie |
Skill Audit (Faza 02, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|---|---|---|
| /code-review | ○ | Pominięto — jednolinijkowa naprawa oczywistego dead code |
| sonar-scanner | ○ | Pominięto — brak nowego kodu, zmiana kosmetyczna |
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 odpalasonar-scannerautomatycznie przy każdym pushu. Token projektu:sqp_8ef2748d037777cf00cf1b38534f8d435b762d7d(dodać jako GitHub SecretSONAR_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).
- Delivery mapping "Szukaj..." layout — JS
attachSelectFilter()w allegro.php tworzy input search dla InPost/Apaczka selectów, wizualnie wygląda jakby należał do wiersza powyżej. Pre-existing bug, do naprawy osobno.
Git State
Last commit: 3610571 — feat(v1.5): complete phases 40-43 workflow cleanup
Branch: main
Feature branches merged: none
Blockers/Concerns
Brak.
Session Continuity
Last session: 2026-03-25 23:59 Stopped at: v1.5 phases 40-43 completed (summaries + docs + state updated) Next action: Start next milestone planning ($paul-milestone or $paul-plan for next TODO batch) Resume file: .paul/ROADMAP.md Resume context:
- v0.1-v1.4: COMPLETE done (30 phases, 42 plans)
- v1.5: COMPLETE done (phases 40-43)
STATE.md — Updated after every significant action