chore(milestone): complete v0.1 Initial Release — archive, MILESTONES.md, ROADMAP reorganized
v0.1 Initial Release: 6 phases, 15 plans complete. - Created .paul/MILESTONES.md with milestone entry - Archived to .paul/milestones/v0.1-ROADMAP.md - ROADMAP.md reorganized (milestone collapsed to Completed section) - STATE.md cleared for next milestone Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
55
.paul/MILESTONES.md
Normal file
55
.paul/MILESTONES.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# Milestones
|
||||
|
||||
Completed milestone log for this project.
|
||||
|
||||
| Milestone | Completed | Duration | Stats |
|
||||
|-----------|-----------|----------|-------|
|
||||
| v0.1 Initial Release | 2026-03-13 | 2 days | 6 phases, 15 plans |
|
||||
|
||||
---
|
||||
|
||||
## ✅ v0.1 Initial Release
|
||||
|
||||
**Completed:** 2026-03-13
|
||||
**Duration:** 2 days (2026-03-12 → 2026-03-13)
|
||||
|
||||
### Stats
|
||||
|
||||
| Metric | Value |
|
||||
|--------|-------|
|
||||
| Phases | 6 |
|
||||
| Plans | 15 |
|
||||
| Files changed | ~45 |
|
||||
|
||||
### Key Accomplishments
|
||||
|
||||
- **AllegroTokenManager** wydzielony z 4 klas — usunięto ~85 linii duplikatu logiki OAuth
|
||||
- **StringHelper** centralizuje 19 kopii helperów (nullableString, normalizeDateTime, normalizeColorHex) z 15+ klas
|
||||
- **CronHandlerFactory** jako jedyne miejsce kompozycji crona — naprawiono rozbieżność Application.php / bin/cron.php + 2 bugi w zależnościach
|
||||
- **ZPL label page size** naprawiony — martwy warunek `'ZPL' ? 'A6' : 'A6'` → `'ZPL' ? 'A6' : 'A4'`
|
||||
- **AllegroStatusSyncService** — kursor `last_status_checked_at` eliminuje skanowanie wszystkich zamówień
|
||||
- **ShopproOrderSyncStateRepository** — poprawna zależność (poprzednio używano Allegro repo)
|
||||
- **CSRF standardization** — `_csrf_token` → `_token` w całym projekcie
|
||||
- **5 kompensujących migracji** zaadnotowanych — DB_SCHEMA.md ma sekcję Compensating Migrations
|
||||
- **Flash::set()/Flash::get()** — 10 bezpośrednich `$_SESSION` writes zastąpiono w kontrolerach
|
||||
- **Typowane wyjątki** — hierarchia OrderProException (6 klas) eliminuje 95× RuntimeException
|
||||
- **Stałe IntegrationSources + RedirectPaths** — 40+ powtarzających się literałów zebranych w 2 klasy
|
||||
- **Złożoność kognitywna** — loadDeliveryServices() w 2 kontrolerach spłaszczone z 5 do 2 poziomów zagnieżdżenia
|
||||
- **ShopproOrdersSyncService** podzielony 39→9 metod via ShopproOrderMapper + ShopproProductImageResolver
|
||||
- **AllegroIntegrationController** podzielony 35→25 metod via 2 nowe kontrolery mapowań
|
||||
- **SonarQube S1448** zredukowane 6x → 2x; S112 z 95x do 0; S1192 z 40x do 0
|
||||
|
||||
### Key Decisions
|
||||
|
||||
| Decision | Rationale |
|
||||
|----------|-----------|
|
||||
| AllegroTokenManager wydzielony z 4 klas | Eliminacja duplikacji logiki odświeżania tokenów |
|
||||
| StringHelper jako final static class | Centralizacja 19 kopii helperów |
|
||||
| CronHandlerFactory — jedyne miejsce kompozycji crona | Synchronizacja Application.php i bin/cron.php |
|
||||
| CSRF pole: `_token` (nie `_csrf_token`) | Standard dla całego projektu |
|
||||
| Flash::set()/Flash::get() zamiast $_SESSION | Jeden mechanizm flash w całej aplikacji |
|
||||
| validateXxxInput(): ?string / validateXxxAccess(): ?Response | Wzorzec helperów walidacji — ≤3 return statements |
|
||||
| God class split via move-method | Czysty podział bez zmiany logiki — ShopproOrdersSyncService 39→9 metod |
|
||||
| AllegroIntegrationController pozostaje przy 25 metodach | Pełny podział wymaga AllegroImportScheduleService — deferred |
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user