Skip to content

[๐Ÿš€ ๋ฐฉํƒˆ์ถœ ์˜ˆ์•ฝ ์™ธ๋ถ€ API ์—ฐ๋™ 3๋‹จ๊ณ„] ๋ชจ์•„ ๋ฏธ์…˜ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.#697

Open
picetea44 wants to merge 10 commits into
woowacourse:mainfrom
picetea44:third-party-api-step3
Open

[๐Ÿš€ ๋ฐฉํƒˆ์ถœ ์˜ˆ์•ฝ ์™ธ๋ถ€ API ์—ฐ๋™ 3๋‹จ๊ณ„] ๋ชจ์•„ ๋ฏธ์…˜ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.#697
picetea44 wants to merge 10 commits into
woowacourse:mainfrom
picetea44:third-party-api-step3

Conversation

@picetea44

Copy link
Copy Markdown

์ฒดํฌ ๋ฆฌ์ŠคํŠธ

  • ๋ฏธ์…˜์˜ ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ–ˆ๋‚˜์š”?
  • Gradle test๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ, ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ํ†ต๊ณผํ–ˆ๋‚˜์š”?
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋‚˜์š”?

๋ฒ ์ด์Šค ์ฝ”๋“œ ์„ ํƒ ์ฒดํฌ

  • ์ด์ „ ๋ฏธ์…˜์˜ ๋‚ด ์ฝ”๋“œ์—์„œ ์‹œ์ž‘
  • ์ด์ „ ๋ฏธ์…˜์˜ ํŽ˜์–ด์˜ ์ฝ”๋“œ์—์„œ ์‹œ์ž‘

์–ด๋–ค ๋ถ€๋ถ„์— ์ง‘์ค‘ํ•˜์—ฌ ๋ฆฌ๋ทฐํ•ด์•ผ ํ• ๊นŒ์š”?

picetea44 and others added 10 commits June 1, 2026 19:25
* chore: migrate spring-roomescape-member

* feat: ์˜ˆ์•ฝ ๋Œ€๊ธฐ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๋กœ์ง ๊ตฌํ˜„

* feat: ์ด๋ฆ„+์Šฌ๋กฏ ๊ธฐ์ค€์œผ๋กœ ์ค‘๋ณต ์˜ˆ์•ฝ์„ ๊ฒ€์‚ฌํ•˜๋„๋ก ๋ณ€๊ฒฝ

๊ฐ™์€ ์Šฌ๋กฏ์— ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ๋Œ€๊ธฐ ์‹ ์ฒญ์€ ํ—ˆ์šฉํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ถฉ๋Œ ๊ฒ€์‚ฌ ์กฐ๊ฑด์— ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์ถ”๊ฐ€.
existsByDateAndTimeIdAndThemeId โ†’ existsByNameAndDateAndTimeIdAndThemeId๋กœ ๋ฆฌํŒฉํ† ๋ง.

* feat: ๊ฐ€์šฉ ์‹œ๊ฐ„ ์กฐํšŒ ์‹œ ์˜ˆ์•ฝ๋œ ์Šฌ๋กฏ๋„ ๋ชจ๋‘ ๋ฐ˜ํ™˜

๋Œ€๊ธฐ ์‹ ์ฒญ์„ ์œ„ํ•ด ์ด๋ฏธ ์˜ˆ์•ฝ๋œ ์‹œ๊ฐ„๋Œ€๋„ ์„ ํƒ ๊ฐ€๋Šฅํ•˜๋„๋ก findAvailable์˜ NOT IN ํ•„ํ„ฐ๋ฅผ ์ œ๊ฑฐ.

* feat: ๋‚ด ์˜ˆ์•ฝ ํ™”๋ฉด์— ์˜ˆ์•ฝ/๋Œ€๊ธฐ ์ƒํƒœ ๋ฐฐ์ง€ ํ‘œ์‹œ

waitingOrder๊ฐ€ 0์ด๋ฉด '์˜ˆ์•ฝ ์™„๋ฃŒ', 1 ์ด์ƒ์ด๋ฉด '๋Œ€๊ธฐ N๋ฒˆ' ๋ฐฐ์ง€๋ฅผ ์นด๋“œ์— ๋…ธ์ถœ.

* test: ReservationServiceTest ๋‚ด ์˜ˆ์•ฝ ํ—ˆ์šฉ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€

* docs: README.md ์ž‘์„ฑ

