프로젝트 지침 v1.0

flowchart LR
  CAT["Catalog"]
  DSP["Display"]
  EVT["Event"]
  MEM["Member"]
  SUP["Supplier"]
  PUR["Purchase"]
  ORD["Order"]
  CLM["Claim"]
  DEL["Delivery"]
  SET["Settlement"]

  CAT -->|"상품 스냅샷 조회"| ORD
  CAT -->|"전시 가능 상품 조회"| DSP
  EVT -->|"할인/쿠폰 규칙 조회"| ORD
  EVT -->|"기획전/혜택 연동"| DSP
  MEM -->|"회원 등급/상태 조회"| ORD
  SUP -->|"계약/공급가 조회"| PUR
  PUR -->|"입고 완료 이벤트"| CAT
  ORD -->|"주문 확정 이벤트"| DEL
  ORD -->|"주문 확정/취소 이벤트"| SET
  CLM -->|"클레임 확정 이벤트"| SET
  CLM -->|"재고 복원 이벤트"| CAT
  DEL -->|"배송 완료 이벤트"| SET
flowchart TD
  A["CatalogController"]
  B["CatalogUseCase"]
  C["Product Aggregate"]
  D["Stock Aggregate"]
  E["ShelfLife Policy"]
  F["ProductRepository Port"]
  G["StockRepository Port"]
  H["JpaProductAdapter"]
  I["JpaStockAdapter"]
  J["PostgreSQL"]

  A --> B
  B --> C
  B --> D
  B --> E
  B --> F
  B --> G
  H -. "implements" .-> F
  I -. "implements" .-> G
  H --> J
  I --> J
flowchart TD
  A["DisplayController"]
  B["DisplayUseCase"]
  C["Exhibition Aggregate"]
  D["Banner Aggregate"]
  E["Exposure Policy"]
  F["CatalogQuery Port"]
  G["DisplayRepository Port"]
  H["CatalogApiAdapter"]
  I["JpaDisplayAdapter"]
  J["PostgreSQL"]

  A --> B
  B --> C
  B --> D
  B --> E
  B --> F
  B --> G
  H -. "implements" .-> F
  I -. "implements" .-> G
  I --> J
flowchart TD
  A["EventController"]
  B["EventUseCase"]
  C["Promotion Aggregate"]
  D["Coupon Aggregate"]
  E["Eligibility Policy"]
  F["DiscountCalculator"]
  G["PromotionRepository Port"]
  H["CouponRepository Port"]
  I["JpaPromotionAdapter"]
  J["JpaCouponAdapter"]
  K["PostgreSQL"]

  A --> B
  B --> C
  B --> D
  B --> E
  B --> F
  B --> G
  B --> H
  I -. "implements" .-> G
  J -. "implements" .-> H
  I --> K
  J --> K
flowchart TD
  A["OrderController"]
  B["CreateOrderUseCase"]
  C["Order Aggregate"]
  D["InventoryReserve Port"]
  E["MemberGrade Port"]
  F["PromotionApply Port"]
  G["Idempotency Port"]
  H["OrderRepository Port"]
  I["InventoryAdapter"]
  J["MemberAdapter"]
  K["EventAdapter"]
  L["RedisIdempotencyAdapter"]
  M["JpaOrderAdapter"]
  N["PostgreSQL"]
  O["Redis"]

  A --> B
  B --> G
  B --> E
  B --> F
  B --> D
  B --> C
  B --> H

  I -. "implements" .-> D
  J -. "implements" .-> E
  K -. "implements" .-> F
  L -. "implements" .-> G
  M -. "implements" .-> H

  M --> N
  L --> O
flowchart TD
  A["ClaimController"]
  B["ClaimUseCase"]
  C["Claim Aggregate"]
  D["Refund Policy"]
  E["OrderStatus Port"]
  F["InventoryRestore Port"]
  G["PaymentRefund Port"]
  H["ClaimRepository Port"]
  I["OrderAdapter"]
  J["CatalogAdapter"]
  K["PaymentAdapter"]
  L["JpaClaimAdapter"]
  M["PostgreSQL"]

  A --> B
  B --> C
  B --> D
  B --> E
  B --> F
  B --> G
  B --> H

  I -. "implements" .-> E
  J -. "implements" .-> F
  K -. "implements" .-> G
  L -. "implements" .-> H
  L --> M
flowchart TD
  A["ClaimController"]
  B["ClaimUseCase"]
  C["Claim Aggregate"]
  D["Refund Policy"]
  E["OrderStatus Port"]
  F["InventoryRestore Port"]
  G["PaymentRefund Port"]
  H["ClaimRepository Port"]
  I["OrderAdapter"]
  J["CatalogAdapter"]
  K["PaymentAdapter"]
  L["JpaClaimAdapter"]
  M["PostgreSQL"]

  A --> B
  B --> C
  B --> D
  B --> E
  B --> F
  B --> G
  B --> H

  I -. "implements" .-> E
  J -. "implements" .-> F
  K -. "implements" .-> G
  L -. "implements" .-> H
  L --> M