Files
orderPRO/.paul/PROJECT.md
Jacek Pyziak 2f73a940de feat(14-email-templates): CRUD szablonów e-mail z Quill.js + załączniki
Phase 14 complete (2 plans):
- 14-01: CRUD szablonów, Quill.js editor, system zmiennych {{grupa.pole}}, podgląd, toggle
- 14-02: Select "Załącznik nr 1" z mapą ATTACHMENT_TYPES, kolumna w liście, migracja attachment_1

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

7.0 KiB

orderPRO

What This Is

Aplikacja do zarządzania zamówieniami pobieranymi z wielu źródeł sprzedaży (Allegro, Erli, własne sklepy internetowe). Umożliwia generowanie etykiet przewozowych u kurierów oraz docelowo zarządzanie produktami i stanami magazynowymi w jednym miejscu.

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 State

Attribute Value
Version 0.3.0
Status v0.3 Complete
Last Updated 2026-03-15

Requirements

Validated (Shipped)

  • Integracja z Allegro — pobieranie zamówień
  • Generowanie etykiet (InPost)
  • Performance: N+1 subqueries fix, DB indexes — Phase 7
  • Stability: SSL verification, cron throttle — Phase 7
  • UX: orderpro-to-allegro disable, lista zamówień poprawki — Phase 7
  • Unit tests: AllegroTokenManager, AllegroOrderImportService (12 testów) — Phase 7
  • InPost ShipX API: natywny provider niezależny od Allegro — Phase 7
  • DB Foundation: tabele receipts, receipt_configs, receipt_number_counters + company_settings extended — Phase 8
  • Konfiguracja paragonów (CRUD w Ustawienia > Księgowość) — Phase 9
  • Wystawianie paragonów z zamówienia (formularz, snapshoty, atomowe numerowanie) — Phase 10
  • Podgląd i wydruk paragonu (HTML+PDF, dompdf) — Phase 11
  • Sekcja Księgowość — lista paragonów z filtrami, paginacją, eksportem XLSX — Phase 12

Active (In Progress)

  • DB Foundation: tabele email_mailboxes, email_templates, email_logs — Phase 13
  • Skrzynki pocztowe SMTP (CRUD + test połączenia) — Phase 13
  • Szablony wiadomości e-mail (CRUD + Quill.js + system zmiennych + załączniki) — Phase 14
  • Wysyłka e-mail z zamówień (resolwer zmiennych, załączniki, log) — Phase 15

Planned (Next)

  • Zarządzanie produktami
  • Zarządzanie stanami magazynowymi

Out of Scope

  • [Do zdefiniowania podczas planowania]

Target Users

Primary: Sprzedawcy wielokanałowi (Allegro, Erli, własny sklep)

  • Obsługują zamówienia z wielu platform jednocześnie
  • Potrzebują szybkiego nadawania przesyłek
  • Chcą jednego miejsca do zarządzania sprzedażą

Context

Business Context: Rynek narzędzi do zarządzania sprzedażą wielokanałową (podobne rozwiązania: base.com, apilo.com). Aplikacja budowana jako własne rozwiązanie.

Technical Context: PHP (XAMPP/Laravel), integracje z API marketplace'ów (Allegro, Erli) oraz API przewoźników (InPost i inne).

Constraints

Technical Constraints

  • PHP/XAMPP — środowisko Windows lokalne
  • Medoo + prepared statements (bez sklejania SQL)
  • Brak natywnych alert()/confirm() — używać window.OrderProAlerts
  • Metody pomocnicze string/date/color → App\Core\Support\StringHelper (nie powielać w klasach)
  • Zarządzanie tokenami OAuth Allegro → App\Modules\Settings\AllegroTokenManager
  • Kompozycja obiektów crona → App\Modules\Cron\CronHandlerFactory (jedyne miejsce new AllegroIntegrationRepository i in. w kontekście crona)
  • Pole CSRF w formularzach HTTP: zawsze _token (nie _csrf_token)

Business Constraints

  • [Do zdefiniowania podczas planowania]