* fix: ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์˜ ๊ณผ๊ฑฐ ์˜ˆ์•ฝ ๋ณ€๊ฒฝ/์ทจ์†Œ ์ฐจ๋‹จ

* test: ๋‹จ์ผ/๋ถ„๋ฆฌ ํ…Œ์ด๋ธ” ๋ชจ๋ธ์˜ waitingOrder ์กฐํšŒ ๋น„์šฉ ๋น„๊ต ์ธก์ • ์ถ”๊ฐ€

* refactor: ์˜ˆ์•ฝ์ž ์ด๋ฆ„ ํ•„๋“œ๋ฅผ name์—์„œ reserverName์œผ๋กœ ๋ณ€๊ฒฝ

* refactor: ์˜ˆ์•ฝ ํ™•์ • ๋ฐ ๋Œ€๊ธฐ ํŒ๋‹จ WaitingOrder ๊ฐ’ ๊ฐ์ฒด๋กœ ์บก์Аํ™”

* fix: ์˜ˆ์•ฝ ๋ณ€๊ฒฝ ์‹œ ๋Œ€๊ธฐ ๋™์ž‘์„ ์ƒ์„ฑ๊ณผ ์ผ๊ด€๋˜๊ฒŒ ์ˆ˜์ •

* fix: ๋™์‹œ ์˜ˆ์•ฝ ์š”์ฒญ ์‹œ ์ƒํƒœ ์ผ๊ด€์„ฑ๊ณผ ์ถฉ๋Œ ์‘๋‹ต์„ ๋ณด๊ฐ•

* fix: ๋ฏธ์ฒ˜๋ฆฌ๋œ ์˜ˆ์™ธ ์‘๋‹ต ์ƒํƒœ 400์—์„œ 500์œผ๋กœ ์ˆ˜์ •

* refactor: ์ค‘๋ณต๋˜๋Š” ReservationTime.findAvailable ์ œ๊ฑฐํ•˜๊ณ  findAll๋กœ ํ†ต์ผ
* feat: ์˜ˆ์•ฝ status ์ปฌ๋Ÿผ ๋„์ž… ๋ฐ ์ทจ์†Œ๋ฅผ soft delete๋กœ ์ „ํ™˜

- reservation์— statusยทenqueued_at ์ถ”๊ฐ€, UNIQUE ์ œ๊ฑฐ
- ํ™•์ •/๋Œ€๊ธฐ๋ฅผ ์ €์žฅ๋œ status๋กœ ํŒ์ •(์ƒ์„ฑ ์‹œ ์Šฌ๋กฏ ์ ์œ  ์—ฌ๋ถ€๋กœ ๊ฒฐ์ •)
- ์ทจ์†Œ๋Š” soft delete + ํ™•์ • ์ทจ์†Œ ์‹œ ์ฒซ ๋Œ€๊ธฐ์ž ์ž๋™ ์Šน๊ธ‰
- ๋Œ€๊ธฐ ์ˆœ๋ฒˆ์€ enqueued_at ๊ธฐ์ค€ ์ •๋ ฌ, CANCELED ์ œ์™ธ ์ง‘๊ณ„

* test: statusยทsoft delete ๋ชจ๋ธ์— ๋งž๊ฒŒ ๊ธฐ์กด ํ…Œ์ŠคํŠธ ์ˆ˜์ •

* feat: ๋น„๊ด€ ๋ฝ์œผ๋กœ ๋™์‹œ ์˜ˆ์•ฝ์˜ ํ™•์ • ์ค‘๋ณต(์ •์› ์ดˆ๊ณผ) ๋ฐฉ์ง€

* fix: ๋™์‹œ ์ทจ์†Œ ์‹œ ์ด์ค‘ ์Šน๊ธ‰ ๋ฐฉ์ง€ (๋ฝ ํ›„ ์ƒํƒœ ์žฌ๊ฒ€์ฆ)

- cancel์—์„œ theme ๋ฝ์„ ์žก์€ ๋’ค ์˜ˆ์•ฝ์„ ์žฌ์กฐํšŒํ•ด ํ˜„์žฌ ์ƒํƒœ๋กœ ํŒ๋‹จ
- ์ด๋ฏธ ์ทจ์†Œ๋œ ์˜ˆ์•ฝ์ด๋ฉด ์ค‘๋‹จํ•˜์—ฌ ๋Œ€๊ธฐ์ž ์ด์ค‘ ์Šน๊ธ‰์„ ์ฐจ๋‹จ
- ๊ฐ™์€ ํ™•์ • ์˜ˆ์•ฝ์„ ๋™์‹œ ์ทจ์†Œํ•ด๋„ ํ™•์ •์ด 1๊ฑด์œผ๋กœ ์œ ์ง€๋˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€

