146 lines
5.8 KiB
Markdown
146 lines
5.8 KiB
Markdown
---
|
|
phase: 07-pre-expansion-fixes
|
|
plan: 03
|
|
subsystem: ui, security
|
|
tags: [ux, status-colors, ssl-hotfix, delivery-mapping-bug]
|
|
|
|
requires:
|
|
- phase: 07-pre-expansion-fixes
|
|
provides: Plan 07-02 SSL verification (hotfixed here)
|
|
provides:
|
|
- orderpro_to_allegro sync disabled (ok:false + UI disabled)
|
|
- Orders list: source before ID, "ID:" prefix, sourceLabel()
|
|
- Status badges colored by group color_hex from config
|
|
- Darker form borders (#e2e8f0 → #b0bec5)
|
|
- SSL getCaBundlePath() hotfix — nullable, CAINFO only when file exists
|
|
affects: [07-04, 07-05]
|
|
|
|
tech-stack:
|
|
added: []
|
|
patterns: [statusColorMap, sourceLabel, conditional-curlopt-cainfo]
|
|
|
|
key-files:
|
|
modified:
|
|
- src/Modules/Settings/AllegroStatusSyncService.php
|
|
- resources/views/settings/allegro.php
|
|
- src/Modules/Orders/OrdersController.php
|
|
- resources/scss/shared/_ui-components.scss
|
|
- public/assets/css/app.css
|
|
- src/Modules/Settings/AllegroApiClient.php
|
|
- src/Modules/Settings/AllegroOAuthClient.php
|
|
- src/Modules/Settings/ShopproApiClient.php
|
|
- src/Modules/Settings/ApaczkaApiClient.php
|
|
|
|
key-decisions:
|
|
- "sourceLabel() z match expression — mapuje shoppro→shopPRO, allegro→Allegro, erli→Erli"
|
|
- "statusColorMap() z group color_hex — status badge inline style gdy kolor dostępny, fallback na CSS klasy"
|
|
- "SSL CURLOPT_CAINFO warunkowy — null gdy żaden CA bundle nie znaleziony, cURL używa systemowego"
|
|
|
|
patterns-established:
|
|
- "Status coloring: statusColorMap() + inline style background-color + color:#fff"
|
|
- "SSL: getCaBundlePath() nullable + withSslOptions() helper (AllegroApiClient)"
|
|
|
|
duration: ~20min
|
|
started: 2026-03-14
|
|
completed: 2026-03-14
|
|
---
|
|
|
|
# Phase 7 Plan 03: UX Fixes Summary
|
|
|
|
**Disable orderpro_to_allegro sync, source/ID swap w liście zamówień, kolorowanie statusów, ciemniejsze bordery + hotfix SSL CA bundle**
|
|
|
|
## Performance
|
|
|
|
| Metric | Value |
|
|
|--------|-------|
|
|
| Duration | ~20min |
|
|
| Started | 2026-03-14 |
|
|
| Completed | 2026-03-14 |
|
|
| Tasks | 3 completed (+ checkpoint) |
|
|
| Files modified | 10 |
|
|
|
|
## Acceptance Criteria Results
|
|
|
|
| Criterion | Status | Notes |
|
|
|-----------|--------|-------|
|
|
| AC-1: orderpro_to_allegro nie daje false-positive | Pass | `ok: false` w early return |
|
|
| AC-2: Opcja UI disabled | Pass | `disabled` + "(wkrótce)" na option |
|
|
| AC-3: Source przed ID + prefix "ID:" | Pass | sourceLabel() + swap kolejności spanów |
|
|
| AC-4: Statusy kolorowane | Pass | statusColorMap() → inline style background-color |
|
|
| AC-5: Ciemniejsze obramowanie | Pass | --c-border: #e2e8f0 → #b0bec5, CSS rebuilt |
|
|
|
|
## Accomplishments
|
|
|
|
- orderpro_to_allegro sync zwraca ok:false (nie ok:true), opcja UI disabled z "(wkrótce)"
|
|
- Lista zamówień: source (Allegro/shopPRO/Erli) przed ID z prefixem "ID:"
|
|
- Statusy kolorowane kolorem grupy z konfiguracji, fallback na CSS klasy dla niezamapowanych
|
|
- Ciemniejsze obramowanie formularzy w całej aplikacji
|
|
- **Hotfix SSL:** getCaBundlePath() zwraca null gdy żaden CA bundle nie znaleziony — cURL używa systemowego domyślnego, eliminuje błąd na serwerze
|
|
|
|
## Files Created/Modified
|
|
|
|
| File | Change | Purpose |
|
|
|------|--------|---------|
|
|
| `src/Modules/Settings/AllegroStatusSyncService.php` | Modified | ok:true → ok:false dla orderpro_to_allegro |
|
|
| `resources/views/settings/allegro.php` | Modified | disabled + "(wkrótce)" na opcji sync direction |
|
|
| `src/Modules/Orders/OrdersController.php` | Modified | sourceLabel(), statusColorMap(), statusBadge() z kolorem, swap source/ID |
|
|
| `resources/scss/shared/_ui-components.scss` | Modified | --c-border: #b0bec5 |
|
|
| `public/assets/css/app.css` | Rebuilt | CSS z nowym border color |
|
|
| `src/Modules/Settings/AllegroApiClient.php` | Modified | getCaBundlePath() nullable + withSslOptions() |
|
|
| `src/Modules/Settings/AllegroOAuthClient.php` | Modified | getCaBundlePath() nullable, warunkowy CAINFO |
|
|
| `src/Modules/Settings/ShopproApiClient.php` | Modified | getCaBundlePath() nullable, warunkowy CAINFO |
|
|
| `src/Modules/Settings/ApaczkaApiClient.php` | Modified | getCaBundlePath() nullable, warunkowy CAINFO |
|
|
|
|
## Decisions Made
|
|
|
|
| Decision | Rationale | Impact |
|
|
|----------|-----------|--------|
|
|
| sourceLabel() match expression | Czytelne mapowanie 3 znanych źródeł + ucfirst fallback | Łatwe do rozszerzenia o nowe źródła |
|
|
| Status color inline style | group color_hex z konfiguracji; brak kolumny color w wierszu zamówienia | Nie wymaga migracji, kolor pochodzi z istniejącej tabeli order_status_groups |
|
|
| SSL CAINFO warunkowy | Serwer produkcyjny nie ma lokalnych CA bundle paths, cURL ma wbudowany systemowy | Eliminuje błąd "error setting certificate verify locations" |
|
|
|
|
## Deviations from Plan
|
|
|
|
### Summary
|
|
|
|
| Type | Count | Impact |
|
|
|------|-------|--------|
|
|
| Auto-fixed | 1 | Critical — SSL hotfix z planu 07-02 |
|
|
| Scope additions | 0 | - |
|
|
| Deferred | 1 | Pre-existing bug |
|
|
|
|
### Auto-fixed Issues
|
|
|
|
**1. SSL CA bundle path error na serwerze**
|
|
- **Found during:** Checkpoint verification (user report)
|
|
- **Issue:** getCaBundlePath() zwracał hardcoded path który nie istnieje na serwerze → cURL error
|
|
- **Fix:** getCaBundlePath() zwraca null gdy brak pliku; CURLOPT_CAINFO ustawiany warunkowo
|
|
- **Files:** 4 ApiClient klasy
|
|
- **Verification:** User potwierdzi po deploy
|
|
|
|
### Deferred Items
|
|
|
|
- **Pre-existing:** Pole "Szukaj..." w mapowaniu form dostawy Allegro — JS `attachSelectFilter()` tworzy input search dla InPost/Apaczka selectów, layout myląco wygląda jakby należał do wiersza powyżej
|
|
|
|
## Issues Encountered
|
|
|
|
| Issue | Resolution |
|
|
|-------|------------|
|
|
| SSL error na serwerze produkcyjnym | getCaBundlePath() → nullable, CAINFO warunkowy |
|
|
|
|
## Next Phase Readiness
|
|
|
|
**Ready:**
|
|
- UX fixes wdrożone, lista zamówień czytelniejsza
|
|
- Plan 07-04 (testy) niezależny
|
|
|
|
**Concerns:**
|
|
- Delivery mapping "Szukaj..." layout — pre-existing, do naprawy osobno
|
|
|
|
**Blockers:**
|
|
- None
|
|
|
|
---
|
|
*Phase: 07-pre-expansion-fixes, Plan: 03*
|
|
*Completed: 2026-03-14*
|