# dongkun8130/mohaengproject architecture

> Architecture diagram of the GitHub repository dongkun8130/mohaengproject, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dongkun8130/mohaengproject
- Repository: https://github.com/dongkun8130/mohaengproject

## Overview

Mohaeng is a Spring backend for an integrated travel platform: members can generate personalized itineraries, discover and book flights, lodging, and tours, then use payments and travel-community features. The README documents separate JSP member and React admin clients, hybrid session/JWT authentication, and an Oracle/MyBatis persistence layer. The graph groups the main product domains and preserves documented AI, external-data, and real-time-chat capabilities. Sampled sources confirm selected service-to-mapper calls; unsampled domain wiring is represented only where the README documents it.

Main entry points: [`src/main/java/kr/or/ddit/MohaengProjectApplication.java`](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/MohaengProjectApplication.java) (Spring backend), [`src/main/java/kr/or/ddit/mohaeng/login/service/CustomOAuth2UserService.java`](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/login/service/CustomOAuth2UserService.java) (Member login), [`src/main/java/kr/or/ddit/mohaeng/tripschedule/service/TripScheduleServiceImpl.java`](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/tripschedule/service/TripScheduleServiceImpl.java) (Trip planner), [`src/main/java/kr/or/ddit/mohaeng/flight/service/FlightServiceImpl.java`](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/flight/service/FlightServiceImpl.java) (Flight search)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and identity"]
  node_app["Spring backend"]
  node_identity["Member login"]
  node_userdetails["User lookup"]
end

subgraph group_travel["Travel planning"]
  node_schedule["Trip planner"]
  node_tour["Tour catalog"]
  node_flight["Flight search"]
  node_lodging["Accommodation"]
  node_accommodationbatch["Lodging data sync"]
end

subgraph group_commerce["Booking and payments"]
  node_booking["Payment flow"]
end

subgraph group_community["Community and support"]
  node_chatbot["AI chatbot"]
  node_chat["Live chat"]
  node_community["Travel community"]
  node_reviews["Product reviews"]
  node_files["File service"]
end

subgraph group_operations["Business operations"]
  node_adminreview["Review moderation"]
  node_business["Business products"]
end

node_member(("Member client"))
node_admin(("React admin"))
node_chatclient(("Chat client"))
node_gemini["Gemini API"]
node_tourapi["TourAPI"]
node_tago["TAGO API"]
node_toss["Toss Payments"]
node_claude["Claude API"]
node_oracle[("Oracle database")]

node_member -->|"sends requests"| node_app
node_admin -->|"Axios + JWT"| node_app
node_chatclient -->|"STOMP messages"| node_chat
node_app -->|"routes requests"| node_identity
node_identity -->|"loads user"| node_userdetails
node_identity -->|"reads/writes members"| node_oracle
node_userdetails -->|"reads accounts"| node_oracle
node_app -->|"routes requests"| node_schedule
node_schedule -.->|"requests itinerary"| node_gemini
node_schedule -->|"persists schedules"| node_oracle
node_app -->|"routes requests"| node_tour
node_tour -->|"reads tour data"| node_oracle
node_app -->|"routes requests"| node_flight
node_flight -.->|"queries flights"| node_tago
node_flight -->|"reads flight data"| node_oracle
node_app -->|"routes requests"| node_lodging
node_lodging -->|"reads lodging"| node_oracle
node_accommodationbatch -.->|"fetches lodging data"| node_tourapi
node_accommodationbatch -->|"updates lodging"| node_oracle
node_app -->|"routes requests"| node_booking
node_booking -.->|"processes payment"| node_toss
node_booking -->|"records payments"| node_oracle
node_app -->|"routes requests"| node_chatbot
node_chatbot -.->|"requests response"| node_claude
node_chatbot -->|"logs conversations"| node_oracle
node_chat -->|"persists messages"| node_oracle
node_app -->|"routes requests"| node_community
node_community -->|"reads/writes posts"| node_oracle
node_app -->|"routes requests"| node_reviews
node_reviews -->|"stores attachments"| node_files
node_reviews -->|"reads/writes reviews"| node_oracle
node_admin -->|"moderates reviews"| node_adminreview
node_adminreview -->|"updates review status"| node_oracle
node_admin -->|"manages products"| node_business
node_business -->|"persists products"| node_oracle

