Skip to content

Conversation

@bikooju
Copy link
Collaborator

@bikooju bikooju commented Jan 15, 2026

๐Ÿ“Œ PR ์š”์•ฝ (ํ•˜๋‚˜ ์ด์ƒ ์„ ํƒํ•ด์ฃผ์„ธ์š”)

  • ๊ธฐ๋Šฅ ์ถ”๊ฐ€
  • ๊ธฐ๋Šฅ ์‚ญ์ œ
  • ๋ฒ„๊ทธ ์ˆ˜์ •
  • ์˜์กด์„ฑ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜, ๋นŒ๋“œ ๊ด€๋ จ ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ

๐Ÿ’ก ์ฃผ์š” ๋ณ€๊ฒฝ์‚ฌํ•ญ


๐Ÿ” ๊ด€๋ จ ์ด์Šˆ


๐ŸŒฟ ๋ธŒ๋žœ์น˜ ์ •๋ณด

  • ๋ณ‘ํ•ฉ ๋Œ€์ƒ ๋ธŒ๋žœ์น˜:
  • ํ˜„์žฌ ์ž‘์—… ๋ธŒ๋žœ์น˜:

๐Ÿงช ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•


โš ๏ธ ์ฃผ์˜์‚ฌํ•ญ

Coen90 and others added 30 commits October 20, 2025 20:06
* โ™ป๏ธ ํ˜„์žฌ ์ฐธ์—ฌ์ž์ˆ˜ ํ•„๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ํŠน์ • ๋ชจ์ž„ ๋ฐ ๋ชจ์ž„ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ํ† ํฐ ์—†์ด๋„ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ˆ˜์ •

* โ™ป๏ธ ํ•„์š”ํ•œ api๋งŒ ํ—ˆ์šฉ

* โ™ป๏ธ null์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์—†์œผ๋ฏ€๋กœ null ์กฐ๊ฑด ์‚ญ์ œ

* โ™ป๏ธ if ํ•œ ์ค„์ด์–ด๋„ ์ค‘๊ด„ํ˜ธ ์‚ฌ์šฉ์œผ๋กœ ์ˆ˜์ •

* โ™ป๏ธ ํ—ˆ์šฉ ์—”๋“œํฌ์ธํŠธ ์ˆ˜์ •

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ ํŠน์ • ๋ชจ์ž„ ๋ฐ ๋ชจ์ž„ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ํ† ํฐ ์—†์ด๋„ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ˆ˜์ •

* โ™ป๏ธ ํ•„์š”ํ•œ api๋งŒ ํ—ˆ์šฉ

* โœจ ๋ชจ์ž„ ๊ฐ€์ž… API ๊ตฌํ˜„

* โ™ป๏ธ ๋ชจ์ž„ ๊ฐ€์ž… API ์ฝ”๋“œ ์ˆ˜์ •

* โ™ป๏ธ entity์— currentMemberCount ์ถ”๊ฐ€ ๋ฐ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ๋ชจ์ž„๊ฐ€์ž… API ์ ์šฉํ•˜์—ฌ ํŠน์ • ๋ชจ์ž„๊ณผ ๋ชจ์ž„๋ฆฌ์ŠคํŠธ ์กฐํšŒ ์ฒ˜๋ฆฌ