* test: ์˜ˆ์•ฝ ๋ณ€๊ฒฝ๊ณผ ์‹ ๊ทœ ์˜ˆ์•ฝ์˜ ๋™์‹œ ๊ฒฝํ•ฉ์—๋„ ํ™•์ •์ด 1๊ฑด์ž„์„ ๊ฒ€์ฆ

- ๋นˆ ์Šฌ๋กฏ์œผ๋กœ์˜ ๋ณ€๊ฒฝ ์ง„์ž…๊ณผ ์‹ ๊ทœ ์ƒ์„ฑ์ด ๊ฐ™์€ theme ๋ฝ์—์„œ ์ง๋ ฌํ™”๋จ์„ ํ™•์ธ
- ๋ณ„๋„ ์ˆ˜์ • ์—†์ด ๊ธฐ์กด ๋น„๊ด€ ๋ฝ ์„ค๊ณ„๋กœ ๋ฐฉ์–ด๋จ(ํšŒ๊ท€ ํ…Œ์ŠคํŠธ)

* refactor: lockTheme์ด ์ž ๊ธˆ๊ณผ ๋™์‹œ์— Theme๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ theme ์ค‘๋ณต ์กฐํšŒ ์ œ๊ฑฐ

- ์ƒ์„ฑ ์‹œ theme ์กด์žฌ ํ™•์ธ(findById)๊ณผ ๋น„๊ด€ ๋ฝ(SELECT ... FOR UPDATE)์„ ํ•œ ์ฟผ๋ฆฌ๋กœ ํ†ตํ•ฉ
- ์ด๋กœ์จ AdminReservationService์—์„œ ๋” ์ด์ƒ ์“ฐ์ด์ง€ ์•Š๋Š” ThemeRepository ์˜์กด์„ฑ ์ œ๊ฑฐ

* fix: ์ธ๊ธฐ ํ…Œ๋งˆ ์ง‘๊ณ„์—์„œ ์ทจ์†Œ๋œ ์˜ˆ์•ฝ ์ œ์™ธ

* feat: ๋‚ด ์˜ˆ์•ฝ ํ™”๋ฉด์— ์ทจ์†Œ ๋‚ด์—ญ ํ‘œ์‹œ ๋ฐ ์ทจ์†Œ ์‹œ๋“œ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€

* refactor: ์˜ˆ์•ฝ ์‚ญ์ œ๋ฅผ ์ทจ์†Œ(cancel) ์–ดํœ˜๋กœ ํ†ต์ผํ•˜๊ณ  ๋ฏธ์‚ฌ์šฉ hard delete ์ œ๊ฑฐ

* chore: ๋Œ€๊ธฐ์—ด ์‹œ๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ •/๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ฑ„์›€

* docs: README.md ์ตœ์‹ ํ™”

* test: ์ทจ์†Œ-์Šน๊ธ‰ ํŠธ๋žœ์žญ์…˜์˜ ์›์ž์  ๋กค๋ฐฑ ๊ฒ€์ฆ ์ถ”๊ฐ€

* refactor: ReservationWithWaitingOrder๋ฅผ domain์œผ๋กœ ์ด๋™

* refactor: ์˜ˆ์•ฝ ๋ณ€๊ฒฝ ํ๋ฆ„์˜ ํ…Œ๋งˆ ๋ฝ ํš๋“์„ executeWithThemeLock ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์บก์Аํ™”

* refactor: ์˜ˆ์•ฝ ์“ฐ๊ธฐ ์—ฐ์‚ฐ์„ ๋ฝ ์Šค์ฝ”ํ”„ ์ „์šฉ LockedReservationWriter๋กœ ์บก์Аํ™”

* fix: ํ…Œ๋งˆ ์‚ญ์ œ๋ฅผ ํ…Œ๋งˆ ๋ฝ์œผ๋กœ ๋ณดํ˜ธํ•ด ์˜ˆ์•ฝ ์ƒ์„ฑ๊ณผ์˜ ๊ฒฝํ•ฉ ๋ฐฉ์ง€

