Files
orderPRO/.paul/PROJECT.md
Jacek Pyziak b9f639e037 feat(16-automated-tasks): moduł zadań automatycznych — CRUD + watcher/executor
Reguły automatyzacji oparte na zdarzeniach (receipt.created) z warunkami
(integracja/kanał sprzedaży, AND logic) i akcjami (wyślij e-mail z 3 trybami
odbiorcy: klient / firma / klient+firma). Trigger w ReceiptController po
utworzeniu paragonu — błąd automatyzacji nie blokuje sukcesu paragonu.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 00:39:47 +01:00

7.1 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.5.0
Status v0.5 Complete
Last Updated 2026-03-18

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
  • 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
  • Zadania automatyczne — reguły zdarzenie/warunki/akcje (CRUD + watcher/executor) — Phase 16

Active (In Progress)

  • (brak — v0.6 do zaplanowania)

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)