From 5bce68c56bf2f012b6f6d5a3fee18c31ad529e47 Mon Sep 17 00:00:00 2001 From: Jacek Pyziak Date: Tue, 10 Mar 2026 21:37:04 +0100 Subject: [PATCH] docs: define v1 requirements Co-Authored-By: Claude Opus 4.6 --- .planning/REQUIREMENTS.md | 54 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 .planning/REQUIREMENTS.md diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md new file mode 100644 index 0000000..3d722b7 --- /dev/null +++ b/.planning/REQUIREMENTS.md @@ -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*