docs: define v1 requirements

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-10 21:37:04 +01:00
parent 7501ecbcd7
commit 5bce68c56b

54
.planning/REQUIREMENTS.md Normal file
View File

@@ -0,0 +1,54 @@
# Requirements: PomyslowePrezenty.pl
**Defined:** 2026-03-10
**Core Value:** Sklep musi działać stabilnie — klienci mogą bez problemów składać zamówienia i płacić
## v1 Requirements
### Zamówienia
- [ ] **ORD-01**: Zamówienie jest tworzone dokładnie raz — wielokrotny submit formularza nie tworzy duplikatów
- [ ] **ORD-02**: Mechanizm ochrony przed ponownym wysłaniem zamówienia (token jednorazowy lub lock)
- [ ] **ORD-03**: createFromBasket() opakowane w transakcję DB — insert zamówienia, dekrementacja stanu magazynowego i zużycie kuponu jako operacja atomowa
## v2 Requirements
### Integralność zamówień
- **ORD-04**: Unikalność numerów zamówień — fix race condition w generateOrderNumber()
### Bezpieczeństwo płatności
- **PAY-01**: Idempotentność webhooków Tpay — guard na status `paid`
- **PAY-02**: Idempotentność webhooków Przelewy24 — wzmocnienie istniejącego guardu
- **PAY-03**: Idempotentność webhooków Hotpay + przeniesienie hardcoded secretu do config
### Spójność cen
- **PRICE-01**: Spójność kalkulacji cen między BasketCalculator::summaryPrice() a OrderRepository::calculateOrderSummaryByAdmin()
## Out of Scope
| Feature | Reason |
|---------|--------|
| Nowe funkcje sklepu | Osobny milestone po stabilizacji |
| Redesign frontend | Nie jest priorytetem |
| Migracja na framework | Projekt zostaje na autorskim rozwiązaniu |
| Refaktor architektury | Bugfix-first, refaktor osobno |
## Traceability
| Requirement | Phase | Status |
|-------------|-------|--------|
| ORD-01 | Phase 1 | Pending |
| ORD-02 | Phase 1 | Pending |
| ORD-03 | Phase 1 | Pending |
**Coverage:**
- v1 requirements: 3 total
- Mapped to phases: 3
- Unmapped: 0 ✓
---
*Requirements defined: 2026-03-10*
*Last updated: 2026-03-10 after initial definition*