From db6953b4962cdeaa58c26c74a391025d9844c18f Mon Sep 17 00:00:00 2001 From: Hongseob Lee <97447334+hongxeob@users.noreply.github.com> Date: Fri, 8 Dec 2023 01:09:04 +0900 Subject: [PATCH] Update README.md --- README.md | 560 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 551 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 798c110..83bf9c4 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,564 @@ -

- image +

+ +
+

🌱 Dealight - 즐거운 가격, ν•¨κ»˜ν•˜λŠ” λ§›μ˜ 기쁨

-

Dealight

-

🌱 즐거운 가격, ν•¨κ»˜ν•˜λŠ” λ§›μ˜ 기쁨 🌱


-## 🀝🏻 CI/CD -image +

+ πŸ‘¨πŸ»β€πŸ’» ν”„λ‘œμ νŠΈ κΈ°κ°„ πŸ‘¨πŸ»β€πŸ’»
2023.10.12 ~ 2023.12.04 +

+ +------ + +|μ’…λ₯˜|기술 μŠ€νƒ| +|---|------| +|πŸš€ μ„œλΉ„μŠ€
기술| | +|πŸ› οΈ 인프라| | +|☁️ ν΄λΌμš°λ“œ| | +|🀝 ν˜‘μ—…λ„κ΅¬| | + + +--- + +

+ πŸ”— 배포 링크 +