click node_app "https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/MohaengProjectApplication.java"
click node_identity "https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/login/service/CustomOAuth2UserService.java"
click node_userdetails "https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/security/CustomUserDetailsService.java"
click node_schedule "https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/tripschedule/service/TripScheduleServiceImpl.java"
click node_tour "https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/tour/service/TripProdServiceImpl.java"
click node_flight "https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/flight/service/FlightServiceImpl.java"
click node_lodging "https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/accommodation/service/AccommodationServiceImpl.java"
click node_accommodationbatch "https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/accommodation/service/AccommodationBatchService.java"
click node_booking "https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/payment/service/PaymentServiceImpl.java"
click node_chatbot "https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/chatbot/service/ChatbotService.java"
click node_chat "https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/community/chat/service/ChatServiceImpl.java"
click node_community "https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/community/service/TalkServiceImpl.java"
click node_reviews "https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/product/review/service/ProdReviewServiceImpl.java"
click node_files "https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/file/service/FileServiceImpl.java"
click node_adminreview "https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/admin/review/service/AReviewServiceImpl.java"
click node_business "https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/product/manage/service/ProductMangeServiceImpl.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_identity,node_userdetails,node_member,node_chatclient toneBlue
class node_schedule,node_tour,node_flight,node_lodging,node_accommodationbatch,node_oracle toneAmber
class node_booking,node_gemini,node_tourapi,node_tago,node_claude toneMint
class node_chatbot,node_chat,node_community,node_reviews,node_files toneRose
class node_adminreview,node_business,node_admin,node_toss toneIndigo
```

## Components

### Access and identity

- [Spring backend](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/MohaengProjectApplication.java): `src/main/java/kr/or/ddit/MohaengProjectApplication.java`
- [Member login](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/login/service/CustomOAuth2UserService.java): `src/main/java/kr/or/ddit/mohaeng/login/service/CustomOAuth2UserService.java`
- [User lookup](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/security/CustomUserDetailsService.java): `src/main/java/kr/or/ddit/mohaeng/security/CustomUserDetailsService.java`

### Travel planning

- [Trip planner](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/tripschedule/service/TripScheduleServiceImpl.java): `src/main/java/kr/or/ddit/mohaeng/tripschedule/service/TripScheduleServiceImpl.java`
- [Tour catalog](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/tour/service/TripProdServiceImpl.java): `src/main/java/kr/or/ddit/mohaeng/tour/service/TripProdServiceImpl.java`
- [Flight search](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/flight/service/FlightServiceImpl.java): `src/main/java/kr/or/ddit/mohaeng/flight/service/FlightServiceImpl.java`
- [Accommodation](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/accommodation/service/AccommodationServiceImpl.java): `src/main/java/kr/or/ddit/mohaeng/accommodation/service/AccommodationServiceImpl.java`
- [Lodging data sync](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/accommodation/service/AccommodationBatchService.java): `src/main/java/kr/or/ddit/mohaeng/accommodation/service/AccommodationBatchService.java`

### Booking and payments

- [Payment flow](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/payment/service/PaymentServiceImpl.java): `src/main/java/kr/or/ddit/mohaeng/payment/service/PaymentServiceImpl.java`

### Community and support

- [AI chatbot](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/chatbot/service/ChatbotService.java): `src/main/java/kr/or/ddit/mohaeng/chatbot/service/ChatbotService.java`
- [Live chat](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/community/chat/service/ChatServiceImpl.java): `src/main/java/kr/or/ddit/mohaeng/community/chat/service/ChatServiceImpl.java`
- [Travel community](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/community/service/TalkServiceImpl.java): `src/main/java/kr/or/ddit/mohaeng/community/service/TalkServiceImpl.java`
- [Product reviews](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/product/review/service/ProdReviewServiceImpl.java): `src/main/java/kr/or/ddit/mohaeng/product/review/service/ProdReviewServiceImpl.java`
- [File service](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/file/service/FileServiceImpl.java): `src/main/java/kr/or/ddit/mohaeng/file/service/FileServiceImpl.java`

### Business operations

- [Review moderation](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/admin/review/service/AReviewServiceImpl.java): `src/main/java/kr/or/ddit/mohaeng/admin/review/service/AReviewServiceImpl.java`
- [Business products](https://github.com/dongkun8130/mohaengproject/blob/main/src/main/java/kr/or/ddit/mohaeng/product/manage/service/ProductMangeServiceImpl.java): `src/main/java/kr/or/ddit/mohaeng/product/manage/service/ProductMangeServiceImpl.java`

### Other components

- **Member client**
- **React admin**
- **Chat client**
- **Gemini API**
- **TourAPI**
- **TAGO API**
- **Toss Payments**
- **Claude API**
- **Oracle database**

## Connections

- Member client → Spring backend: sends requests
- React admin → Spring backend: Axios + JWT
- Chat client → Live chat: STOMP messages
- Spring backend → Member login: routes requests
- Member login → User lookup: loads user
- Member login → Oracle database: reads/writes members
- User lookup → Oracle database: reads accounts
- Spring backend → Trip planner: routes requests
- Trip planner → Gemini API: requests itinerary
- Trip planner → Oracle database: persists schedules
- Spring backend → Tour catalog: routes requests
- Tour catalog → Oracle database: reads tour data
- Spring backend → Flight search: routes requests
- Flight search → TAGO API: queries flights
- Flight search → Oracle database: reads flight data
- Spring backend → Accommodation: routes requests
- Accommodation → Oracle database: reads lodging
- Lodging data sync → TourAPI: fetches lodging data
- Lodging data sync → Oracle database: updates lodging
- Spring backend → Payment flow: routes requests
- Payment flow → Toss Payments: processes payment
- Payment flow → Oracle database: records payments
- Spring backend → AI chatbot: routes requests
- AI chatbot → Claude API: requests response
- AI chatbot → Oracle database: logs conversations
- Live chat → Oracle database: persists messages
- Spring backend → Travel community: routes requests
- Travel community → Oracle database: reads/writes posts
- Spring backend → Product reviews: routes requests
- Product reviews → File service: stores attachments
- Product reviews → Oracle database: reads/writes reviews
- React admin → Review moderation: moderates reviews
- Review moderation → Oracle database: updates review status
- React admin → Business products: manages products
- Business products → Oracle database: persists products
