| RequestForQuotationsController | Entry point for RFQ CRUD & status PATCH. | REST /api/v1/rfqs/** (OpenAPI) | — |
| RequestForQuotationService | Implements all RFQ use-cases; enforces authorisation & validation; coordinates sub-services. | Java/Spring service API (called only by the controller) | JPA Repos, Status Service, Number Generator, Mapper, DomainEventPublisher |
| RequestForQuotationRepository | Persistence of RequestForQuotation aggregate. | Spring-Data JPA | MySQL © JDBC |
| RequestForQuotationItemRepository | Persistence of item sub-aggregate. | Spring-Data JPA | MySQL |
| RequestForQuotationStatusService | Pure domain logic: compute legal status and cascades. | Java class | — |
| RfqNumberGenerator | Produces sequential numbers using a Year-Sequence table. | Java class | RfqNumberSequenceRepository (not shown) |
| RequestForQuotationsMapper / ItemMapper | MapStruct mappers DTO ⇄ Entity. | Java interface | — |
| DomainEventPublisher | Publishes Spring events (RequestForQuotationCreatedEvent, StatusChangedEvent). | Spring ApplicationEventPublisher | — |
| RequestForQuotationNotificationListener | Converts domain events into notifications (e-mail & WebSocket). | Spring event listener | NotificationService (external package) |