+ +- [🌱 즐거운 가격, ν•¨κ»˜ν•˜λŠ” λ§›μ˜ 기쁨 Dealight](https://dev-dealight.vercel.app/) + +
+ + +
+ +

+ 🎬 μ£Όμš” κΈ°λŠ₯ μ†Œκ°œ +

+ + +
+ 고객 +
+ +|메인화면|νšŒμ›κ°€μž…|κ°€κ²Œ 검색| +|--|--|--| +|![고객-메인](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/49016275/3978aa3f-f8bb-4fc1-b4e8-71d3178ae770)|![고객-νšŒμ›κ°€μž…](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/49016275/6648d03c-7394-41f9-8fc2-34f3b6e6ffb2)|![업체 검색](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/49016275/75ec04f2-e029-4ef3-aa61-041c11fbf29a)|--|--| + +|μž₯λ°”κ΅¬λ‹ˆ|μ£Όλ¬Έ|리뷰 μž‘μ„±| +|--|--|--| +![μž₯λ°”κ΅¬λ‹ˆ](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/49016275/5b96fbaa-643b-4bb0-8559-6fee58f80cf8)|![μ£Όλ¬Έ](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/49016275/5b01824e-459c-444f-93ef-f13f6ef9afb0)|![고객-리뷰](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/49016275/2075cd64-6137-491c-a4a6-6aa1706e58d2)| + + +
+
+ + +
+ 업체 +
+ +|업체 등둝|μƒν’ˆ 등둝|λ§ˆμ΄νŽ˜μ΄μ§€|업체 정보 μˆ˜μ •| +|--|--|--|--| +|![업체등둝](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/49016275/1a0ffd1d-2f47-43a5-8a1f-c68dbe507acc)|![μƒν’ˆλ“±λ‘](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/49016275/299601ac-c59c-4a9d-8ecc-bad2eb2419f8)|![업체 λ§ˆμ΄νŽ˜μ΄μ§€](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/49016275/50caf2d1-7bc7-439a-972a-64543a99c68b)|![업체 λ§ˆμ΄νŽ˜μ΄μ§€-업체관리](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/49016275/4fa9d3fd-a4b6-4ddd-a406-6e9e66ffe980)| +
+
-## 🀝🏻 Backend Architecture +
+ 업체 & 고객 - μ£Όλ¬Έ κ΄€λ ¨ +
- +|μ£Όλ¬Έ 승인| +|--| +|![μ£Όλ¬Έ 승인](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/49016275/f4c189c1-c368-41fd-9ad7-aecebbab43c2)| -## 🌟 Dealight λ°±μ—”λ“œ 멀버 +|μ£Όλ¬Έ μ™„λ£Œ(μƒν’ˆ 수령 ν›„)| +|--| +|![μ£Όλ¬Έ μ™„λ£Œ](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/49016275/3efc1782-0bca-4dc4-9fed-cabeaa65161c)| + +|μ£Όλ¬Έ 거절| +|--| +|![μ£Όλ¬Έ 거절](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/49016275/ef107a26-72ba-4960-b1f3-df427cf811fa)| + +
+
+ + +
+ +

+ πŸ‘¨πŸ»β€πŸ’» νŒ€μ› μ†Œκ°œ +

+ + +### 🌟 Dealight λ°±μ—”λ“œ 멀버 | [κΉ€ν˜œλ―Ό](https://github.com/hyee0715) | [이홍섭](https://github.com/hyee0715) | [μ •μ„±ν˜„](https://github.com/kimihiqq) | [ν•œμŠΉμ›](https://github.com/SW-H) | [κ³ μ˜ˆμ„±](https://github.com/Dev-Yesung) | |:---------------------------------------:|:---------------------------------------:|:----------------------------------------:|:---------------------------------------:|:----------------------------------------:| | | | | | | + +
+ +

+ πŸ’‘ ν”„λ‘œμ νŠΈ μ†Œκ°œ +

+ + μ†Œμƒκ³΅μΈλ“€μ˜ 당일 폐기 μ˜ˆμ • μ‹ν’ˆμ˜ 할인 정보 곡유 및 ꡬ맀/판맀 μ„œλΉ„μŠ€ + +
+ +

+ πŸ’ͺ🏻 핡심 κΈ°λŠ₯ +

+ + - 마트 및 κ°€κ²Œμ—μ„œ 당일 폐기 μ˜ˆμ • μƒν’ˆμ„ 할인 κ°€κ²©μœΌλ‘œ 등둝/νŒλ§€ν•©λ‹ˆλ‹€. + + - μ‚¬μš©μžλ“€μ€ μ›Ή μ‚¬μ΄νŠΈλ₯Ό 톡해 ν• μΈλœ μƒν’ˆ 정보λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. + + - μƒν’ˆ μ£Όλ¬Έ κΈ°λŠ₯을 μ œκ³΅ν•˜μ—¬ μ €λ ΄ν•œ μ‹ν’ˆμ„ ꡬ맀할 수 μžˆμŠ΅λ‹ˆλ‹€. + +
+ +

+ πŸ”« νƒ€κ²ŸμΈ΅ +

+ +- 곡톡 + - ν™˜κ²½λ³΄ν˜Έμ™€ 지속가λŠ₯μ„±: 당일 폐기 μ˜ˆμ • μƒν’ˆμ„ ꡬ맀/νŒλ§€ν•¨μœΌλ‘œμ¨ μ‹μž¬λ£Œ λ‚­λΉ„λ₯Ό 쀄이고 μŒμ‹λ¬Ό 처리 λΉ„μš©μ„ μ ˆμ•½ν•˜μ—¬ ν™˜κ²½μ— λŒ€ν•œ 뢀담을 κ°μ†Œμ‹œν‚΅λ‹ˆλ‹€. +- μ†ŒλΉ„μž + - 경제적 효과(λΉ„μš© 절감): μ†ŒλΉ„μž μž…μž₯μ—μ„œ ν• μΈλœ κ°€κ²©μœΌλ‘œ νŒλ§€λ˜λŠ” μ œν’ˆμ„ κ΅¬λ§€ν•¨μœΌλ‘œμ¨, 일반적인 가격보닀 μ €λ ΄ν•˜κ²Œ ν•„μš”ν•œ μ‹μž¬λ£Œλ‚˜ μŒμ‹μ„ κ΅¬μž…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. +- 업체 + - 맀좜 μ¦λŒ€: 당일 폐기 μ˜ˆμ •μΈ μ‹ν’ˆμ„ ν• μΈν•˜μ—¬ νŒλ§€ν•©λ‹ˆλ‹€. κ³ κ°λ“€μ—κ²Œ λ”μš± 합리적인 κ°€κ²©μœΌλ‘œ μ œκ³΅ν•¨μœΌλ‘œμ¨ νŒλ§€λŸ‰μ„ 늘리고 λ§€μΆœμ„ 높일 수 μžˆμŠ΅λ‹ˆλ‹€. + - μŒμ‹λ¬Ό 폐기 λΉ„μš© 절감: 당일 판맀 μƒν’ˆμ˜ λ‚­λΉ„κ°€ μ—†μ–΄μ Έ 폐기 λΉ„μš©μ„ μ ˆκ°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. + +
+ +

+ πŸ“„ ν”„λ‘œμ νŠΈ λ¬Έμ„œ +

+ +- [Github Discussions](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/discussions) + +- [Github Wiki](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/wiki) + +
+ +

+ πŸ’Œ API λͺ…μ„Έ +

+ +- [API λͺ…μ„Έ 링크](https://server.dealight.store/docs/) + +
+ API λͺ…μ„Έ μ˜ˆμ‹œ (업체 등둝 API) + +API λͺ…μ„Έ μ˜ˆμ‹œ + +
+ +
+ +

+ 🧱 Backend 기술 μŠ€νƒ +

+ +![backend architecture](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/59169881/a7d26fce-fb1d-4e45-8a69-eb27bc61a923) + +
+ +

+ 🀝🏻 CI/CD +

+ +image + +
+
+ +

+ 🌌 μœ μ € μš”μ²­ Flow +

+ +![μœ μ € μš”μ²­ Flow](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/59169881/bcbe6140-6d19-431f-b812-ae98fd85654a) + +
+ +

+ πŸ‘€ Monitoring Architecture +

+ +image + +

+ +

+ πŸ“ˆ ν”Œλ‘œμš° 차트 +

+ +### 업체 +![업체 Flow Chart](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/59169881/7de0655a-3b51-4da2-9815-1cb50e72ce83) + +### 고객 +![고객 Flow Chart](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/59169881/abd79a70-ea95-466f-ac6e-65b192664339) + +
+ +

+ πŸ’» ERD +

+ +![dealight BE ERD](https://github.com/Team-PalPalHae-Dealight/Team-PalPalHae-Dealight-BE/assets/59169881/af837bee-5ee6-43a3-9ce5-b11dc77572fe) + +
+ +

+ πŸ—‚οΈ νŒ¨ν‚€μ§€ ꡬ쑰 +

+
+νŒ¨ν‚€μ§€ ꡬ쑰 + +``` +πŸ“¦ +Team-PalPalHae-Dealight-BE [dealight-be] +β”œβ”€ +β”‚ β”œβ”€ CODEOWNERS +β”‚ β”œβ”€ ISSUE_TEMPLATE +β”‚ β”‚ └─ +β”‚ β”œβ”€ pull_request_template.md +β”‚ └─ workflows +β”‚ β”œβ”€ script-dev.yml +β”‚ β”œβ”€ script-prod.yml +β”‚ └─ sonarcloud.yml +β”œβ”€ .gitignore +β”œβ”€ README.md +β”œβ”€ appspec.yml +β”œβ”€ build.gradle +β”œβ”€ dealight.Dockerfile +β”œβ”€ docker-compose.blue.yml +β”œβ”€ docker-compose.green.yml +β”œβ”€ docker-compose.infra.yml +β”œβ”€ gradle +β”‚ └─ wrapper +β”‚ β”œβ”€ gradle-wrapper.jar +β”‚ └─ gradle-wrapper.properties +β”œβ”€ gradlew +β”œβ”€ gradlew.bat +β”œβ”€ lombok.config +β”œβ”€ scripts +β”‚ β”œβ”€ deploy.sh +β”‚ └─ infra.sh +β”œβ”€ settings.gradle +└─ src + β”œβ”€ docs + β”‚ └─ asciidoc + β”‚ β”œβ”€ Auth.adoc + β”‚ β”œβ”€ Cart.adoc + β”‚ β”œβ”€ Item.adoc + β”‚ β”œβ”€ Member.adoc + β”‚ β”œβ”€ Order.adoc + β”‚ β”œβ”€ Review.adoc + β”‚ └─ Store.adoc + β”œβ”€ main + β”‚ β”œβ”€ java + β”‚ β”‚ └─ com + β”‚ β”‚ └─ palpal + β”‚ β”‚ └─ dealightbe + β”‚ β”‚ β”œβ”€ DealightBeApplication.java + β”‚ β”‚ β”œβ”€ config + β”‚ β”‚ β”‚ β”œβ”€ AbstractElasticsearchConfiguration.java + β”‚ β”‚ β”‚ β”œβ”€ ElasticSearchConfig.java + β”‚ β”‚ β”‚ β”œβ”€ ElasticSearchProperty.java + β”‚ β”‚ β”‚ β”œβ”€ JpaConfig.java + β”‚ β”‚ β”‚ β”œβ”€ JwtConfig.java + β”‚ β”‚ β”‚ β”œβ”€ OAuth2KakaoRegistrationProperty.java + β”‚ β”‚ β”‚ β”œβ”€ RedisConfig.java + β”‚ β”‚ β”‚ β”œβ”€ RestTemplateConfig.java + β”‚ β”‚ β”‚ β”œβ”€ S3Config.java + β”‚ β”‚ β”‚ β”œβ”€ SchedulerConfig.java + β”‚ β”‚ β”‚ β”œβ”€ SecurityConfig.java + β”‚ β”‚ β”‚ └─ WebMvcConfig.java + β”‚ β”‚ β”œβ”€ domain + β”‚ β”‚ β”‚ β”œβ”€ address + β”‚ β”‚ β”‚ β”‚ β”œβ”€ application + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AddressService.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ dto + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ request + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ AddressReq.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ response + β”‚ β”‚ β”‚ β”‚ β”‚ └─ AddressRes.java + β”‚ β”‚ β”‚ β”‚ └─ domain + β”‚ β”‚ β”‚ β”‚ β”œβ”€ Address.java + β”‚ β”‚ β”‚ β”‚ └─ AddressRepository.java + β”‚ β”‚ β”‚ β”œβ”€ auth + β”‚ β”‚ β”‚ β”‚ β”œβ”€ application + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AuthService.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CustomAuthAccessDeniedHandler.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CustomAuthenticationEntryPoint.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ OAuth2AuthorizationService.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ dto + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ request + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MemberNickNameCheckReq.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ MemberSignupAuthReq.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ response + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ KakaoTokenRes.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ KakaoUserInfoRes.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MemberAuthRes.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ OAuthLoginRes.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ OAuthUserInfoRes.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ domain + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Jwt.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ JwtAuthentication.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ JwtAuthenticationToken.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ exception + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InvalidRoleException.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ OAuth2AuthorizationException.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ RequiredAuthenticationException.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ filter + β”‚ β”‚ β”‚ β”‚ β”‚ └─ JwtAuthenticationFilter.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ infra + β”‚ β”‚ β”‚ β”‚ β”‚ └─ HttpCookieAuth2AuthorizationRequestRepository.java + β”‚ β”‚ β”‚ β”‚ └─ presentation + β”‚ β”‚ β”‚ β”‚ └─ AuthController.java + β”‚ β”‚ β”‚ β”œβ”€ cart + β”‚ β”‚ β”‚ β”‚ β”œβ”€ application + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CartService.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ dto + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ request + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CartReq.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ CartsReq.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ response + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CartRes.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ CartsRes.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ domain + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Cart.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CartAdditionType.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ CartRepository.java + β”‚ β”‚ β”‚ β”‚ └─ presentation + β”‚ β”‚ β”‚ β”‚ └─ CartController.java + β”‚ β”‚ β”‚ β”œβ”€ image + β”‚ β”‚ β”‚ β”‚ β”œβ”€ ImageService.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ application + β”‚ β”‚ β”‚ β”‚ β”‚ └─ dto + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ request + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ImageUploadReq.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ response + β”‚ β”‚ β”‚ β”‚ β”‚ └─ ImageRes.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ exception + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ImageIOException.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ InvalidFileTypeException.java + β”‚ β”‚ β”‚ β”‚ └─ infrastructure + β”‚ β”‚ β”‚ β”‚ └─ S3ImageService.java + β”‚ β”‚ β”‚ β”œβ”€ item + β”‚ β”‚ β”‚ β”‚ β”œβ”€ application + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ItemService.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ dto + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ request + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ItemReq.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ response + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ItemRes.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ ItemsRes.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ domain + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Item.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ItemDocument.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ItemRepository.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ItemRepositoryCustom.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ItemRepositoryImpl.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ ItemSearchRepository.java + β”‚ β”‚ β”‚ β”‚ └─ presentation + β”‚ β”‚ β”‚ β”‚ └─ ItemController.java + β”‚ β”‚ β”‚ β”œβ”€ member + β”‚ β”‚ β”‚ β”‚ β”œβ”€ application + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MemberService.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ dto + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ request + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ MemberUpdateReq.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ response + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MemberProfileRes.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ MemberUpdateRes.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ domain + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Member.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MemberRepository.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MemberRole.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MemberRoleRepository.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Role.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ RoleRepository.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ RoleType.java + β”‚ β”‚ β”‚ β”‚ └─ presentation + β”‚ β”‚ β”‚ β”‚ └─ MemberController.java + β”‚ β”‚ β”‚ β”œβ”€ notification + β”‚ β”‚ β”‚ β”‚ β”œβ”€ application + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NotificationService.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ dto + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NotificationUserInfo.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ response + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NotificationRes.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ NotificationsRes.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ domain + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ EmitterRepository.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Notification.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NotificationRepository.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ NotificationType.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ presentation + β”‚ β”‚ β”‚ β”‚ β”‚ └─ NotificationController.java + β”‚ β”‚ β”‚ β”‚ └─ util + β”‚ β”‚ β”‚ β”‚ └─ NotificationUtil.java + β”‚ β”‚ β”‚ β”œβ”€ order + β”‚ β”‚ β”‚ β”‚ β”œβ”€ application + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ OrderService.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ dto + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ request + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ OrderCreateReq.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ OrderProductReq.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ OrderProductsReq.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ OrderStatusUpdateReq.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ response + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ OrderProductRes.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ OrderProductsRes.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ OrderRes.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ OrderStatusUpdateRes.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ OrdersRes.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ domain + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Order.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ OrderItem.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ OrderItemRepository.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ OrderRepository.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ OrderStatus.java + β”‚ β”‚ β”‚ β”‚ └─ presentation + β”‚ β”‚ β”‚ β”‚ └─ OrderController.java + β”‚ β”‚ β”‚ β”œβ”€ review + β”‚ β”‚ β”‚ β”‚ β”œβ”€ application + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ReviewService.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ dto + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ request + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ReviewCreateReq.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ response + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ReviewContentRes.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ReviewCreateRes.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ReviewRes.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ReviewStatistics.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ StoreReviewRes.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ StoreReviewsRes.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ domain + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Review.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ReviewContent.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ ReviewRepository.java + β”‚ β”‚ β”‚ β”‚ └─ presentation + β”‚ β”‚ β”‚ β”‚ └─ ReviewController.java + β”‚ β”‚ β”‚ └─ store + β”‚ β”‚ β”‚ β”œβ”€ application + β”‚ β”‚ β”‚ β”‚ β”œβ”€ StoreService.java + β”‚ β”‚ β”‚ β”‚ └─ dto + β”‚ β”‚ β”‚ β”‚ β”œβ”€ request + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ StoreCreateReq.java + β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ StoreStatusReq.java + β”‚ β”‚ β”‚ β”‚ β”‚ └─ StoreUpdateReq.java + β”‚ β”‚ β”‚ β”‚ └─ response + β”‚ β”‚ β”‚ β”‚ β”œβ”€ StoreByMemberRes.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ StoreCreateRes.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ StoreInfoRes.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ StoreInfoSliceRes.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ StoreStatusRes.java + β”‚ β”‚ β”‚ β”‚ └─ StoresInfoSliceRes.java + β”‚ β”‚ β”‚ β”œβ”€ domain + β”‚ β”‚ β”‚ β”‚ β”œβ”€ DayOff.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ Store.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ StoreDocument.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ StoreRepository.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ StoreRepositoryCustom.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ StoreRepositoryImpl.java + β”‚ β”‚ β”‚ β”‚ β”œβ”€ StoreSearchRepository.java + β”‚ β”‚ β”‚ β”‚ └─ StoreStatus.java + β”‚ β”‚ β”‚ └─ presentation + β”‚ β”‚ β”‚ └─ StoreController.java + β”‚ β”‚ └─ global + β”‚ β”‚ β”œβ”€ BaseEntity.java + β”‚ β”‚ β”œβ”€ ListSortType.java + β”‚ β”‚ β”œβ”€ aop + β”‚ β”‚ β”‚ β”œβ”€ ProviderId.java + β”‚ β”‚ β”‚ β”œβ”€ ProviderIdAop.java + β”‚ β”‚ β”‚ β”œβ”€ RefreshToken.java + β”‚ β”‚ β”‚ └─ RefreshTokenAop.java + β”‚ β”‚ └─ error + β”‚ β”‚ β”œβ”€ ErrorCode.java + β”‚ β”‚ β”œβ”€ ErrorResponse.java + β”‚ β”‚ β”œβ”€ GlobalExceptionHandler.java + β”‚ β”‚ └─ exception + β”‚ β”‚ β”œβ”€ BusinessException.java + β”‚ β”‚ β”œβ”€ EntityNotFoundException.java + β”‚ β”‚ └─ InvalidValueException.java + β”‚ └─ resources + β”‚ β”œβ”€ application.yml + β”‚ β”œβ”€ console-appender.xml + β”‚ β”œβ”€ data.sql + β”‚ β”œβ”€ elastic + β”‚ β”‚ β”œβ”€ item-mapping.json + β”‚ β”‚ β”œβ”€ store-mapping.json + β”‚ β”‚ └─ store-setting.json + β”‚ β”œβ”€ error-appender.xml + β”‚ β”œβ”€ info-appender.xml + β”‚ β”œβ”€ logback.xml + β”‚ └─ warn-appender.xml + └─ test + └─ java + └─ com + └─ palpal + └─ dealightbe + β”œβ”€ config + β”‚ └─ ElasticTestContainer.java + └─ domain + β”œβ”€ address + β”‚ └─ application + β”‚ └─ AddressServiceTest.java + β”œβ”€ auth + β”‚ β”œβ”€ application + β”‚ β”‚ └─ AuthServiceTest.java + β”‚ β”œβ”€ domain + β”‚ β”‚ └─ JwtTest.java + β”‚ β”œβ”€ filter + β”‚ β”‚ └─ JwtAuthenticationFilterTest.java + β”‚ └─ presentation + β”‚ └─ AuthControllerTest.java + β”œβ”€ cart + β”‚ └─ presentation + β”‚ └─ CartControllerTest.java + β”œβ”€ item + β”‚ β”œβ”€ application + β”‚ β”‚ └─ ItemServiceTest.java + β”‚ β”œβ”€ domain + β”‚ β”‚ └─ ItemRepositoryTest.java + β”‚ └─ presentation + β”‚ └─ ItemControllerTest.java + β”œβ”€ member + β”‚ β”œβ”€ application + β”‚ β”‚ └─ MemberServiceTest.java + β”‚ └─ presentation + β”‚ └─ MemberControllerTest.java + β”œβ”€ order + β”‚ β”œβ”€ application + β”‚ β”‚ β”œβ”€ OrderServiceIntegrationTest.java + β”‚ β”‚ └─ OrderServiceTest.java + β”‚ β”œβ”€ domain + β”‚ β”‚ β”œβ”€ OrderRepositoryTest.java + β”‚ β”‚ └─ OrderTest.java + β”‚ └─ presentation + β”‚ └─ OrderControllerTest.java + β”œβ”€ review + β”‚ β”œβ”€ application + β”‚ β”‚ └─ ReviewServiceIntegrationTest.java + β”‚ β”œβ”€ domain + β”‚ β”‚ └─ ReviewRepositoryTest.java + β”‚ └─ presentation + β”‚ └─ ReviewControllerTest.java + └─ store + β”œβ”€ application + β”‚ └─ StoreServiceTest.java + └─ presentation + └─ StoreControllerTest.java + +``` + +
+