model
Boundaries
Files that require careful review before changes:
Order.java- core domain model affects all checkout operationsOrderStatus.java- state machine affects order lifecyclePaymentStatus.java- payment states affect reconciliation
Conventions
- All models are Java records (immutable)
- Order is the aggregate root containing nested collections
- CustomerSnapshot is point-in-time copy, not live reference
- FulfillmentDetails tracks reservation for rollback capability
- Enums define closed set of valid states
Warnings
- Changing Order structure requires database migration
- OrderStatus transitions must be validated in service layer
- PaymentStatus affects financial reconciliation; add states carefully
- CustomerSnapshot fields must match customer-service response