* โ™ป๏ธ ๋„๋ฉ”์ธ swagger์™€ ํ”„๋ก ํŠธ ๋ฐฐํฌ์ฃผ์†Œ CORS ํ—ˆ์šฉ (#20)

* โœจ ๋ชจ์ž„ ์ˆ˜์ • api ๊ตฌํ˜„ ๋ฐ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โœจ ๋ชจ์ž„ ์ˆ˜์ • ์‚ญ์ œ api ๊ตฌํ˜„ ๋ฐ ๋ชจ์ž„ ์ˆ˜์ • api ๋กœ์ง ์ˆ˜์ •

* โ™ป๏ธ ์ฃผ์„ ์ •๋ฆฌ

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ Redis Password ์‚ญ์ œ

* โ™ป๏ธ Redis Password ์‚ญ์ œ

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ Auth ์‚ญ์ œ ๋ฐ fetch join List 2๊ฐœ ์˜ค๋ฅ˜๋กœ platformUrl ์กฐ์ธ ์‚ญ์ œ

* โœจ ๋ชจ์ž„ ๊ฐ€์ž…, ์ˆ˜์ •, ์‚ญ์ œ api ๊ตฌํ˜„ ๋ฐ redis ์„ค์ •๊ณผ ์ผ๋ถ€ ์ˆ˜์ • (#23)

* โ™ป๏ธ ๋„๋ฉ”์ธ swagger์™€ ํ”„๋ก ํŠธ ๋ฐฐํฌ์ฃผ์†Œ CORS ํ—ˆ์šฉ

* feat: ๋ ˆ๋””์Šค ๊ด€๋ จ ์„ค์ • ์ถ”๊ฐ€ ๋ฐ ์ผ๋ถ€ ์ˆ˜์ • (#19)

* feat: ๋ ˆ๋””์Šค ์„ค์ • ์ถ”๊ฐ€

* feat: Redis Properties ๊ฐœ๋ฐœ

* refactor: categories ๋ฆฌ์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๋ฐ›๋„๋ก ๋ณ€๊ฒฝ

* refactor: categories ๋ฆฌ์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๋ฐ›๋„๋ก ๋ณ€๊ฒฝ

* feat: redis ๊ด€๋ จ ์„ค์ • ๋ณ€๊ฒฝ ๋ฐ ์˜ˆ์‹œ ์ฝ”๋“œ ์ถ”๊ฐ€

* feat: redis key๋ฅผ ์œ„ํ•œ ์ƒ์ˆ˜ ํด๋ž˜์Šค ์ถ”๊ฐ€

* feat: redis ๋น„๋ฐ€๋ฒˆํ˜ธ ์ถ”๊ฐ€

* refactor: User ๊ด€๋ จ ์ˆ˜์ •

* docs: ์ฃผ์„ ์ œ๊ฑฐ

* docs: ๋ถˆํ•„์š”ํ•œ ์ฃผ์„ ์ œ๊ฑฐ

* chore: optimize import

* refactor: command, enums ์œ„์น˜ ๋ณ€๊ฒฝ

* refactor: CustomUserDetails interface ์ƒ์„ฑํ•˜์—ฌ ํ•ธ๋“ค๋งํ•˜๋„๋ก ๋ณ€๊ฒฝ

* refactor: ํ˜„์žฌ ์œ ์ € ๋‹‰๋„ค์ž„๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์˜ˆ์™ธ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝ

* fix: ์œ ์ € ์—๋Ÿฌ ์ฝ”๋“œ ์ˆ˜์ •

* fix: ๊ฒ€์ฆ๋กœ์ง ๋ณด์™„

* refactor: ์ค‘๋ณต ๋กœ์ง ์žฌ์‚ฌ์šฉ

* refactor: ์ž˜๋ชป ์‘๋‹ต๋œ UserDetails ์ˆ˜์ •

* fix: ๋ฏธ์ธ๊ฐ€ ์ƒํƒœ์—์„œ security filter ํ†ต๊ณผํ•˜๋Š” ์˜ค๋ฅ˜ ์ˆ˜์ •

---------

Co-authored-by: coen <[email protected]>

* โœจ ๋ชจ์ž„ ๊ฐ€์ž… , ๋ชจ์ž„ ์ˆ˜์ •, ์‚ญ์ œ api ๊ตฌํ˜„ (#21)

* โ™ป๏ธ ํ˜„์žฌ ์ฐธ์—ฌ์ž์ˆ˜ ํ•„๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ํŠน์ • ๋ชจ์ž„ ๋ฐ ๋ชจ์ž„ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ํ† ํฐ ์—†์ด๋„ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ˆ˜์ •

* โ™ป๏ธ ํ•„์š”ํ•œ api๋งŒ ํ—ˆ์šฉ

* โ™ป๏ธ null์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์—†์œผ๋ฏ€๋กœ null ์กฐ๊ฑด ์‚ญ์ œ

* โ™ป๏ธ if ํ•œ ์ค„์ด์–ด๋„ ์ค‘๊ด„ํ˜ธ ์‚ฌ์šฉ์œผ๋กœ ์ˆ˜์ •

* โ™ป๏ธ ํ—ˆ์šฉ ์—”๋“œํฌ์ธํŠธ ์ˆ˜์ •

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ ํŠน์ • ๋ชจ์ž„ ๋ฐ ๋ชจ์ž„ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ํ† ํฐ ์—†์ด๋„ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ˆ˜์ •

* โ™ป๏ธ ํ•„์š”ํ•œ api๋งŒ ํ—ˆ์šฉ

* โœจ ๋ชจ์ž„ ๊ฐ€์ž… API ๊ตฌํ˜„

* โ™ป๏ธ ๋ชจ์ž„ ๊ฐ€์ž… API ์ฝ”๋“œ ์ˆ˜์ •

* โ™ป๏ธ entity์— currentMemberCount ์ถ”๊ฐ€ ๋ฐ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ๋ชจ์ž„๊ฐ€์ž… API ์ ์šฉํ•˜์—ฌ ํŠน์ • ๋ชจ์ž„๊ณผ ๋ชจ์ž„๋ฆฌ์ŠคํŠธ ์กฐํšŒ ์ฒ˜๋ฆฌ

* โœจ ๋ชจ์ž„ ์ˆ˜์ • api ๊ตฌํ˜„ ๋ฐ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โœจ ๋ชจ์ž„ ์ˆ˜์ • ์‚ญ์ œ api ๊ตฌํ˜„ ๋ฐ ๋ชจ์ž„ ์ˆ˜์ • api ๋กœ์ง ์ˆ˜์ •

* โ™ป๏ธ ์ฃผ์„ ์ •๋ฆฌ

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ Redis Password ์‚ญ์ œ

* โ™ป๏ธ Redis Password ์‚ญ์ œ

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

---------

Co-authored-by: ์ฃผํ˜„์ค€ <[email protected]>

* โ™ป๏ธ Auth ์‚ญ์ œ ๋ฐ fetch join List 2๊ฐœ ์˜ค๋ฅ˜๋กœ platformUrl ์กฐ์ธ ์‚ญ์ œ (#22)

* โ™ป๏ธ ํ˜„์žฌ ์ฐธ์—ฌ์ž์ˆ˜ ํ•„๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ํŠน์ • ๋ชจ์ž„ ๋ฐ ๋ชจ์ž„ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ํ† ํฐ ์—†์ด๋„ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ˆ˜์ •

* โ™ป๏ธ ํ•„์š”ํ•œ api๋งŒ ํ—ˆ์šฉ

* โ™ป๏ธ null์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์—†์œผ๋ฏ€๋กœ null ์กฐ๊ฑด ์‚ญ์ œ

* โ™ป๏ธ if ํ•œ ์ค„์ด์–ด๋„ ์ค‘๊ด„ํ˜ธ ์‚ฌ์šฉ์œผ๋กœ ์ˆ˜์ •

* โ™ป๏ธ ํ—ˆ์šฉ ์—”๋“œํฌ์ธํŠธ ์ˆ˜์ •

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ ํŠน์ • ๋ชจ์ž„ ๋ฐ ๋ชจ์ž„ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ํ† ํฐ ์—†์ด๋„ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ˆ˜์ •

* โ™ป๏ธ ํ•„์š”ํ•œ api๋งŒ ํ—ˆ์šฉ

* โœจ ๋ชจ์ž„ ๊ฐ€์ž… API ๊ตฌํ˜„

* โ™ป๏ธ ๋ชจ์ž„ ๊ฐ€์ž… API ์ฝ”๋“œ ์ˆ˜์ •

* โ™ป๏ธ entity์— currentMemberCount ์ถ”๊ฐ€ ๋ฐ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ๋ชจ์ž„๊ฐ€์ž… API ์ ์šฉํ•˜์—ฌ ํŠน์ • ๋ชจ์ž„๊ณผ ๋ชจ์ž„๋ฆฌ์ŠคํŠธ ์กฐํšŒ ์ฒ˜๋ฆฌ

* โœจ ๋ชจ์ž„ ์ˆ˜์ • api ๊ตฌํ˜„ ๋ฐ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โœจ ๋ชจ์ž„ ์ˆ˜์ • ์‚ญ์ œ api ๊ตฌํ˜„ ๋ฐ ๋ชจ์ž„ ์ˆ˜์ • api ๋กœ์ง ์ˆ˜์ •

* โ™ป๏ธ ์ฃผ์„ ์ •๋ฆฌ

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ Redis Password ์‚ญ์ œ

* โ™ป๏ธ Redis Password ์‚ญ์ œ

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ Auth ์‚ญ์ œ ๋ฐ fetch join List 2๊ฐœ ์˜ค๋ฅ˜๋กœ platformUrl ์กฐ์ธ ์‚ญ์ œ

---------

Co-authored-by: ์ฃผํ˜„์ค€ <[email protected]>

---------

Co-authored-by: ์ฃผํ˜„์ค€ <[email protected]>
Co-authored-by: Coen90 <[email protected]>
Co-authored-by: coen <[email protected]>

* โ™ป๏ธ ํŽ˜์ด์ง•์—์„œ EntityGraph์™€ GROUP BY ํ•จ๊ป˜ ์“ฐ๋ฉด ๋ชจ์ž„ ๋ฉค๋ฒ„ ์ปฌ๋ ‰์…˜์ด ๋น„์–ด์ง€๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ

* โœจ ๋‚ด๊ฐ€ ์ƒ์„ฑํ•œ ๋ชจ์ž„๊ณผ ๊ฐ€์ž…ํ•œ ๋ชจ์ž„ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* โ™ป๏ธ ๋‚ด๊ฐ€ ์ƒ์„ฑํ•œ/๊ฐ€์ž…ํ•œ ๋ชจ์ž„ api๋Š” ์ธ์ฆ ํ•„์ˆ˜

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ ๊ฐ„๋‹จํ•œ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ์‘๋‹ต dto๋กœ ์ ์šฉ

* โ™ป๏ธ ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •์‹œ ์‚ญ์ œํ•  ์ด๋ฏธ์ง€ ํ•„๋“œ ๋ณด๋‚ด๊ฒŒ๋” ์ˆ˜์ • ๋ฐ ์ด๋ฏธ์ง€ ์‚ญ์ œ์‹œ s3์™€ DB์—์„œ ์‚ญ์ œ

* โ™ป๏ธ fetch join์œผ๋กœ ์ถ”๊ฐ€์ฟผ๋ฆฌ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒŒ ์ˆ˜์ •

---------

Co-authored-by: coen <[email protected]>
Co-authored-by: ์ฃผํ˜„์ค€ <[email protected]>
Co-authored-by: Coen90 <[email protected]>
Co-authored-by: coen <[email protected]>
* refactor: ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๋ณ€๊ฒฝ (๋น„๋™๊ธฐ -> ๋™๊ธฐ) (#26)

* โœจ ๋‚ด๊ฐ€ ์ƒ์„ฑํ•œ ๋ชจ์ž„๊ณผ ๊ฐ€์ž…ํ•œ ๋ชจ์ž„ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* โ™ป๏ธ ๋‚ด๊ฐ€ ์ƒ์„ฑํ•œ/๊ฐ€์ž…ํ•œ ๋ชจ์ž„ api๋Š” ์ธ์ฆ ํ•„์ˆ˜

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ ๊ฐ„๋‹จํ•œ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ์‘๋‹ต dto๋กœ ์ ์šฉ

* โ™ป๏ธ ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •์‹œ ์‚ญ์ œํ•  ์ด๋ฏธ์ง€ ํ•„๋“œ ๋ณด๋‚ด๊ฒŒ๋” ์ˆ˜์ • ๋ฐ ์ด๋ฏธ์ง€ ์‚ญ์ œ์‹œ s3์™€ DB์—์„œ ์‚ญ์ œ

* โ™ป๏ธ fetch join์œผ๋กœ ์ถ”๊ฐ€์ฟผ๋ฆฌ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒŒ ์ˆ˜์ •

* โ™ป๏ธ feature/crew -> temp๋กœ pr (#28)

* โ™ป๏ธ ํ˜„์žฌ ์ฐธ์—ฌ์ž์ˆ˜ ํ•„๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ํŠน์ • ๋ชจ์ž„ ๋ฐ ๋ชจ์ž„ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ํ† ํฐ ์—†์ด๋„ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ˆ˜์ •

* โ™ป๏ธ ํ•„์š”ํ•œ api๋งŒ ํ—ˆ์šฉ

* โ™ป๏ธ null์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์—†์œผ๋ฏ€๋กœ null ์กฐ๊ฑด ์‚ญ์ œ

* โ™ป๏ธ if ํ•œ ์ค„์ด์–ด๋„ ์ค‘๊ด„ํ˜ธ ์‚ฌ์šฉ์œผ๋กœ ์ˆ˜์ •

* โ™ป๏ธ ํ—ˆ์šฉ ์—”๋“œํฌ์ธํŠธ ์ˆ˜์ •

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ ํŠน์ • ๋ชจ์ž„ ๋ฐ ๋ชจ์ž„ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ํ† ํฐ ์—†์ด๋„ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ˆ˜์ •

* โ™ป๏ธ ํ•„์š”ํ•œ api๋งŒ ํ—ˆ์šฉ

* โœจ ๋ชจ์ž„ ๊ฐ€์ž… API ๊ตฌํ˜„

* โ™ป๏ธ ๋ชจ์ž„ ๊ฐ€์ž… API ์ฝ”๋“œ ์ˆ˜์ •

* โ™ป๏ธ entity์— currentMemberCount ์ถ”๊ฐ€ ๋ฐ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ๋ชจ์ž„๊ฐ€์ž… API ์ ์šฉํ•˜์—ฌ ํŠน์ • ๋ชจ์ž„๊ณผ ๋ชจ์ž„๋ฆฌ์ŠคํŠธ ์กฐํšŒ ์ฒ˜๋ฆฌ

* โ™ป๏ธ ๋„๋ฉ”์ธ swagger์™€ ํ”„๋ก ํŠธ ๋ฐฐํฌ์ฃผ์†Œ CORS ํ—ˆ์šฉ (#20)

* โœจ ๋ชจ์ž„ ์ˆ˜์ • api ๊ตฌํ˜„ ๋ฐ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โœจ ๋ชจ์ž„ ์ˆ˜์ • ์‚ญ์ œ api ๊ตฌํ˜„ ๋ฐ ๋ชจ์ž„ ์ˆ˜์ • api ๋กœ์ง ์ˆ˜์ •

* โ™ป๏ธ ์ฃผ์„ ์ •๋ฆฌ

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ Redis Password ์‚ญ์ œ

* โ™ป๏ธ Redis Password ์‚ญ์ œ

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ Auth ์‚ญ์ œ ๋ฐ fetch join List 2๊ฐœ ์˜ค๋ฅ˜๋กœ platformUrl ์กฐ์ธ ์‚ญ์ œ

* โœจ ๋ชจ์ž„ ๊ฐ€์ž…, ์ˆ˜์ •, ์‚ญ์ œ api ๊ตฌํ˜„ ๋ฐ redis ์„ค์ •๊ณผ ์ผ๋ถ€ ์ˆ˜์ • (#23)

* โ™ป๏ธ ๋„๋ฉ”์ธ swagger์™€ ํ”„๋ก ํŠธ ๋ฐฐํฌ์ฃผ์†Œ CORS ํ—ˆ์šฉ

* feat: ๋ ˆ๋””์Šค ๊ด€๋ จ ์„ค์ • ์ถ”๊ฐ€ ๋ฐ ์ผ๋ถ€ ์ˆ˜์ • (#19)

* feat: ๋ ˆ๋””์Šค ์„ค์ • ์ถ”๊ฐ€

* feat: Redis Properties ๊ฐœ๋ฐœ

* refactor: categories ๋ฆฌ์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๋ฐ›๋„๋ก ๋ณ€๊ฒฝ

* refactor: categories ๋ฆฌ์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๋ฐ›๋„๋ก ๋ณ€๊ฒฝ

* feat: redis ๊ด€๋ จ ์„ค์ • ๋ณ€๊ฒฝ ๋ฐ ์˜ˆ์‹œ ์ฝ”๋“œ ์ถ”๊ฐ€

* feat: redis key๋ฅผ ์œ„ํ•œ ์ƒ์ˆ˜ ํด๋ž˜์Šค ์ถ”๊ฐ€

* feat: redis ๋น„๋ฐ€๋ฒˆํ˜ธ ์ถ”๊ฐ€

* refactor: User ๊ด€๋ จ ์ˆ˜์ •

* docs: ์ฃผ์„ ์ œ๊ฑฐ

* docs: ๋ถˆํ•„์š”ํ•œ ์ฃผ์„ ์ œ๊ฑฐ

* chore: optimize import

* refactor: command, enums ์œ„์น˜ ๋ณ€๊ฒฝ

* refactor: CustomUserDetails interface ์ƒ์„ฑํ•˜์—ฌ ํ•ธ๋“ค๋งํ•˜๋„๋ก ๋ณ€๊ฒฝ

* refactor: ํ˜„์žฌ ์œ ์ € ๋‹‰๋„ค์ž„๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์˜ˆ์™ธ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝ

* fix: ์œ ์ € ์—๋Ÿฌ ์ฝ”๋“œ ์ˆ˜์ •

* fix: ๊ฒ€์ฆ๋กœ์ง ๋ณด์™„

* refactor: ์ค‘๋ณต ๋กœ์ง ์žฌ์‚ฌ์šฉ

* refactor: ์ž˜๋ชป ์‘๋‹ต๋œ UserDetails ์ˆ˜์ •

* fix: ๋ฏธ์ธ๊ฐ€ ์ƒํƒœ์—์„œ security filter ํ†ต๊ณผํ•˜๋Š” ์˜ค๋ฅ˜ ์ˆ˜์ •

---------

Co-authored-by: coen <[email protected]>

* โœจ ๋ชจ์ž„ ๊ฐ€์ž… , ๋ชจ์ž„ ์ˆ˜์ •, ์‚ญ์ œ api ๊ตฌํ˜„ (#21)

* โ™ป๏ธ ํ˜„์žฌ ์ฐธ์—ฌ์ž์ˆ˜ ํ•„๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ํŠน์ • ๋ชจ์ž„ ๋ฐ ๋ชจ์ž„ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ํ† ํฐ ์—†์ด๋„ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ˆ˜์ •

* โ™ป๏ธ ํ•„์š”ํ•œ api๋งŒ ํ—ˆ์šฉ

* โ™ป๏ธ null์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์—†์œผ๋ฏ€๋กœ null ์กฐ๊ฑด ์‚ญ์ œ

* โ™ป๏ธ if ํ•œ ์ค„์ด์–ด๋„ ์ค‘๊ด„ํ˜ธ ์‚ฌ์šฉ์œผ๋กœ ์ˆ˜์ •

* โ™ป๏ธ ํ—ˆ์šฉ ์—”๋“œํฌ์ธํŠธ ์ˆ˜์ •

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ ํŠน์ • ๋ชจ์ž„ ๋ฐ ๋ชจ์ž„ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ํ† ํฐ ์—†์ด๋„ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ˆ˜์ •

* โ™ป๏ธ ํ•„์š”ํ•œ api๋งŒ ํ—ˆ์šฉ

* โœจ ๋ชจ์ž„ ๊ฐ€์ž… API ๊ตฌํ˜„

* โ™ป๏ธ ๋ชจ์ž„ ๊ฐ€์ž… API ์ฝ”๋“œ ์ˆ˜์ •

* โ™ป๏ธ entity์— currentMemberCount ์ถ”๊ฐ€ ๋ฐ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ๋ชจ์ž„๊ฐ€์ž… API ์ ์šฉํ•˜์—ฌ ํŠน์ • ๋ชจ์ž„๊ณผ ๋ชจ์ž„๋ฆฌ์ŠคํŠธ ์กฐํšŒ ์ฒ˜๋ฆฌ

* โœจ ๋ชจ์ž„ ์ˆ˜์ • api ๊ตฌํ˜„ ๋ฐ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โœจ ๋ชจ์ž„ ์ˆ˜์ • ์‚ญ์ œ api ๊ตฌํ˜„ ๋ฐ ๋ชจ์ž„ ์ˆ˜์ • api ๋กœ์ง ์ˆ˜์ •

* โ™ป๏ธ ์ฃผ์„ ์ •๋ฆฌ

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ Redis Password ์‚ญ์ œ

* โ™ป๏ธ Redis Password ์‚ญ์ œ

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

---------

Co-authored-by: ์ฃผํ˜„์ค€ <[email protected]>

* โ™ป๏ธ Auth ์‚ญ์ œ ๋ฐ fetch join List 2๊ฐœ ์˜ค๋ฅ˜๋กœ platformUrl ์กฐ์ธ ์‚ญ์ œ (#22)

* โ™ป๏ธ ํ˜„์žฌ ์ฐธ์—ฌ์ž์ˆ˜ ํ•„๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ํŠน์ • ๋ชจ์ž„ ๋ฐ ๋ชจ์ž„ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ํ† ํฐ ์—†์ด๋„ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ˆ˜์ •

* โ™ป๏ธ ํ•„์š”ํ•œ api๋งŒ ํ—ˆ์šฉ

* โ™ป๏ธ null์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์—†์œผ๋ฏ€๋กœ null ์กฐ๊ฑด ์‚ญ์ œ

* โ™ป๏ธ if ํ•œ ์ค„์ด์–ด๋„ ์ค‘๊ด„ํ˜ธ ์‚ฌ์šฉ์œผ๋กœ ์ˆ˜์ •

* โ™ป๏ธ ํ—ˆ์šฉ ์—”๋“œํฌ์ธํŠธ ์ˆ˜์ •

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ ํŠน์ • ๋ชจ์ž„ ๋ฐ ๋ชจ์ž„ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ํ† ํฐ ์—†์ด๋„ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ˆ˜์ •

* โ™ป๏ธ ํ•„์š”ํ•œ api๋งŒ ํ—ˆ์šฉ

* โœจ ๋ชจ์ž„ ๊ฐ€์ž… API ๊ตฌํ˜„

* โ™ป๏ธ ๋ชจ์ž„ ๊ฐ€์ž… API ์ฝ”๋“œ ์ˆ˜์ •

* โ™ป๏ธ entity์— currentMemberCount ์ถ”๊ฐ€ ๋ฐ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โ™ป๏ธ ๋ชจ์ž„๊ฐ€์ž… API ์ ์šฉํ•˜์—ฌ ํŠน์ • ๋ชจ์ž„๊ณผ ๋ชจ์ž„๋ฆฌ์ŠคํŠธ ์กฐํšŒ ์ฒ˜๋ฆฌ

* โœจ ๋ชจ์ž„ ์ˆ˜์ • api ๊ตฌํ˜„ ๋ฐ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

* โœจ ๋ชจ์ž„ ์ˆ˜์ • ์‚ญ์ œ api ๊ตฌํ˜„ ๋ฐ ๋ชจ์ž„ ์ˆ˜์ • api ๋กœ์ง ์ˆ˜์ •

* โ™ป๏ธ ์ฃผ์„ ์ •๋ฆฌ

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ Redis Password ์‚ญ์ œ

* โ™ป๏ธ Redis Password ์‚ญ์ œ

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ Auth ์‚ญ์ œ ๋ฐ fetch join List 2๊ฐœ ์˜ค๋ฅ˜๋กœ platformUrl ์กฐ์ธ ์‚ญ์ œ

---------

Co-authored-by: ์ฃผํ˜„์ค€ <[email protected]>

---------

Co-authored-by: ์ฃผํ˜„์ค€ <[email protected]>
Co-authored-by: Coen90 <[email protected]>
Co-authored-by: coen <[email protected]>

* โ™ป๏ธ ํŽ˜์ด์ง•์—์„œ EntityGraph์™€ GROUP BY ํ•จ๊ป˜ ์“ฐ๋ฉด ๋ชจ์ž„ ๋ฉค๋ฒ„ ์ปฌ๋ ‰์…˜์ด ๋น„์–ด์ง€๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ

* โœจ ๋‚ด๊ฐ€ ์ƒ์„ฑํ•œ ๋ชจ์ž„๊ณผ ๊ฐ€์ž…ํ•œ ๋ชจ์ž„ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* โ™ป๏ธ ๋‚ด๊ฐ€ ์ƒ์„ฑํ•œ/๊ฐ€์ž…ํ•œ ๋ชจ์ž„ api๋Š” ์ธ์ฆ ํ•„์ˆ˜

* โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* โ™ป๏ธ ๊ฐ„๋‹จํ•œ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ์‘๋‹ต dto๋กœ ์ ์šฉ

* โ™ป๏ธ ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •์‹œ ์‚ญ์ œํ•  ์ด๋ฏธ์ง€ ํ•„๋“œ ๋ณด๋‚ด๊ฒŒ๋” ์ˆ˜์ • ๋ฐ ์ด๋ฏธ์ง€ ์‚ญ์ œ์‹œ s3์™€ DB์—์„œ ์‚ญ์ œ

* โ™ป๏ธ fetch join์œผ๋กœ ์ถ”๊ฐ€์ฟผ๋ฆฌ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒŒ ์ˆ˜์ •

---------

Co-authored-by: coen <[email protected]>
Co-authored-by: ์ฃผํ˜„์ค€ <[email protected]>
Co-authored-by: Coen90 <[email protected]>
Co-authored-by: coen <[email protected]>

* feat: ๋ชจ์ž„ ์•ฝ์† ์ƒ์„ฑ

* feat: ๋ชจ์ž„ ์•ฝ์† ์ƒ์„ฑ API ๊ฐœ๋ฐœ

* feat: jwt ํ† ํฐ ์‘๋‹ต ๋ฐ ์•ˆ์ •์„ฑ ๊ฐœ์„ 

* feat: ์•ฝ์† ์ˆ˜์ • API ๊ฐœ๋ฐœ

* feat: ์•ฝ์† ์‚ญ์ œ API ๊ฐœ๋ฐœ

* feat: ์•ฝ์† ์ฐธ๊ฐ€ API ๊ฐœ๋ฐœ

* feat: ์•ฝ์† ์ฐธ๊ฐ€ API ๊ฐœ๋ฐœ

* feat: ์•ฝ์† ์ฐธ๊ฐ€ ์ทจ์†Œ API ๊ฐœ๋ฐœ

* refactor: ์•ฝ์† ์‚ญ์ œ ์—ฐ๊ด€๊ด€๊ณ„ ์ถ”๊ฐ€

* chore: optimize import

* feat: ์•ฝ์† ์กฐํšŒ API ๊ฐœ๋ฐœ

* chore: API ์ˆœ์„œ ๋ณ€๊ฒฝ

* refactor: API ์‘๋‹ต๊ฐ’ ๋ณ€๊ฒฝ

* refactor: API ์‘๋‹ต๊ฐ’ ๋ณ€๊ฒฝ

* fix: ์•ฝ์† ์ƒ์„ฑ ํ›„ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ flush ๋กœ์ง ์ถ”๊ฐ€

* โœจ QueryDsl ํ™œ์šฉํ•˜์—ฌ ๋ชจ์ž„ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* โœจ ๋ชจ์ž„ ํƒˆํ‡ด ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐ QueryDsl ํ™œ์šฉํ•˜์—ฌ ๋ชจ์ž„ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„

---------

Co-authored-by: Coen90 <[email protected]>
Co-authored-by: coen <[email protected]>
Co-authored-by: ์ฃผํ˜„์ค€ <[email protected]>
Co-authored-by: coen <[email protected]>
@bikooju
Copy link
Collaborator Author

bikooju commented Jan 15, 2026

๐Ÿค– AI Code Review

์ฝ”๋“œ ๋ฆฌ๋ทฐ

โœ… ์ž˜๋œ ์ 

  • NotificationAsyncService ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋„๋ก ์„ค๊ณ„ํ•œ ์ 
  • @Async์™€ @Transactional(readOnly = true)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์™€ ํŠธ๋žœ์žญ์…˜์„ ๊ด€๋ฆฌํ•˜๋Š” ์ 

โš ๏ธ ๊ฐœ์„ ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„

1. Null Pointer Exception ๋ฐฉ์ง€

๋ฌธ์ œ์ : notificationRepository.findUnread(userId)์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” List<Notification>์ด null์ผ ๊ฒฝ์šฐ NullPointerException์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ

๊ฐœ์„  ์ „:

List<Notification> unread = notificationRepository.findUnread(userId);
if (!unread.isEmpty()) {
    notificationSsePort.sendUnreadOnConnect(userId, emitter, unread);
}

๊ฐœ์„  ํ›„:

List<Notification> unread = notificationRepository.findUnread(userId);
if (unread != null && !unread.isEmpty()) {
    notificationSsePort.sendUnreadOnConnect(userId, emitter, unread);
}

์ด์œ : notificationRepository.findUnread(userId)์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’์ด null์ผ ๊ฒฝ์šฐ isEmpty()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด NullPointerException์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ null ์ฒดํฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐฉ์ง€ํ•œ๋‹ค.

2. ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ

๋ฌธ์ œ์ : NotificationService ํด๋ž˜์Šค์—์„œ @Transactional ์–ด๋…ธํ…Œ์ด์…˜์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ

๊ฐœ์„  ์ „:

@Override
@Transactional
public void createAndSend(CreateAndSendNotificationCommand command) {
    // ...
}

@Override
@Transactional
public void read(ReadNotificationCommand command) {
    // ...
}

๊ฐœ์„  ํ›„:

@Service
@Transactional
public class NotificationService {
    // ...
}

์ด์œ : ํด๋ž˜์Šค ์ „์ฒด์— @Transactional์„ ์ ์šฉํ•˜์—ฌ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ๋ฅผ ์ผ์›ํ™”ํ•˜๊ณ  ์ฝ”๋“œ ์ค‘๋ณต์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

3. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

๋ฌธ์ œ์ : NotificationAsyncService ํด๋ž˜์Šค์—์„œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ  ์žˆ์Œ

๊ฐœ์„  ์ „:

@Async
@Transactional(readOnly = true)
public void pushUnreadOnConnect(Long userId, SseEmitter emitter) {
    // ...
}

๊ฐœ์„  ํ›„:

@Async
@Transactional(readOnly = true)
public void pushUnreadOnConnect(Long userId, SseEmitter emitter) {
    try {
        // ...
    } catch (Exception e) {
        // ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋กœ์ง
    }
}

์ด์œ : ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฌด์‹œ๋˜๊ณ  ๋กœ๊ทธ์— ๊ธฐ๋ก๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์˜ˆ์™ธ๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

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.

3 participants