                                      ┌────────────────────┐
                                      │  Mobile / Web App  │
                                      └─────────┬──────────┘
                                                │  HTTPS  POST /api/v1/orders
                                                │
╔═══════════════════════════════════════════════╪══════════════════════════════════════════════╗
║  ORDER PLATFORM  (k8s ns: orders-prod)        │                                              ║
║                                               ▼                                              ║
║  ┌─ API Gateway ──────────────────────────────────────────────────────────────────────────┐  ║
║  │  ┌─────────────────────┐   ┌───────────────────────┐   ┌────────────────────────────┐  │  ║
║  │  │ JWT AuthFilter      ├──▶│ RateLimiter           ├──▶│ Router                     │  │  ║
║  │  │ scope: orders:write │   │ 100 req/s per user_id │   │ /api/v1/orders/** -> order │  │  ║
║  │  └─────────────────────┘   └───────────────────────┘   └────────────────────────────┘  │  ║
║  └────────────────────────────────────────────┬───────────────────────────────────────────┘  ║
║                                               │ route by path                                ║
║                                 ┌─────────────┴────────────────────────────────┐             ║
║                                 ▼                                              ▼             ║
║  ┌─ Order Service (Spring Boot) ────────────────────────────────┐  ┌─ Query Service ───────┐ ║
║  │ ┌─ Controller layer ───────────────────────────────────────┐ │  │ ┌───────────────────┐ │ ║
║  │ │ ┌──────────────────────┐     ┌─────────────────────────┐ │ │  │ │ OrderView         │ │ ║
║  │ │ │ OrderController      ├────▶│ OrderValidator          │ │ │  │ │ GET /orders/{id}  │ │ ║
║  │ │ │ POST /api/v1/orders  │     │ --strict  sku_rules.yml │ │ │  │ └─────────┬─────────┘ │ ║
║  │ │ └───────────────────┬──┘     └─────────────────────────┘ │ │  │           ▼           │ ║
║  │ └─────────────────────┼────────────────────────────────────┘ │  │ ┌───────────────────┐ │ ║
║  │                       │                                      │  │ │ SearchIndex       │ │ ║
║  │ ┌─ Domain layer ──────┼────────────────────────────────────┐ │  │ │ q=status:PAID     │ │ ║
║  │ │                     ▼                                    │ │  │ └───────────────────┘ │ ║
║  │ │ ┌─ PricingEngine ──────────────────────┐  ┌────────────┐ │ │  └───────────┬───────────┘ ║
║  │ │ │ ┌───────────────┐  ┌───────────────┐ │  │ Inventory  │ │ │              │             ║
║  │ │ │ │ TaxCalculator │  │ DiscountRules │ │  │ Checker    │ │ │              │             ║
║  │ │ │ │ region: IN-MH │  │ by user_id    │ │  │ reserve()  │ │ │              │             ║
║  │ │ │ └───────────────┘  └───────────────┘ │  └────────────┘ │ │              │             ║
║  │ │ └──────────────┬───────────────────────┘                 │ │              │             ║
║  │ └────────────────┼─────────────────────────────────────────┘ │              │             ║
║  │                  │                                           │              │             ║
║  │ ┌─ Infra layer ──┼─────────────────────────────────────────┐ │              │             ║
║  │ │                ▼                                         │ │              │             ║
║  │ │ ┌─────────────────┐ ┌────────────────┐ ┌───────────────┐ │ │              │             ║
║  │ │ │ OrderRepository │ │ EventPublisher │ │ PaymentClient │ │ │              │             ║
║  │ │ │ JPA -> Oracle   │ │ Kafka producer │ │ mTLS, 2s t/o  │ │ │              │             ║
║  │ │ └────────┬────────┘ └───────┬────────┘ └───────┬───────┘ │ │              │             ║
║  │ └──────────┼──────────────────┼──────────────────┼─────────┘ │              │             ║
║  └────────────┼──────────────────┼──────────────────┼───────────┘              │             ║
║               │                  │                  │                          │             ║
║               │                  │                  │                          │             ║
║  ┌────────────┼──────────────────┼──────────────────┼─── Data & messaging ─────┼───────────┐ ║
║  │            ▼                  ▼                  ▼                          ▼           │ ║
║  │   ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐        ┌────────────────────┐ │ ║
║  │   │ Oracle          │ │ Kafka           │ │ payment-svc │        │ Redis              │ │ ║
║  │   │ schema ORDERS   │ │ topic orders.v1 │ │ external    │        │ read model, TTL 5m │ │ ║
║  │   └─────────────────┘ └─────────────────┘ └─────────────┘        └────────────────────┘ │ ║
║  └─────────────────────────────────────────────────────────────────────────────────────────┘ ║
║                                                                                              ║
║  ┌─ Call tree: POST /api/v1/orders ────────────────────────────────────────────────────────┐ ║
║  │  POST /api/v1/orders                                                                    │ ║
║  │  └─ OrderController.create(req)                                                         │ ║
║  │     ├─ OrderValidator.validate(req)                                                     │ ║
║  │     │  ├─ SkuRules.check(sku)                                                           │ ║
║  │     │  └─ throws InvalidOrderException ────────────▶ HTTP 400                           │ ║
║  │     ├─ OrderService.place(cmd)                          @Transactional                  │ ║
║  │     │  ├─ InventoryChecker.reserve(items) ─────────▶ inventory-svc  (retry x3)          │ ║
║  │     │  ├─ PricingEngine.quote(items)                                                    │ ║
║  │     │  │  ├─ TaxCalculator.forRegion("IN-MH")                                           │ ║
║  │     │  │  └─ DiscountRules.apply(user_id)                                               │ ║
║  │     │  ├─ PaymentClient.charge(amount) ────────────▶ payment-svc                        │ ║
║  │     │  │  └─ on failure: InventoryChecker.release(items)                                │ ║
║  │     │  └─ OrderRepository.save(order) ─────────────▶ Oracle ORDERS                      │ ║
║  │     └─ EventPublisher.publish(OrderPlaced) ────────▶ Kafka orders.v1                    │ ║
║  │        └─ OrderView.project(event)  (async)                                             │ ║
║  └─────────────────────────────────────────────────────────────────────────────────────────┘ ║
║                                                                                              ║
╚══════════════════════════════════════════════════════════════════════════════════════════════╝
