Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
331 commits
Select commit Hold shift + click to select a range
e420009
Merge branch develop
yubin012 Feb 22, 2026
cbc4812
[FIX] ์ฝ”๋“œ๋ž˜๋น— ๋ฐ˜์˜ ์ฝ”๋“œ ์ˆ˜์ •
yubin012 Feb 22, 2026
544c0ad
[FIX] ์ฝ”๋“œ๋ž˜๋น— ๋ฐ˜์˜ ์ฝ”๋“œ ์ˆ˜์ •_v2
yubin012 Feb 22, 2026
1250d4c
[FIX]: ์ˆํผ ์›๋ณธ ์ฝ˜ํ…์ธ  null ์ฒ˜๋ฆฌ / snake_case ์ˆ˜์ •
phonil Feb 23, 2026
fd73dfb
[OT-95][FEAT]: ๋ฐฑ์˜คํ”ผ์Šค ์ˆํผ ๊ด€๋ฆฌ API ์ถ”๊ฐ€
phonil Feb 23, 2026
d62cd15
[CHORE]: ์ถฉ๋Œ ํ•ด๊ฒฐ
phonil Feb 23, 2026
680c145
[CHORE]: PR ๋ณ‘ํ•ฉ
phonil Feb 23, 2026
db9994b
[CHORE]: Develop Merge
phonil Feb 23, 2026
601c884
[FIX]: getSeriesContets ๋ฐ˜ํ™˜ ํƒ€์ž… ์ œ๋„ค๋ฆญ์œผ๋กœ ์ˆ˜์ •
yubin012 Feb 23, 2026
694f6de
[REFACTOR]: ์‹œ๋ฆฌ์ฆˆ ์กฐํšŒ API ์ปค๋ฉ˜ํŠธ ๋ฐ˜์˜ ๊ตฌ์กฐ ๊ฐœ์„ 
yubin012 Feb 23, 2026
5b9663a
[FEAT]: ๋ฐฑ์˜คํ”ผ์Šค ๋Œ€์‹œ๋ณด๋“œ - ์—…๋กœ๋“œ ์ค‘์ธ ์ž‘์—… ๋ชฉ๋ก ์กฐํšŒ API ์ถ”๊ฐ€
phonil Feb 23, 2026
88023dd
Merge branch 'develop' into OT-70-feature/user-series-detail
yubin012 Feb 23, 2026
879b267
[FEAT]: ๋ฐฑ์˜คํ”ผ์Šค ์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒ API ์ถ”๊ฐ€
phonil Feb 23, 2026
0b01b45
git merge devleop
yubin012 Feb 23, 2026
23ec340
Merge pull request #58 from OpenTheTaste/OT-71-feature/user-series-deโ€ฆ
yubin012 Feb 23, 2026
130bb2a
[FEAT]: ๋ฐฑ์˜คํ”ผ์Šค ์›”๋ณ„ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ #ํƒœ๊ทธ ์‹œ์ฒญ ํ†ต๊ณ„ API ์ถ”๊ฐ€
phonil Feb 23, 2026
45ac238
[DOCS]: CodeRabbit ๊ฐ€์ด๋“œ๋ผ์ธ ์ถ”๊ฐ€
phonil Feb 23, 2026
709e6a2
[CHORE]: Category Repository ์ถฉ๋Œ ํ•ด๊ฒฐ
phonil Feb 23, 2026
aba4efb
[FEAT]: ์—…๋กœ๋“œ ์ž‘์—… ์กฐํšŒ ์‹œ ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฉด ์กฐํšŒ x
phonil Feb 23, 2026
b966d1f
Merge pull request #59 from OpenTheTaste/OT-79-feature/backoffice-dasโ€ฆ
yubin012 Feb 23, 2026
d120947
[FEAT]: ์ฝ˜ํ…์ธ  ๊ธฐ๋ณธ ์ƒ์„ธ ์กฐํšŒ API
yubin012 Feb 24, 2026
f133e41
[OT-104] [FEAT]: ๊ด€๋ฆฌ์ž ์—…๋กœ๋“œ API ๊ตฌํ˜„ ๋ฐ S3/infra ๋ถ„๋ฆฌ
arlen02-01 Feb 23, 2026
e330c76
[OT-104] [DOCS]: ์—…๋กœ๋“œ API Swagger ๋ฌธ์„œํ™” ๋ณด๊ฐ•
arlen02-01 Feb 24, 2026
7e1a160
[OT-104] [DOCS]: ์—…๋กœ๋“œ Response DTO Schema ๋ช…์„ธ ์ถ”๊ฐ€
arlen02-01 Feb 24, 2026
32a0169
[OT-104] [REFACTOR]: ์—…๋กœ๋“œ ์‘๋‹ต ๋ณ€ํ™˜ Mapper ํŒจํ„ด์œผ๋กœ ๋ถ„๋ฆฌ
arlen02-01 Feb 24, 2026
5d3708c
[OT-104] [REFACTOR]: ์—…๋กœ๋“œ DTO ํŒจํ‚ค์ง€ ๊ฒฝ๋กœ ์ •๋ฆฌ ๋ฐ import ์ˆ˜์ •
arlen02-01 Feb 24, 2026
ff7c125
[OT-104] [DOCS]: ContentsUploadResponse JavaDoc ์ •๋ฆฌ
arlen02-01 Feb 24, 2026
84665cf
[OT-104][FIX]: sanitizeFileName์—์„œ ํ•œ๊ธ€ ํŒŒ์ผ๋ช… ๋ณด์กด ์ฒ˜๋ฆฌ
arlen02-01 Feb 24, 2026
b4c7434
[OT-104][DOCS]: ์—…๋กœ๋“œ ์š”์ฒญ videoSize ๋‹จ์œ„๋ฅผ KB๋กœ ๋ช…์‹œ
arlen02-01 Feb 24, 2026
e37a6d3
[OT-104][FIX]: Media/Contents/ShortForm ์ €์žฅ ํ‚ค ์—…๋ฐ์ดํŠธ null ๋ฐฉ์–ด ์ถ”๊ฐ€
arlen02-01 Feb 24, 2026
be57905
[OT-104][BUILD]: infra-s3 AWS SDK๋ฅผ BOM ๊ธฐ๋ฐ˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๋กœ ์ „ํ™˜
arlen02-01 Feb 24, 2026
ea972f9
[OT-104][FIX]: S3 Presign ์‹คํŒจ ์‹œ ์•ˆ์ „ํ•œ ๋ฉ”์‹œ์ง€๋กœ ์˜ˆ์™ธ ๋ž˜ํ•‘
arlen02-01 Feb 24, 2026
f390392
[OT-104][REFACTOR]: ์—…๋กœ๋“œ ๊ณตํ†ต ๋กœ์ง UploadHelper๋กœ ์ถ”์ถœ ๋ฐ ์„œ๋น„์Šค ์ค‘๋ณต ์ œ๊ฑฐ
arlen02-01 Feb 24, 2026
4319916
[OT-104][FIX]: ์—…๋กœ๋“œ ์š”์ฒญ duration/videoSize ์Œ์ˆ˜ ์ž…๋ ฅ ๊ฒ€์ฆ ์ถ”๊ฐ€
arlen02-01 Feb 24, 2026
a9235b0
[FEAT]: ๋งˆ์ดํŽ˜์ด์ง€ ํ”„๋กœํ•„ ์กฐํšŒ API
marulog Feb 24, 2026
4a8fd17
[FEAT]: ์นดํ…Œ๊ณ ๋ฆฌ ์กฐํšŒ API
marulog Feb 24, 2026
de8cf87
[FEAT]: ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ํƒœ๊ทธ ์กฐํšŒ API
marulog Feb 24, 2026
77e86a5
[FEAT]: ์ด๋ฆ„, ์„ ํ˜ธ ํƒœ๊ทธ ์ˆ˜์ • API
marulog Feb 24, 2026
c4f7d64
[FEAT]: ์˜จ๋ณด๋”ฉ ํ™”๋ฉด์—์„œ์˜ ์„ ํ˜ธ ํƒœ๊ทธ ์„ค์ • API
marulog Feb 25, 2026
01e5439
[FEAT]: ํŠธ๋žœ์Šค์ฝ”๋”ฉ ํด๋” ๋ฐ ์˜์กด์„ฑ ์ •๋ฆฌ
phonil Feb 25, 2026
7d9e19f
[FEAT]: ์‘๋‹ต๊ฐ’์— ํƒœ๊ทธ Id ์ถ”๊ฐ€
marulog Feb 25, 2026
634a01b
[FEAT]: ์Šค์›จ๊ฑฐ ๋ฌธ์„œ ์ž‘์„ฑ
marulog Feb 25, 2026
45f56ad
[CHORE]: ํŠธ๋žœ์Šค์ฝ”๋”ฉ ๋ฐ ํ yml ์„ค์ • ์ถ”๊ฐ€
phonil Feb 25, 2026
2388573
[OT-104][REFACTOR]: ์—…๋กœ๋“œ ๊ถŒํ•œ ๊ฒ€์ฆ์„ SecurityConfig requestMatcher๋กœ ์ด๊ด€
arlen02-01 Feb 25, 2026
7f8290a
[OT-104][REFACTOR]: ์—…๋กœ๋“œ ํ™•์žฅ์ž-์ฝ˜ํ…์ธ ํƒ€์ž… ๋งคํ•‘์„ ExtensionEnum์œผ๋กœ ๊ณตํ†ตํ™”
arlen02-01 Feb 25, 2026
0838877
[OT-104][DOCS]: ์—…๋กœ๋“œ Request/Response DTO Schema(type, ์„ค๋ช…, ์˜ˆ์‹œ) ๋ณด๊ฐ•
arlen02-01 Feb 25, 2026
2f380b0
[OT-104][REFACTOR]: Contents originUrl null ๋ฐฉ์–ด๋ฅผ ์„œ๋น„์Šค ์ •์ฑ…์— ๋งž๊ฒŒ ์ •๋ฆฌ
arlen02-01 Feb 25, 2026
22d869e
[OT-104][REFACTOR]: Media/ShortForm ์ €์žฅ ํ‚ค null ๋ฐฉ์–ด๋ฅผ ์„œ๋น„์Šค ์ •์ฑ…์— ๋งž๊ฒŒ ์ •๋ฆฌ
arlen02-01 Feb 25, 2026
cd9686b
[OT-104][REFACTOR]: ๊ด€๋ฆฌ์ž ์—…๋กœ๋“œ ๊ถŒํ•œ ์ •์ฑ… ์ •๋ฆฌ ๋ฐ ์—…๋กœ๋“œ API ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค๋ช… ๋ฌธ๊ตฌ ์ˆ˜์ •
arlen02-01 Feb 25, 2026
7e46ce1
[FIX]: ์˜คํƒ€ ์ˆ˜์ •
marulog Feb 25, 2026
f3b3e23
Merge pull request #64 from OpenTheTaste/OT-104-feature/upload-api
arlen02-01 Feb 25, 2026
da7903c
[FEAT]: RabbitMQ ๋ฐ ๋ฆฌ์Šค๋„ˆ ์ƒ์„ฑ
phonil Feb 25, 2026
f633647
[FEAT]: ํŠธ๋žœ์Šค์ฝ”๋”ฉ ํŒŒ์ดํ”„๋ผ์ธ ๋ฐ ๋ฉ”์‹œ์ง€ ์ƒ์„ฑ
phonil Feb 25, 2026
7eb6e30
[FEAT]: FFmpeg ์‹คํ–‰๊ธฐ ์ƒ์„ฑ
phonil Feb 25, 2026
5e15a43
[FEAT]: ์ €์žฅ์†Œ ํด๋ž˜์Šค ์ƒ์„ฑ
phonil Feb 25, 2026
80343f5
[CHORE]: git Merge ์ถฉ๋Œ ํ•ด๊ฒฐ
phonil Feb 25, 2026
6b6db92
[FEAT]: Valid ์ถ”๊ฐ€
marulog Feb 25, 2026
d2db8bf
[FEAT]: ๋ฉฑ๋“ฑ์„ฑ ๋ณด์žฅ
marulog Feb 25, 2026
eae8201
Merge branch 'develop' of https://github.com/OpenTheTaste/backend intโ€ฆ
marulog Feb 25, 2026
289b42a
[FEAT]: ์ƒ์„ธ ํŽ˜์ด์ง€ ์ง„์ž… ์‹œ ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ(์žฌ์ƒ๋ชฉ๋ก) ๋ผˆ๋Œ€ ๊ตฌํ˜„
yubin012 Feb 25, 2026
7afb085
[FIX]: BOM ํ™•์žฅ์ž ์ œ๊ฑฐ
marulog Feb 25, 2026
bc039f1
Merge branch 'develop' of https://github.com/OpenTheTaste/backend intโ€ฆ
phonil Feb 25, 2026
d4208b1
[BUILD]: RabbitMQ docker compose ์„ค์ • ๋ฐ yml ์ˆ˜์ •
phonil Feb 25, 2026
b6d14a2
[FEAT]: ์นดํ…Œ๊ณ ๋ฆฌ ์•„์ด๋”” 1 ์ด์ƒ ๊ฐ’ ๊ฒ€์ฆ
marulog Feb 25, 2026
e9c3904
[FEAT]: PATCH์‹œ ์œ ์ € ์•„์ด๋”” ๊ณต๋ฐฑ ์ฒ˜๋ฆฌ ์˜ˆ์™ธ ์ถ”๊ฐ€
marulog Feb 25, 2026
2105eff
[OT-93] [FEAT]: ๋งˆ์ดํŽ˜์ด์ง€ API ๊ตฌํ˜„
marulog Feb 25, 2026
444b990
[FEAT]: ffmpeg ํƒ€์ž„์•„์›ƒ ์„ค์ • ๋ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
phonil Feb 25, 2026
e97e646
[DOCS]: ๋ถˆํ•„์š” ์ฃผ์„ ์ œ๊ฑฐ
phonil Feb 25, 2026
4182fb3
[CHORE]: Develop Merge ํ›„ ๋ฐ˜์˜
phonil Feb 25, 2026
c466756
[OT-109][FEAT]: ํŠธ๋žœ์Šค์ฝ”๋”ฉ ์„œ๋ฒ„ ๊ตฌ์กฐ ๊ฒฐ์ • ๋ฐ ํ•„์ˆ˜ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
phonil Feb 25, 2026
788bae1
์˜ค๋ฅ˜ ๋ชป์ฐพ์Œ
yubin012 Feb 25, 2026
6f502ca
[DELETE]: gitKeep ์‚ญ์ œ
marulog Feb 25, 2026
5b4c0db
[FEAT]: ๋ถ๋งˆํฌ ์ˆ˜์ • API
marulog Feb 25, 2026
798114a
[FEAT]: ๋ถ๋งˆํฌ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ API
marulog Feb 26, 2026
15bf5cd
[FEAT]: ๋ถ๋งˆํฌ ์ฝ˜ํ…์ธ ๋งŒ ์กฐํšŒ๋˜๋„๋ก ๋ณ€๊ฒฝ
marulog Feb 26, 2026
ab43183
[OT-125][FEATURE]: ์—…๋กœ๋“œ API ํƒœ๊ทธ/์นดํ…Œ๊ณ ๋ฆฌ ์—ฐ๋™ ๋ฐ ์ˆํผ ์—…๋กœ๋“œ ๊ฒ€์ฆ ๋ณด์™„
arlen02-01 Feb 26, 2026
5df2a43
[FEAT]: ๋ถ๋งˆํฌ ์ˆํผ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ API
marulog Feb 26, 2026
acff601
[FEAT]: ์Šค์›จ๊ฑฐ API ์ž‘์„ฑ
marulog Feb 26, 2026
3fd856e
Merge branch 'develop' of https://github.com/OpenTheTaste/backend intโ€ฆ
marulog Feb 26, 2026
f7cfbde
[OT-125][FIX]: MediaTagLinker media null ์ž…๋ ฅ ๊ฒ€์ฆ ์ถ”๊ฐ€
arlen02-01 Feb 26, 2026
2e14e39
[OT-125][FIX]: ์—…๋กœ๋“œ INVALID_INPUT ์˜ˆ์™ธ ๋ฉ”์‹œ์ง€ ๊ตฌ์ฒดํ™”
arlen02-01 Feb 26, 2026
a1808b3
[FEAT]: ๊ฒ€์ฆ ์–ด๋…ธํ…Œ์ด์…˜ ์ถ”๊ฐ€
marulog Feb 26, 2026
68080b0
[FEAT]: ์ตœ์‹ ์ˆœ ์ •๋ ฌ ์ถ”๊ฐ€
marulog Feb 26, 2026
efa35fe
[FIX]: ์ปจ๋ฒค์…˜ ๊ทœ์น™์— ๋”ฐ๋ฅธ ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž…๋ณ€๊ฒฝ
marulog Feb 26, 2026
dfcaf80
[FEAT]: ์ปจ๋ฒค์…˜ ๊ทœ์น™์— ๋”ฐ๋ฅธ type ์†์„ฑ ๋ช…์‹œ
marulog Feb 26, 2026
70cddf6
[FEAT]: ์ปจ๋ฒค์…˜ ๊ทœ์น™์— ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ ๋ณ„ ํŠธ๋žœ์žญ์…˜ ๋ช…์‹œ
marulog Feb 26, 2026
7e149cc
[FIX]: ์ปจ๋ฒค์…˜ ๊ทœ์น™์— ๋”ฐ๋ฅธ ๊ฒ€์ฆ ์–ด๋…ธํ…Œ์ด์…˜ ๋ถ„๋ฆฌ
marulog Feb 26, 2026
ce8efa2
[OT-125][FEATURE]: ์—…๋กœ๋“œ ์š”์ฒญ์„ ์นดํ…Œ๊ณ ๋ฆฌ/ํƒœ๊ทธ ID ๊ธฐ๋ฐ˜์œผ๋กœ ์ „ํ™˜
arlen02-01 Feb 26, 2026
96ea7af
[OT-125][FIX]: ์—…๋กœ๋“œ ํ™•์žฅ์ž/์ˆํผ ํƒ€๊ฒŸ ์˜ˆ์™ธ์ฝ”๋“œ ์ ์šฉ
arlen02-01 Feb 26, 2026
eec0e7d
[CHORE]: ๋ถˆํ•„์š” ํŒŒ์ผ ์ œ๊ฑฐ ๋ฐ ํด๋” ๋ณ€๊ฒฝ
phonil Feb 26, 2026
4806d5d
[DELETE]: gitkeep ์‚ญ์ œ
marulog Feb 26, 2026
428595a
[FEAT]: ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€
marulog Feb 26, 2026
1c91776
[FEAT]: ์ข‹์•„์š” ์ˆ˜์ • API ๊ฐœ๋ฐœ
marulog Feb 26, 2026
f735c5e
[FEAT]: ์Šค์›จ๊ฑฐ ๋ฌธ์„œ ์ž‘์„ฑ
marulog Feb 26, 2026
72125fe
[OT-134][CHORE]: GitHub Actions ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ GitHub Secrets ์ฐธ์กฐ๋กœ ์ „ํ™˜
arlen02-01 Feb 26, 2026
e8f2e44
[OT-134][FIX]: Swagger ์ ‘์† ๊ฒฝ๋กœ ๋ฐ ์„ค์ • ๊ต์ •
arlen02-01 Feb 26, 2026
302c065
[OT-134][FIX]: Admin ์ธ์ฆ ๋ฐ ๋ณด์•ˆ ๊ฒฝ๋กœ๋ฅผ back-office prefix๋กœ ํ†ต์ผ
arlen02-01 Feb 26, 2026
a26c316
[OT-134][FIX]: SSM ์›๊ฒฉ ๋ช…๋ น ์ด์Šค์ผ€์ดํ”„๋ฅผ EC2 ํ‰๊ฐ€ ๊ธฐ์ค€์œผ๋กœ ๊ต์ •
arlen02-01 Feb 26, 2026
9f38e41
[OT-134][FIX]: Admin ์ธ์ฆ ์—”๋“œํฌ์ธํŠธ๋ฅผ back-office ๊ฒฝ๋กœ๋กœ ํ†ต์ผ
arlen02-01 Feb 26, 2026
bf869d1
Merge pull request #75 from OpenTheTaste/OT-134-deploy/cicd-transfer-โ€ฆ
arlen02-01 Feb 26, 2026
24ed747
[FIX]: ์—๋Ÿฌ์ฝ”๋“œ ๋ณ€๊ฒฝ
marulog Feb 26, 2026
d52fde2
[FIX]: ์ฒซ ์ข‹์•„์š” ๋ถ„๋ฆฌ ์ฒ˜๋ฆฌ ์ˆ˜์ •
marulog Feb 26, 2026
6b46e64
Merge branch 'develop' of https://github.com/OpenTheTaste/backend intโ€ฆ
marulog Feb 26, 2026
2bc2a9b
[BUILD]: ์˜์กด์„ฑ ์ œ๊ฑฐ
marulog Feb 26, 2026
d1836e8
[OT-128] [FEAT] : ์ข‹์•„์š” ์ˆ˜์ • API ๊ตฌํ˜„
marulog Feb 26, 2026
80ae7f9
Merge branch 'develop' of https://github.com/OpenTheTaste/backend intโ€ฆ
marulog Feb 26, 2026
bb19d97
[FIX]: ์—๋Ÿฌ ์ฝ”๋“œ ์˜คํƒ€ ์ˆ˜์ •
marulog Feb 26, 2026
ce3311f
[REFACTOR]: ์•ˆ์“ฐ๋Š” ์ž„ํฌํŠธ๋ฌธ ์ œ๊ฑฐ
marulog Feb 26, 2026
f6d9992
[FIX]: mediaType์— ๋”ฐ๋ฅธ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ
marulog Feb 26, 2026
2cb41df
[FIX]: ์Šค์›จ๊ฑฐ ์‘๋‹ต ์ฝ”๋“œ ์ˆ˜์ •
marulog Feb 26, 2026
91e2b80
[CHORE]: gitkeep ์‚ญ์ œ
marulog Feb 26, 2026
efcbea5
[STYLE]: ์Šค์›จ๊ฑฐ ์ด๋ฆ„ ๋ณ€๊ฒฝ
marulog Feb 26, 2026
0e7e7d6
[FEAT]: ์—๋Ÿฌ ์ฝ”๋“œ ์ถ”๊ฐ€
marulog Feb 26, 2026
f8063da
[FEAT]: ๋Œ“๊ธ€ ๋“ฑ๋ก API
marulog Feb 26, 2026
b65d442
[FEAT]: ์ปจํ…์ธ  ์ƒ์„ธ ํŽ˜์ด์ง€์˜ ๋Œ“๊ธ€ ๋ชฉ๋ก ์กฐํšŒ API ๊ตฌํ˜„
yubin012 Feb 26, 2026
0174bd8
[FEAT]: ๋Œ“๊ธ€ ์ˆ˜์ • API ๊ฐœ๋ฐœ
marulog Feb 27, 2026
c5ba971
Merge branch 'develop' of https://github.com/OpenTheTaste/backend intโ€ฆ
phonil Feb 27, 2026
29071f4
[FEAT]: ๊ฒ€์ƒ‰ ๋Œ“๊ธ€์— ์Šคํฌ์ผ๋Ÿฌ ์—ฌ๋ถ€ ์ถ”๊ฐ€
yubin012 Feb 27, 2026
b6a3e7b
[OT-119][FEAT]: ๋ถ๋งˆํฌ API ๊ตฌํ˜„
marulog Feb 27, 2026
9047a03
Merge branch 'develop' of https://github.com/OpenTheTaste/backend intโ€ฆ
phonil Feb 27, 2026
dc0a015
Merge branch 'develop' into OT-125-feature/upload-api-tag
arlen02-01 Feb 27, 2026
75fbe5e
[OT-125][FIX]: ErrorCode ๋น„์ฆˆ๋‹ˆ์Šค ์ฝ”๋“œ(B0XX) ์ •๋ฆฌ
arlen02-01 Feb 27, 2026
0ac4404
Merge pull request #71 from OpenTheTaste/OT-125-feature/upload-api-tag
arlen02-01 Feb 27, 2026
f96562d
Merge branch 'develop' of https://github.com/OpenTheTaste/backend intโ€ฆ
phonil Feb 27, 2026
5577406
[FEAT]: ๋Œ“๊ธ€ ์‚ญ์ œ softDelete API ๊ฐœ๋ฐœ
marulog Feb 27, 2026
829e333
[FIX]: contents ์‘๋‹ตํ•„๋“œ์— MediaType ์ œ๊ฑฐ(ํ•ญ์ƒ contents ๋งŒ ์กฐํšŒ)
yubin012 Feb 27, 2026
03ee73e
merge from devleop
yubin012 Feb 27, 2026
52f51b2
[OT-139] [CHORE]: DB ์ ‘์† ์ •๋ณด ์„ค์ • ์˜ค๋ฅ˜์ˆ˜์ •
arlen02-01 Feb 27, 2026
5c66e97
[OT-139] Merge branch 'develop' of https://github.com/OpenTheTaste/baโ€ฆ
arlen02-01 Feb 27, 2026
e33228a
Merge pull request #79 from OpenTheTaste/OT-139-fix/decryption-db-env
arlen02-01 Feb 27, 2026
576e001
[FIX]: admin์„œ๋ฒ„ ํ—ฌ์Šค์ฒดํฌ ๊ฒฝ๋กœ ์ˆ˜์ •
arlen02-01 Feb 27, 2026
422155b
[OT-141] Merge branch 'develop' of https://github.com/OpenTheTaste/baโ€ฆ
arlen02-01 Feb 27, 2026
80bb703
Merge pull request #82 from OpenTheTaste/OT-141-fix/admin-api-healthcโ€ฆ
arlen02-01 Feb 27, 2026
642ea51
[FEAT]: ๋‚ด ๋Œ“๊ธ€ ๋ชฉ๋ก ์กฐํšŒ API ๊ฐœ๋ฐœ
marulog Feb 27, 2026
5344605
Merge branch 'develop' of https://github.com/OpenTheTaste/backend intโ€ฆ
marulog Feb 27, 2026
28bde47
[FIX]: ์ฝ”๋“œ๋ž˜๋น— ๋ฐ˜์˜ ์ˆ˜์ • ์ฝ”๋“œ
yubin012 Feb 27, 2026
677ac7a
์ค€ํฌ ์ฝ”๋“œ ์ค„๋ฐ”๊ฟˆ ์›์ƒ๋ณต๊ตฌ(๋ฌด์‹œ๋ฐ”๋žŒ)
yubin012 Feb 27, 2026
619a891
[FIX]: ์ฝ”๋“œ๋ž˜๋น— ์ œ์•ˆ ๋ฐ˜์˜ ์™„๋ฃŒ
yubin012 Feb 27, 2026
a66b4b1
[FIX]: ์ฝ”๋“œ๋ž˜๋น— ์ˆ˜์ • ๋ฐ˜์˜
yubin012 Feb 27, 2026
79a24be
[CHORE]: ์ฃผ์„, ์˜คํƒ€, ์ปจ๋ฒค์…˜ ๊ทœ์น™์— ๋”ฐ๋ฅธ ์ˆ˜์ •
marulog Feb 27, 2026
050bbc5
[FIX]: ์—๋Ÿฌ์ฝ”๋“œ ์ˆ˜์ •
marulog Feb 27, 2026
6589833
[FEAT]: ์‘๋‹ต ์ฝ”๋“œ 201 ๋ณ€๊ฒฝ
marulog Feb 27, 2026
ae96a7b
[FEAT]: ๋Œ“๊ธ€ ๋„๋ฉ”์ธ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ถ”๊ฐ€
marulog Feb 27, 2026
2119ec1
[FIX]: source defalut ๊ฐ’์„ ์ถ”์ฒœ๋ฆฌ์ŠคํŠธ๋กœ ์ˆ˜์ •
yubin012 Feb 27, 2026
534e4de
[FEAT]: NotNull ์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€
marulog Feb 28, 2026
8e675dc
[FEAT]: ๋Œ“๊ธ€ ์‚ญ์ œ Patch ์ˆ˜์ •, ์‘๋‹ต๋ฐ”๋”” ์‚ญ์ œ
marulog Feb 28, 2026
b1cd539
[OT-136][FEAT]: ๋Œ“๊ธ€ CRUD API ๊ตฌํ˜„
marulog Feb 28, 2026
c2fb9b9
[FEAT]: ์‹ ๊ทœ ํšŒ์› ๋กœ์ง ์ˆ˜์ •
marulog Feb 28, 2026
c0cb59d
[FEAT]: Member ์ปฌ๋Ÿผ ์ถ”๊ฐ€์— ๋”ฐ๋ฅธ flyway ๋ฒ„์ „ ์ถ”๊ฐ€
marulog Feb 28, 2026
f395a8f
[FEAT]: ์ฟ ํ‚ค ๋ฉ”์†Œ๋“œ ์œ ํ‹ธ ํŒŒ์ผ๋กœ ๋ณ€๊ฒฝ
marulog Feb 28, 2026
363cbaf
[DOCS]: ์Šค์›จ๊ฑฐ ์„ค๋ช… ์ถ”๊ฐ€
marulog Feb 28, 2026
128f1dd
[FEAT]: ์ฟ ํ‚ค ๊ณตํ†ต ์œ ํ‹ธ ์ถ”๊ฐ€
marulog Feb 28, 2026
8fe448d
[DOCS]: ์Šคํ‚ค๋งˆ ์ถ”๊ฐ€
marulog Feb 28, 2026
3eab277
[DOCS]: ์Šคํ‚ค๋งˆ ์ถ”๊ฐ€
marulog Feb 28, 2026
ac8c0cb
[FEAT]: CORS ์„ค์ • ๋ฐ ๊ถŒํ•œ ์„ค์ •
marulog Feb 28, 2026
08de875
[FEAT]: ๋กœ์ปฌ์šฉ CORS ์„ค์ • ์ถ”๊ฐ€
marulog Feb 28, 2026
02c2743
Merge branch 'develop' of https://github.com/OpenTheTaste/backend intโ€ฆ
marulog Feb 28, 2026
1effe92
Merge branch 'develop' of https://github.com/OpenTheTaste/backend intโ€ฆ
phonil Feb 28, 2026
3762cd2
[FEAT]: ๋กœ๊ทธ์•„์›ƒ ์‹œ ์ธ์ฆ ํ›„ ์ฒ˜๋ฆฌ -> NPE ๋ฐฉ์ง€ ์ฒ˜๋ฆฌ
marulog Feb 28, 2026
6a4e1ba
[REFACTOR]: ์ฟ ํ‚ค ์ฒ˜๋ฆฌ ๊ณตํ†ตํ™”(common-security)
marulog Feb 28, 2026
8627e13
[FIX]: ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ˆ˜์ •
yubin012 Feb 28, 2026
0e732e3
[FIX]: vaildated ์ œ๊ฑฐ(500 ์—๋Ÿฌ ์ด์Šˆ)
yubin012 Feb 28, 2026
4ec20bf
merge form develop
yubin012 Mar 1, 2026
6d20882
Merge pull request #80 from OpenTheTaste/OT-94-feature/user-content-dโ€ฆ
yubin012 Mar 1, 2026
712453c
[CHORE]: ์„ค์ • ํŒŒ์ผ ๋ฐ ํด๋ž˜์Šค ์ฃผ์„ ๋ณ€๊ฒฝ
phonil Mar 1, 2026
5ae8cee
[FEAT]: ์ž‘์—… ์ „ ๊ณตํ†ต ๊ฒ€์ฆ ๋‹จ๊ณ„ ์ถ”๊ฐ€
phonil Mar 1, 2026
849b453
[CHORE]: FFmpeg ์‹คํ–‰๊ธฐ ํด๋” ๋ณ€๊ฒฝ
phonil Mar 1, 2026
409201a
[FEAT]: ํŠธ๋žœ์Šค์ฝ”๋”ฉ ์‹คํ–‰ ๊ณ„ํš ํด๋ž˜์Šค ์ถ”๊ฐ€
phonil Mar 1, 2026
746d6d3
[FEAT]: ํŠธ๋žœ์Šค์ฝ”๋”ฉ ํŒŒ์ดํ”„๋ผ์ธ ์ •๋ฆฌ ๋ฐ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ ํด๋ž˜์Šค ์ถ”๊ฐ€
phonil Mar 1, 2026
c9dfa02
[GIT]: Git Merge Push
phonil Mar 1, 2026
84d6477
Merge branch 'develop' of https://github.com/OpenTheTaste/backend intโ€ฆ
marulog Mar 1, 2026
fa9afc6
[REFACTOR]: conflict ํ•ด๊ฒฐ
marulog Mar 1, 2026
ac65182
[DOCS]: ์Šค์›จ๊ฑฐ ์„ค๋ช… ์ถ”๊ฐ€
marulog Mar 1, 2026
183948d
[OT-144] ์ธ์ฆ/์ธ๊ฐ€ ์—ญํ•  ๊ธฐ๋ฐ˜ ์ฐจ๋‹จ ๋ฐ CORS ์„ค์ • ๋ณ€๊ฒฝ
marulog Mar 1, 2026
85f1edc
[FEAT]: ๊ธฐ๋ณธ Strategy ์ฝ”๋“œ ์ž‘์„ฑ(๊ฐœ์ธํ™” ์ถ”์ฒœ ์ œ์™ธ)
yubin012 Mar 1, 2026
1c032a5
[FIX]: ์ปจํ…์ธ /์‹œ๋ฆฌ์ฆˆ ์กฐํšŒ์—์„œ ๋ฏธ๋””์–ด ์กฐํšŒ๋กœ ํ†ตํ•ฉ
yubin012 Mar 1, 2026
ab3f069
[GIT]: Merge Develop
phonil Mar 2, 2026
58617b6
[FEAT]: ์‹œ์ฒญ ์ด๋ ฅ ๊ธฐ๋ฐ˜ ํƒœ๊ทธ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ
marulog Mar 2, 2026
601a811
[FEAT]: ํƒœ๊ทธ ๋ณ„ ๊ธˆ์›”, ์ „์›”count ์ง‘๊ณ„ ๊ฐœ๋ฐœ
marulog Mar 2, 2026
88a0969
[FEAT]: ์ „์›” ์‹œ์ฒญ ์ด๋ ฅ ์—†์„ ๊ฒฝ์šฐ null ๋ณ€๊ฒฝ
marulog Mar 2, 2026
ee4b402
[FEAT]: ํƒœ๊ทธ ๋ณ„ ์ถ”์ฒœ ์ฝ˜ํ…์ธ  ์ถ”์ฒœ ๋ฆฌ์ŠคํŠธ ๊ตฌํ˜„
marulog Mar 2, 2026
3a94668
[FEAT]: ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ์‹œ, ์‘๋‹ต๊ฐ’์— Type ์ถ”๊ฐ€ ์กฐํšŒ
marulog Mar 2, 2026
b9a2bcf
[FEAT]: ๊ณผ๊ฑฐ ์‹œ์ฒญ ์ด๋ ฅ ์กฐํšŒ API
marulog Mar 2, 2026
f503efb
[FEAT]: ํšŒ์› ํƒˆํ‡ด์— ๋”ฐ๋ฅธ soft delete
marulog Mar 2, 2026
c072df3
[FEAT]: ํšŒ์› ํƒˆํ‡ด ์„ค์ •๊ฐ’
marulog Mar 2, 2026
0e464c9
[FEAT]: ํšŒ์› ํƒˆํ‡ด API, ํšŒ์› ๊ฐ€์ž… ์‹œ Status ๋ณ€๊ฒฝ
marulog Mar 2, 2026
1f2c3c7
[FEAT]: ์ฟผ๋ฆฌ์— Status ์กฐ๊ฑด ์ถ”๊ฐ€
marulog Mar 2, 2026
04bc9b8
[CHORE]: ์นด์นด์˜ค API ํ‚ค ์ถ”๊ฐ€
marulog Mar 2, 2026
0b87148
[DOCS]: ์Šค์›จ๊ฑฐ ๋ฌธ์„œ ์ถ”๊ฐ€
marulog Mar 2, 2026
9172125
[FEAT]: ๊ฐœ์ธํ™” ์ถ”์ฒœ ๊ฐ€์ค‘์น˜ ์‚ฐ์ถœ ์—”์ง„ ๊ตฌํ˜„
yubin012 Mar 2, 2026
96d74fe
[GIT]: Develop Merge
phonil Mar 2, 2026
5ae8653
[OT-123][FEAT]: ๊ณตํ†ต ์ž‘์—… ๋ถ„๋ฆฌ ๋ฐ ํŠธ๋žœ์Šค์ฝ”๋”ฉ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌํ˜„
phonil Mar 3, 2026
82ec730
Merge branch 'develop' of https://github.com/OpenTheTaste/backend intโ€ฆ
marulog Mar 3, 2026
a1c3f9e
[feat]: ์ฟ ํ‚ค secure ์˜ต์…˜ ๋ณ€๊ฒฝ
marulog Mar 3, 2026
716722f
[OT-169][feat]: ์ฟ ํ‚ค secure ์˜ต์…˜ ๋ณ€๊ฒฝ
marulog Mar 3, 2026
645bb50
[REFACTOR]: source ๋กœ ํ†ตํ•ฉ๋œ API -> ๊ฐ๊ฐ์˜ ๊ฐœ๋ณ„ API ๋กœ restful ํ•˜๊ฒŒ ๋ถ„๋ฆฌ
yubin012 Mar 3, 2026
d46bca7
Merge branch 'develop' into OT-152-feature/recommend-logic-playlist
yubin012 Mar 3, 2026
29a8052
[FIX]: ๊ฒ€์ƒ‰ ์ง„์ž… ์‹œ ์ƒ์„ธํŽ˜์ด์ง€์˜ ์žฌ์ƒ๋ชฉ๋ก๋„ swagger ์— ๋…ธ์ถœ๋˜๋„๋ก ์ถ”๊ฐ€
yubin012 Mar 3, 2026
b492018
[FIX]:categoryId ๊ฒ€์ฆ ์–ด๋…ธํ…Œ์ด์…˜ ์ถ”๊ฐ€
marulog Mar 3, 2026
4ae5ac0
[OT-173][FIX]: categoryId ๊ฒ€์ฆ ์–ด๋…ธํ…Œ์ด์…˜ ์ถ”๊ฐ€
marulog Mar 3, 2026
20822d9
[FEAT]: ์‹œ๋ฆฌ์ฆˆ ์ˆ˜์ • API ๊ตฌํ˜„ ๋ฐ ์—…๋กœ๋“œ URL ์žฌ๋ฐœ๊ธ‰ ์ง€์›
arlen02-01 Mar 2, 2026
5ef2404
[FEAT]: ์ฝ˜ํ…์ธ  ์ˆ˜์ • API ๊ตฌํ˜„ ๋ฐ ์—…๋กœ๋“œ URL ์žฌ๋ฐœ๊ธ‰ ์ง€์›
arlen02-01 Mar 2, 2026
aae2950
[OT-156] [FEAT]: ์ˆํผ ์ˆ˜์ • API ๊ตฌํ˜„ ๋ฐ ์—…๋กœ๋“œ URL ์žฌ๋ฐœ๊ธ‰ ์ง€์›
arlen02-01 Mar 2, 2026
1636573
[REFACTOR]: ์—…๋กœ๋“œ API ์ธ์ฆ ์ฃผ์ž… ๋ฐฉ์‹ ํ†ต์ผ
arlen02-01 Mar 3, 2026
c26e455
[REFACTOR]: ์—…๋กœ๋“œ ์ค€๋น„ ๋กœ์ง์„ UploadHelper๋กœ ํ†ตํ•ฉ
arlen02-01 Mar 3, 2026
773fdc6
[OT-156] [CHORE]: ์—…๋กœ๋“œ/์ˆ˜์ • DTO @Schema type ์†์„ฑ ์ œ๊ฑฐ
arlen02-01 Mar 3, 2026
2444981
[FEAT]:์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€
marulog Mar 3, 2026
80f7318
[FEAT]: RestTemmplate ํƒ€์ž„์•„์›ƒ ์„ค์ • ์ถ”๊ฐ€
marulog Mar 3, 2026
be82e67
[FIX]: ์ฟผ๋ฆฌ ํ…Œ์ด๋ธ” ๋Œ€์ƒ ๋ณ€๊ฒฝ
marulog Mar 3, 2026
c4fbd53
[CHORE]: ๋กœ๊ทธ ๋ณ€๊ฒฝ
marulog Mar 3, 2026
efff668
[CHORE]: ๋ฐฐํฌ ํ™˜๊ฒฝ PermitAll ๊ฒฝ๋กœ ์ถ”๊ฐ€
marulog Mar 3, 2026
c6b24e6
[FIX]: ๋ฐฐํฌ ํ™˜๊ฒฝ ์‹œํ๋ฆฌํ‹ฐ ๋ณ€๊ฒฝ
marulog Mar 3, 2026
d33b7a4
[FIX]: ์ง‘๊ณ„ ๋งˆ๊ฐ์ผ, ์˜จ๋ณด๋”ฉ ๊ฑด๋„ˆ๋›ฐ๊ธฐ API, ๊ธฐํƒ€ ์ˆ˜์ • ์‚ฌํ•ญ ๋ฐ˜์˜
marulog Mar 3, 2026
bf6747d
[CHORE]: ์Šค์›จ๊ฑฐ ์‘๋‹ต ์ฝ”๋“œ ์ˆ˜์ •
marulog Mar 3, 2026
0a20fc0
[FIX]: ํšŒ์› ํƒˆํ‡ด์— ๋”ฐ๋ฅธ ์—ฐ๊ด€ ์ปฌ๋Ÿผ ๊ฐ์‚ฐ ๋ฐ DELETE ์ฒ˜๋ฆฌ
marulog Mar 3, 2026
a4efed4
[FEAT]: ๋ฆฌ์ŠคํŠธ ์ „๋‹ฌ ์‹œ media_id, mediaType ํ•„์ˆ˜ ์ „๋‹ฌ DTO ์ˆ˜์ •
marulog Mar 3, 2026
ed5c812
Merge branch 'develop' of https://github.com/OpenTheTaste/backend intโ€ฆ
marulog Mar 3, 2026
d76cbd4
[FIX]: ํšŒ์› ํƒˆํ‡ด ์‹œ ๋ถ๋งˆํฌ, ์ข‹์•„์š” ์ฟผ๋ฆฌ ์ˆ˜์ •
marulog Mar 3, 2026
b878ce8
[FEAT]: ๋ถ๋งˆํฌ ์ฝ˜ํ…์ธ  ๋ฆฌ์ŠคํŠธ DTO ํ•ญ๋ชฉ ์ถ”๊ฐ€
marulog Mar 3, 2026
76c7c27
[CHORE]: ๊ฒฝ๋กœ ์ˆ˜์ •
marulog Mar 4, 2026
7f0c96f
[FIX]: ์ฟผ๋ฆฌ๋ฌธ์— STATUS ์กฐ๊ฑด ์ถ”๊ฐ€
marulog Mar 4, 2026
8eb81b2
[FIX]: ์ฟผ๋ฆฌ ์ˆ˜์ •
marulog Mar 4, 2026
98dbb76
[FIX]: IN์ ˆ ์ˆœ์„œ ๋ฏธ๋ณด์žฅ์„ ์ •๋ ฌ์„ ํ†ตํ•ด Tag ์ˆœ์œ„ ์„ž์ด๋Š”๊ฑธ ๋ฐฉ์ง€
yubin012 Mar 4, 2026
3d306c8
[FIX]: JOIN ์œผ๋กœ ์ธํ•œ Like ๊ฐ€์ค‘์น˜ ์™œ๊ณก ํ˜„์ƒ ๋ฌธ์ œ ํ•ด๊ฒฐ
yubin012 Mar 4, 2026
c5ac73f
[FIX]: queryDSL null ๋ฐฉ์–ด
marulog Mar 4, 2026
e0c8e51
[FIX]: JOIN ์œผ๋กœ ์ธํ•œ ์‹œ์ฒญ์ด๋ ฅ ํƒœ๊ทธ ๊ฐ€์ค‘์น˜ ์™œ๊ณก ํ˜„์ƒ ๋ฌธ์ œ ํ•ด๊ฒฐ
yubin012 Mar 4, 2026
e667ed1
[REFACTOR]: ํƒœ๊ทธ, ํ”Œ๋ ˆ์ด ๋ฆฌ์ŠคํŠธ ๋„๋ฉ”์ธ์œผ๋กœ ๊ฒฝ๋กœ ์ˆ˜์ •
marulog Mar 4, 2026
e056f35
[CHORE]: ๋ชจ๋‹ˆํ„ฐ๋ง ์„ค์ • ๋ฐ ๋ฐฐํฌ ์›Œํฌํ”Œ๋กœ์šฐ ๋ฐ˜์˜
arlen02-01 Mar 4, 2026
d25277a
[REFACTOR]: ์Šค์›จ๊ฑฐ back-office path ์ถ”๊ฐ€
marulog Mar 4, 2026
c829ac8
[REFACTOR] ์žฌ์ƒ๋ชฉ๋ก ์ถ”์ฒœ ๋กœ์ง ์„ฑ๋Šฅ ๊ฐœ์„  ๋ฐ API ๊ฒ€์ฆ/์‘๋‹ต ๊ทœ๊ฒฉ ๋ณด์™„
yubin012 Mar 4, 2026
bc10288
Merge pull request #95 from OpenTheTaste/OT-152-feature/recommend-logโ€ฆ
yubin012 Mar 4, 2026
29ee431
[CHORE]: ๋ชจ๋‹ˆํ„ฐ๋ง ํฌํŠธ ์ถฉ๋Œ ๋ฐ user-api ๋ฉ”ํŠธ๋ฆญ ๋…ธ์ถœ ์„ค์ • ์ˆ˜์ •
arlen02-01 Mar 4, 2026
d32a573
[OT-181] Merge branch 'develop' of https://github.com/OpenTheTaste/baโ€ฆ
arlen02-01 Mar 4, 2026
9bee9ea
[CHORE]: ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฐํฌ ๋ฐ ๋กœ์ปฌ ์‹คํ–‰ ์„ค์ • ๋ณด์™„
arlen02-01 Mar 4, 2026
e19c0b8
[CHORE]: ๋กœ์ปฌ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹คํ–‰์„ ์œ„ํ•ด Prometheus ์˜์กด ์‹œ์ž‘ ์กฐ๊ฑด ์ œ๊ฑฐ
arlen02-01 Mar 4, 2026
45b9a6b
Merge pull request #102 from OpenTheTaste/OT-181-chore/monitoring
arlen02-01 Mar 4, 2026
ee337a6
Merge branch 'develop' of https://github.com/OpenTheTaste/backend intโ€ฆ
marulog Mar 4, 2026
3678a4f
[REFACTOR]: ์•ˆ์“ฐ๋Š” ์ฃผ์„ ์ œ๊ฑฐ
marulog Mar 4, 2026
8aa628a
[FIX]: ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ์˜ env ์ƒ์„ฑ ๋ฐ compose ์‹คํ–‰ ํ˜ธํ™˜์„ฑ ์ˆ˜์ •
arlen02-01 Mar 4, 2026
5a94a0e
Merge pull request #103 from OpenTheTaste/OT-181-chore/monitoring
arlen02-01 Mar 4, 2026
bacff9d
[REFACTOR]: ์Šค์›จ๊ฑฐ ๋ฌธ์„œ ํ†ตํ•ฉ
marulog Mar 4, 2026
5042629
Merge branch 'develop' of https://github.com/OpenTheTaste/backend intโ€ฆ
marulog Mar 4, 2026
37282c0
[OT-181] [FIX]: ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฐํฌ ๊ณผ์ •์—์„œ ํ•„์š” ํŒŒ์ผ ์žˆ์„ ์‹œ ์‹คํŒจ->๋‹ค์šด๋ฐ›๊ธฐ ๋กœ ๋ณ€๊ฒฝ
arlen02-01 Mar 4, 2026
2ac3719
[REFACTOR]: ์Šค์›จ๊ฑฐ ๋ฌธ์„œ ํ†ตํ•ฉ
marulog Mar 4, 2026
34e6e49
[OT-148][FEAT]: ๋งˆ์ดํŽ˜์ด์ง€ ์ง‘๊ณ„, ํšŒ์› ํƒˆํ‡ด API ๊ตฌํ˜„
marulog Mar 4, 2026
4c2c5da
Merge pull request #104 from OpenTheTaste/OT-181-chore/monitoring
arlen02-01 Mar 4, 2026
9944fa0
[CHORE]: develop ๋ฐ˜์˜
arlen02-01 Mar 5, 2026
aebc59e
[FEAT]: ์—…๋กœ๋“œ/์ˆ˜์ • API ๊ฒ€์ฆ ๋ณด๊ฐ• ๋ฐ ์กฐํšŒ ๋กœ์ง ์ตœ์ ํ™”
arlen02-01 Mar 5, 2026
a98d990
[FIX]: ์ˆ˜์ • ์š”์ฒญ ํŒŒ์ผ๋ช… ์„ ํƒ๊ฐ’ ์ฒ˜๋ฆฌ ๋ฐ ์ˆํผ mediaType ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
arlen02-01 Mar 5, 2026
8b24a56
[CHORE]: RabbitMQ ์ˆ˜๋™ ๋ฐฐํฌ ์›Œํฌํ”Œ๋กœ์šฐ ์ถ”๊ฐ€ ๋ฐ ์ฝ˜ํ…์ธ  ์ˆ˜์ • ์š”์ฒญ ๊ฒ€์ฆ ์ •๋ฆฌ
arlen02-01 Mar 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
187 changes: 187 additions & 0 deletions .github/workflows/deploy-ec2-docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
name: Deploy Docker Apps To EC2

on:
workflow_dispatch:
inputs:
image_tag:
description: "Docker image tag to deploy (default: commit SHA)"
required: false
type: string
pull_request:
types:
- closed

env:
AWS_REGION: ap-northeast-2

jobs:
build-and-push:
if: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'main' && github.event.pull_request.head.ref == 'develop') }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- service: api-user
ecr_repo: oplust-api-user
- service: api-admin
ecr_repo: oplust-api-admin
- service: transcoder
ecr_repo: oplust-transcoder

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}

- name: Login to ECR
uses: aws-actions/amazon-ecr-login@v2

- name: Ensure ECR repository exists
run: |
aws ecr describe-repositories --repository-names "${{ matrix.ecr_repo }}" >/dev/null 2>&1 || \
aws ecr create-repository --repository-name "${{ matrix.ecr_repo }}" >/dev/null

- name: Build and push image
env:
ECR_REGISTRY: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com
IMAGE_TAG_INPUT: ${{ github.event.inputs.image_tag }}
run: |
IMAGE_TAG="${IMAGE_TAG_INPUT:-${GITHUB_SHA}}"
IMAGE_URI="${ECR_REGISTRY}/${{ matrix.ecr_repo }}:${IMAGE_TAG}"
IMAGE_URI_LATEST="${ECR_REGISTRY}/${{ matrix.ecr_repo }}:latest"

docker build \
-f "apps/${{ matrix.service }}/Dockerfile" \
-t "${IMAGE_URI}" \
-t "${IMAGE_URI_LATEST}" \
.

docker push "${IMAGE_URI}"
docker push "${IMAGE_URI_LATEST}"

deploy:
if: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'main' && github.event.pull_request.head.ref == 'develop') }}
runs-on: ubuntu-latest
needs: build-and-push

steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}

- name: Deploy to EC2 instances via SSM
env:
ECR_REGISTRY: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com
IMAGE_TAG_INPUT: ${{ github.event.inputs.image_tag }}
PROJECT_NAME: oplust
DB_NAME: oplust
SSM_RDS_ENDPOINT_PARAM: /oplust/common/rds-endpoint
SSM_DB_USERNAME_PARAM: /oplust/common/db-username
SSM_DB_PASSWORD_PARAM: /oplust/common/db-password
run: |
set -euo pipefail

IMAGE_TAG="${IMAGE_TAG_INPUT:-${GITHUB_SHA}}"

deploy_service() {
local target_tag="$1"
local image_uri="$2"
local container_name="$3"
local env_file="$4"
local port="$5"
local service_env_param="$6"

local instance_id
instance_id=$(aws ec2 describe-instances \
--region "$AWS_REGION" \
--filters "Name=tag:Name,Values=${target_tag}" "Name=instance-state-name,Values=running" \
--query "Reservations[0].Instances[0].InstanceId" \
--output text)

if [ -z "$instance_id" ] || [ "$instance_id" = "None" ]; then
echo "No running instance found for tag: ${target_tag}" >&2
exit 1
fi

local run_cmd
if [ -n "$port" ]; then
run_cmd="sudo docker run -d --name ${container_name} --restart unless-stopped -p ${port}:${port} --env-file ${env_file} ${image_uri}"
else
run_cmd="sudo docker run -d --name ${container_name} --restart unless-stopped --env-file ${env_file} ${image_uri}"
fi

local cmd_id
cmd_id=$(aws ssm send-command \
--region "$AWS_REGION" \
--instance-ids "$instance_id" \
--document-name "AWS-RunShellScript" \
--comment "Deploy ${container_name}:${IMAGE_TAG}" \
--parameters commands="[
\"set -e\",
\"sudo mkdir -p /etc/oplust\",
\"DB_HOST=\$(aws ssm get-parameter --region $AWS_REGION --name '$SSM_RDS_ENDPOINT_PARAM' --with-decryption --query 'Parameter.Value' --output text)\",
\"DB_USER=\$(aws ssm get-parameter --region $AWS_REGION --name '$SSM_DB_USERNAME_PARAM' --with-decryption --query 'Parameter.Value' --output text)\",
\"DB_PASS=\$(aws ssm get-parameter --region $AWS_REGION --name '$SSM_DB_PASSWORD_PARAM' --with-decryption --query 'Parameter.Value' --output text)\",
\"SERVICE_ENV=\$(aws ssm get-parameter --region $AWS_REGION --name '${service_env_param}' --with-decryption --query 'Parameter.Value' --output text)\",
\"echo \\\"SPRING_DATASOURCE_URL=jdbc:mysql://\$DB_HOST:3306/${DB_NAME}\\\" | sudo tee ${env_file} >/dev/null\",
\"echo \\\"SPRING_DATASOURCE_USERNAME=\$DB_USER\\\" | sudo tee -a ${env_file} >/dev/null\",
\"echo \\\"SPRING_DATASOURCE_PASSWORD=\$DB_PASS\\\" | sudo tee -a ${env_file} >/dev/null\",
\"printf '%s\\n' \\\"\$SERVICE_ENV\\\" | sudo tee -a ${env_file} >/dev/null\",
\"sudo chmod 600 ${env_file}\",
\"aws ecr get-login-password --region $AWS_REGION | sudo docker login --username AWS --password-stdin $ECR_REGISTRY\",
\"sudo docker pull ${image_uri}\",
\"sudo docker rm -f ${container_name} || true\",
\"${run_cmd}\"
]" \
--query 'Command.CommandId' \
--output text)

echo "[$container_name] command id: $cmd_id (instance: $instance_id)"

local status
for _ in $(seq 1 120); do
status=$(aws ssm get-command-invocation \
--region "$AWS_REGION" \
--command-id "$cmd_id" \
--instance-id "$instance_id" \
--query 'Status' \
--output text 2>/dev/null || true)

case "$status" in
Success)
echo "[$container_name] deployment success"
return 0
;;
Failed|Cancelled|TimedOut)
echo "[$container_name] deployment failed with status: $status" >&2
aws ssm get-command-invocation --region "$AWS_REGION" --command-id "$cmd_id" --instance-id "$instance_id" --query '{StdOut:StandardOutputContent,StdErr:StandardErrorContent}' --output json || true
exit 1
;;
Pending|InProgress|Delayed|"")
sleep 5
;;
*)
echo "[$container_name] unexpected status: $status" >&2
sleep 5
;;
esac
done

echo "[$container_name] deployment timed out waiting for SSM command completion" >&2
aws ssm get-command-invocation --region "$AWS_REGION" --command-id "$cmd_id" --instance-id "$instance_id" --query '{StdOut:StandardOutputContent,StdErr:StandardErrorContent}' --output json || true
exit 1
}

deploy_service "${PROJECT_NAME}-user-ec2" "${ECR_REGISTRY}/oplust-api-user:${IMAGE_TAG}" "oplust-api-user" "/etc/oplust/api-user.env" "8080" "/oplust/api-user/env"
deploy_service "${PROJECT_NAME}-admin-ec2" "${ECR_REGISTRY}/oplust-api-admin:${IMAGE_TAG}" "oplust-api-admin" "/etc/oplust/api-admin.env" "8081" "/oplust/api-admin/env"
deploy_service "${PROJECT_NAME}-worker-ec2" "${ECR_REGISTRY}/oplust-transcoder:${IMAGE_TAG}" "oplust-transcoder" "/etc/oplust/transcoder.env" "" "/oplust/transcoder/env"
Loading