* fix: ์Šฌ๋กฏ ๋ณ€๊ฒฝ ์‹œ์—๋งŒ ๋Œ€๊ธฐ ์ˆœ๋ฒˆ์„ ๊ฐฑ์‹ ํ•˜๋„๋ก update ๋ถ„๋ฆฌ

* refactor: findAll์„ findAllActive๋กœ rename

* test: ์˜ˆ์•ฝ ๋ณ€๊ฒฝ์˜ ์Šฌ๋กฏ ์ด๋™-์Šน๊ธ‰ ํŠธ๋žœ์žญ์…˜ ๋กค๋ฐฑ ๊ฒ€์ฆ ์ถ”๊ฐ€

* fix: ๋ณ€๊ฒฝ ์—†๋Š” ์˜ˆ์•ฝ ์ˆ˜์ •์€ ์“ฐ๊ธฐ ์—†์ด ์กฐ๊ธฐ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์Šฌ๋กฏ ๋ณ€๊ฒฝ ์‹œ์—๋งŒ ์žฌ์ค„์„œ๊ธฐ
* feat: Toss ๊ฒฐ์ œ ์Šน์ธ ํฌํŠธ&์–ด๋Œ‘ํ„ฐ ์ถ”๊ฐ€

* feat: ์˜ˆ์•ฝ ์ƒ์„ฑ ํ๋ฆ„์— ๊ฒฐ์ œ ์Šน์ธ ๋‹จ๊ณ„ ์ถ”๊ฐ€

* feat: ์˜ˆ์•ฝ ํŽ˜์ด์ง€์— Toss ๊ฒฐ์ œ์ฐฝ ์—ฐ๋™

* refactor: Toss ์‹œํฌ๋ฆฟ ํ‚ค๋ฅผ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์™ธ๋ถ€ํ™”

* refactor: payment_order ํ…Œ์ด๋ธ”์— FK ์ œ์•ฝ ์ถ”๊ฐ€

* fix: themeId ์กด์žฌ ๊ฒ€์ฆ์„ ๊ฒฐ์ œ ์Šน์ธ ์ „์œผ๋กœ ์ด๋™

* refactor: PaymentOrder์˜ ์˜ˆ์•ฝ DTO ์˜์กด ์ œ๊ฑฐ

* refactor: Toss ์„ค์ •์„ TossProperties๋กœ ์ค‘์•™ํ™”

* refactor: ๊ฒฐ์ œ ์—”๋“œํฌ์ธํŠธ๋ฅผ PaymentController๋กœ ๋ถ„๋ฆฌ

* fix: ๊ฒฐ์ œ ์Šน์ธ ํ›„ ์˜ˆ์•ฝ ์ƒ์„ฑ ์‹คํŒจ ์‹œ ๊ฒฐ์ œ ์ทจ์†Œ ๋ณด์ƒ ์ฒ˜๋ฆฌ

* refactor: ํ…Œ์ŠคํŠธ ์„ค์ •์˜ Toss ํ‚ค๋ฅผ ๋”๋ฏธ ๊ฐ’์œผ๋กœ ๋Œ€์ฒด

ํ…Œ์ŠคํŠธ๋Š” ์‹ค์ œ Toss๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ณต๊ฐœ docs ํ‚ค ๋Œ€์‹ 
๋ˆ„๊ฐ€ ๋ด๋„ ๊ฐ€์งœ์ธ ๋”๋ฏธ ๊ฐ’์„ fallback์œผ๋กœ ๋‘”๋‹ค. ์ €์žฅ์†Œ์— ํ‚ค ํ…์ŠคํŠธ๊ฐ€
๋‚จ์ง€ ์•Š๊ฒŒ ํ•˜๊ณ , ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๋Œ€๋กœ ๋ฎ์–ด์“ด๋‹ค.
๋А๋ฆฐ ํ† ์Šค ์‘๋‹ต์ด ์Šค๋ ˆ๋“œ๋ฅผ ๋ฌดํ•œ์ • ์ ์œ ํ•˜์ง€ ๋ชปํ•˜๋„๋ก SimpleClientHttpRequestFactory๋กœ
connect/read ํƒ€์ž„์•„์›ƒ์„ ๊ฑธ๊ณ , ๊ฐ’์€ application.properties๋กœ ์™ธ๋ถ€ํ™”ํ•œ๋‹ค.
MockWebServer๋กœ read timeout์ด ์„ค์ •๊ฐ’๋งŒํผ๋งŒ ๋Œ€๊ธฐ ํ›„ ์‹คํŒจํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•œ๋‹ค.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant