Critical Path
LOY-001
→
LOY-002
→
LOY-003
→
LOY-007
→
LOY-008
→
LOY-011
→
LOY-014
→
LOY-017
Week 1 — Foundation
LOY-001
Scaffold loyalty-service NestJS microservice
NestJS scaffold with Docker, health endpoint, DB connection
LOY-002
PDI OAuth2 token manager
client_credentials flow, token caching with TTL
LOY-003
PDI REST adapter: GetRewards + FinalizeRewards
Full PDI Conexxus client with retry logic
LOY-004
StoreLoyaltyConfig DB model + CRUD API
Per-store loyalty enable/disable with credentials
LOY-005
LoyaltySession DB model + state manager
State machine: active→pending→finalized/failed
LOY-006
Circuit breaker + graceful degradation
opossum circuit breaker, fallback to no-loyalty
Week 2 — API + Frontend
LOY-007
Medusa POST /loyalty/identify endpoint
Proxy to loyalty-service, session creation
LOY-008
Medusa GET/POST /loyalty/reward endpoints
Reward retrieval and application
LOY-009
SKU-to-POSCode mapping service
Map Medusa variant SKUs to PDI POSCodes
LOY-010
Frontend: phone number entry component
Phone input in checkout, identify call
LOY-011
Frontend: reward selector + display
Show available rewards, apply to cart
LOY-012
Cart re-evaluation on reward change
Re-fetch cart totals after reward applied
LOY-013
Cart/Order loyalty metadata persistence
Store loyalty data in order metadata
Week 3 — Finalization
LOY-014
Order-completed finalization flow
Finalize PDI session on order complete
LOY-015
Order confirmation + loyalty summary
Show points earned on confirmation page
LOY-016
E2E sandbox integration tests
Full flow tests against PDI QAF
LOY-017
Full checkout flow with loyalty
End-to-end checkout integration