Key Decisions

Decision Rationale Date Status
Własne rozwiązanie zamiast gotowego SaaS Pełna kontrola nad funkcjonalnością 2026-03-12 Active
AllegroTokenManager wydzielony z 4 klas OAuth Eliminacja duplikacji logiki odświeżania tokenów 2026-03-12 Active
StringHelper jako final static class w Core/Support Centralizacja 19 kopii helperów string/date/color z 15+ klas 2026-03-12 Active
CronHandlerFactory jako jedyne miejsce kompozycji crona Application.php i bin/cron.php były rozsynchronizowane — 2 bugi w bin/cron.php 2026-03-13 Active
Pole CSRF w formularzach: _token (nie _csrf_token) Standardyzacja na nazwę używaną przez większość kodu (10+ kontrolerów); eliminacja ryzyka pomyłki przy nowych formularzach 2026-03-13 Active
Flash messages: Flash::set('module.type') / Flash::get('module.type', '') Jeden wzorzec w całej aplikacji; eliminacja bezpośrednich zapisów $_SESSION 2026-03-13 Active
validateXxxInput(): ?string i validateXxxAccess(): ?Response jako wzorce helperów walidacji Redukcja return statements do ≤3; spójny wzorzec kontrolerów 2026-03-13 Active
God class split via move-method bez zmiany logiki ShopproOrdersSyncService 39→9 metod; AllegroIntegrationController 35→25 — czysty podział przez ekstrakcję klas 2026-03-13 Active
AllegroIntegrationController pozostaje przy 25 metodach (nie ≤15) Pełny podział wymaga AllegroImportScheduleService — poza zakresem v0.1 2026-03-13 Active
dg/bypass-finals do testów final classes Wszystkie klasy final — mockowanie przez bypass-finals zamiast usuwania final 2026-03-15 Active
InPost ShipX API zamiast Allegro WZA remap InpostIntegrationRepository jest pod ShipX; niezależność od Allegro 2026-03-15 Active
vendor/ w ftp-kr ignore Auto-upload dev deps na serwer powodował Fatal Error 2026-03-15 Active
Snapshot pattern: seller/buyer/items jako JSON w receipts Dane zamrożone w momencie wystawienia — niezależne od przyszłych zmian źródła 2026-03-15 Active
Atomowe numerowanie paragonów: INSERT ON DUPLICATE KEY UPDATE Bezpieczne generowanie kolejnych numerów bez race conditions 2026-03-15 Active
Moduł Accounting w osobnym namespace App\Modules\Accounting — separacja od Settings 2026-03-15 Active
ATTACHMENT_TYPES jako centralna mapa typów załączników Rozszerzalność: nowy typ = 1 linia w tablicy PHP, bez zmian DB/widoku 2026-03-16 Active
Quill.js 2.0.3 CDN dla edytora szablonów Brak build pipeline w projekcie; CDN prostszy 2026-03-16 Active

Success Metrics

Metric Target Current Status
Liczba zintegrowanych źródeł zamówień ≥3 2 (Allegro, Erli) In progress
Generowanie etykiet Działa InPost In progress

Tech Stack

Layer Technology Notes
Framework PHP (custom/Laravel) XAMPP lokalnie
Frontend HTML/CSS/JS + SCSS jQuery Alerts module
Database MySQL (Medoo) Prepared statements
Auth Sesje PHP
Integracje Allegro API, Erli API Przewoźnicy: InPost (ShipX), Apaczka
Testing PHPUnit 11.5 + dg/bypass-finals Unit tests w tests/Unit/

Specialized Flows

See: .paul/SPECIAL-FLOWS.md

Quick Reference:

  • /feature-dev → Nowe funkcjonalności i integracje (optional)
  • /code-review → Przegląd kodu przed UNIFY (optional)
  • /frontend-design → Komponenty UI i widoki (optional)
  • /simplify → Refaktoryzacja po implementacji (optional)

PROJECT.md — Updated when requirements or context change Last updated: 2026-03-16 after Phase 14 (Szablony wiadomości e-mail complete)