Files
orderPRO/.paul/STATE.md
Jacek Pyziak 3223aac4d9 feat(13-email-mailboxes): phase 13 complete — email DB foundation + SMTP mailbox CRUD
3 migrations (email_mailboxes, email_templates, email_logs), full CRUD
for SMTP mailboxes with encrypted passwords (IntegrationSecretCipher),
native SMTP connection test via stream_socket_client, sidebar navigation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 23:57:33 +01:00

8.6 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: v0.4 Moduł E-mail — Skrzynki pocztowe, szablony wiadomości, wysyłka z zamówień.

Current Position

Milestone: v0.4 Moduł E-mail Phase: [1] of [3] (DB + Skrzynki pocztowe) — Complete Plan: 13-01 complete Status: Phase 13 complete, ready for Phase 14 Last activity: 2026-03-15 — UNIFY 13-01 complete, phase transition done

Progress:

  • v0.1 Initial Release: [██████████] 100% ✓
  • v0.2 Pre-Expansion Fixes: [██████████] 100% ✓
  • v0.3 Moduł Paragonów: [██████████] 100% ✓
  • v0.4 Moduł E-mail: [███░░░░░░░] 33%
    • Phase 13: [██████████] 100% ✓
    • Phase 14: [░░░░░░░░░░] 0%
    • Phase 15: [░░░░░░░░░░] 0%

Loop Position

Current loop state:

PLAN ──▶ APPLY ──▶ UNIFY
  ✓        ✓        ✓     [Loop complete — Phase 13 done, ready for Phase 14]

Accumulated Context

Decisions

Data Decyzja Faza Wpływ
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

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 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).
  • 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: 22fc330 (feat(11-12-accounting): phases 11-12 complete — milestone v0.3 done) Branch: main Feature branches merged: none

Blockers/Concerns

Brak.

Session Continuity

Last session: 2026-03-15 Stopped at: Phase 13 complete Next action: /paul:plan for Phase 14 (Szablony wiadomości) Resume file: .paul/phases/13-email-mailboxes/13-01-SUMMARY.md Resume context:

  • v0.1: COMPLETE ✓ (6 phases, 15 plans)
  • v0.2: COMPLETE ✓ (1 phase, 5 plans)
  • v0.3: COMPLETE ✓ (5 phases, 5 plans) — Moduł Paragonów
  • v0.4: IN PROGRESS — Phase 13 complete, Phase 14 next
  • Faza 0 (nieaktywne przyciski) zrobiona poza planem

STATE.md — Updated after every significant action