Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
297 commits
Select commit Hold shift + click to select a range
2267734
Merge remote-tracking branch 'origin/refactor/week1' into feature/point
hyujikoh Oct 31, 2025
9938125
refactor: ๊ฐœ์„ ๋œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฐ ํ”ฝ์Šค์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ์ธํŠธ ์ถฉ์ „ ๋กœ์ง ๊ฒ€์ฆ
hyujikoh Oct 31, 2025
2c6282c
refactor: ์ฝ”๋“œ ์ •๋ฆฌ ๋ฐ ๋ถˆํ•„์š”ํ•œ ๊ณต๋ฐฑ ์ œ๊ฑฐ
hyujikoh Oct 31, 2025
3df7877
test: ์—ฌ๋Ÿฌ๋ฒˆ ์ถฉ์ „ ํ–ˆ์„ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ e2e ํ…Œ์ŠคํŠธ ์‹คํ–‰
hyujikoh Oct 31, 2025
873fa78
refactor: api ์—”๋“œํฌ์ธํŠธ uris ๋กœ ์ƒ์ˆ˜ํ™” ๋ฐ ๊ด€๋ฆฌ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง
hyujikoh Oct 31, 2025
a158cc6
refactor: ํฌ์ธํŠธ ์ด๋ ฅ ๊ด€๋ จ ํ…Œ์ŠคํŠธ ๋กœ์ง ๊ฐœ์„ 
hyujikoh Oct 31, 2025
a1eb6ab
refactor: ํฌ์ธํŠธ ๊ด€๋ จ ์—”ํ‹ฐํ‹ฐ ๋ฐ ์„œ๋น„์Šค ์ฃผ์„ ๊ฐœ์„ 
hyujikoh Oct 31, 2025
68ae11d
refactor: ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค์— ์ค‘์ฒฉ ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€, ํ…Œ์ŠคํŠธ ๊ตฌ๋ถ„๋˜๊ฒŒ ๊ฐœ์„ 
hyujikoh Oct 31, 2025
2109e3b
Merge pull request #1 from hyujikoh/feature/point
hyujikoh Oct 31, 2025
680a98a
Merge remote-tracking branch 'fork/main' into feature/point
hyujikoh Oct 31, 2025
b3c3ea5
Merge pull request #3
hyujikoh Oct 31, 2025
9753ed7
Merge pull request #4 from hyujikoh/week1
hyujikoh Oct 31, 2025
ad04441
docs : ๋ฌธ์„œ ๊ตฌ์กฐ ๋ถˆ์ผ์น˜ ์ˆ˜์ •
hyujikoh Oct 31, 2025
50aa0bb
docs : ๋ฌธ์„œ ๊ตฌ์กฐ ๋ถˆ์ผ์น˜ ์ˆ˜์ •
hyujikoh Oct 31, 2025
fc67195
refactor: ์‚ฌ์šฉ์ž ์ •๋ณด ํšŒ์›๊ฐ€์ž… ์‹œ birth -> birthDate๋กœ ์ˆ˜์ •
hyujikoh Oct 31, 2025
8345ba9
fix: ์‚ฌ์šฉ์ž ํฌ์ธํŠธ ์ •๋ณด ์กฐํšŒ์‹œ ์—†๋Š” ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด facade ์—์„œ exception ์ฒ˜๋ฆฌ
hyujikoh Oct 31, 2025
b0d784b
fix: ์‚ฌ์šฉ์ž ์„ฑ๋ณ„ EnumType.STRING์œผ๋กœ gender ํ•„๋“œ ์„ค์ •
hyujikoh Oct 31, 2025
6346ec2
refactor: ํฌ์ธํŠธ ์ƒ์„ฑ ๋กœ์ง์„ == null ์ผ ๊ฒฝ์šฐ๋กœ ์ˆ˜์ •
hyujikoh Oct 31, 2025
8581033
fix: ์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒ ์‹œ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๊ฐœ์„ 
hyujikoh Oct 31, 2025
2b5ced6
fix: PointRepository์—์„œ ์‚ฌ์šฉ์ž ์กฐํšŒ ์‹œ Optional ์‚ฌ์šฉ์œผ๋กœ null ์ฒ˜๋ฆฌ ๊ฐœ์„ 
hyujikoh Oct 31, 2025
e81675c
fix: PointEntity์—์„œ UserEntity์˜ cascade ์˜ต์…˜ ์ œ๊ฑฐ
hyujikoh Oct 31, 2025
8e3a0a3
fix: PointHistoryRepository์—์„œ ํŽ˜์ด์ง• ์กฐํšŒ ๋ฉ”์„œ๋“œ ์ œ๊ฑฐ
hyujikoh Oct 31, 2025
7be0e7a
Merge pull request #5
hyujikoh Oct 31, 2025
f0e663e
fix: UserEntity ํ•„๋“œ์— nullable ๋ฐ length ์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€
hyujikoh Oct 31, 2025
011effe
fix: PointEntity์—์„œ amount ํ•„๋“œ์˜ @Min ์ œ์•ฝ ์กฐ๊ฑด ์ œ๊ฑฐ
hyujikoh Oct 31, 2025
ec6a51b
Merge pull request #6
hyujikoh Oct 31, 2025
b9e730b
feat: ํฌ์ธํŠธ ์—”ํ‹ฐํ‹ฐ ์ œ๊ฑฐ ๋ฐ ์—ฐ๊ด€๊ด€๊ณ„ ์ˆ˜์ •
hyujikoh Nov 4, 2025
566eaae
fix: ์‚ฌ์šฉ์ž ๋“ฑ๋ก ์‹œ ํฌ์ธํŠธ ์ดˆ๊ธฐํ™” ๋ฐ ๊ฒ€์ฆ ๋กœ์ง ์ˆ˜์ •
hyujikoh Nov 4, 2025
3366f28
fix: ์ƒ๋…„์›”์ผ ๊ฒ€์ฆ ๋กœ์ง ๊ฐœ์„  - ํ˜„์žฌ ๋‚ ์งœ ์ดํ›„์˜ ์ƒ๋…„์›”์ผ ์ž…๋ ฅ ๋ฐฉ์ง€
hyujikoh Nov 4, 2025
3b9f753
Merge pull request #7 from hyujikoh/fix/1week-review-feedback
hyujikoh Nov 4, 2025
49aeb82
docs(product): ์ƒํ’ˆ ๋ฐ ๋ธŒ๋žœ๋“œ ์š”๊ตฌ์‚ฌํ•ญ ๋ฌธ์„œ ์ถ”๊ฐ€
hyujikoh Nov 5, 2025
1ab4bac
docs: ์ด์ปค๋จธ์Šค ์„œ๋น„์Šค ์š”๊ตฌ์‚ฌํ•ญ ๋ฌธ์„œ ์ถ”๊ฐ€
hyujikoh Nov 5, 2025
6fe3f94
docs: ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ ์‹œ๋‚˜๋ฆฌ์˜ค ๋ฐ ์˜ค๋ฅ˜ ์‘๋‹ต ์ •์ฑ… ์ถ”๊ฐ€
hyujikoh Nov 5, 2025
b8fba25
docs: API ์‚ฌ์šฉ์ž ์‹๋ณ„ ํ—ค๋” ์ˆ˜์ • ๋ฐ ๋ธŒ๋žœ๋“œ ์กฐํšŒ ์ œ๋ชฉ ๋ณ€๊ฒฝ
hyujikoh Nov 5, 2025
3638d8b
docs: ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ ๋ฌธ์„œ ์ถ”๊ฐ€
hyujikoh Nov 5, 2025
12c0220
docs: ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ ๋ฌธ์„œ ์ถ”๊ฐ€
hyujikoh Nov 6, 2025
db9d6cf
docs(class-diagram): ๋„๋ฉ”์ธ ๋ชจ๋ธ ๋ฐ ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ ์ˆ˜์ •
hyujikoh Nov 6, 2025
0172150
docs(class-diagram): ProductEntity ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ ์ˆ˜์ •
hyujikoh Nov 6, 2025
7502570
docs: ERD ๋ฌธ์„œ ์ถ”๊ฐ€
hyujikoh Nov 6, 2025
1ecfc61
docs: ERD ๋ฌธ์„œ ์ถ”๊ฐ€
hyujikoh Nov 6, 2025
8db2ffc
docs: ERD ๋ฌธ์„œ ์ถ”๊ฐ€
hyujikoh Nov 6, 2025
46c076f
docs(sequence-diagram): ์ข‹์•„์š” ์ˆ˜ ์ฆ๊ฐ€ ๋ฐ ๊ฐ์†Œ ๋กœ์ง ์ถ”๊ฐ€
hyujikoh Nov 7, 2025
797c5cd
docs(class-diagram): ์ข‹์•„์š” ์ƒํƒœ ์—…๋ฐ์ดํŠธ ๋ฉ”์„œ๋“œ ์ถ”๊ฐ€
hyujikoh Nov 7, 2025
47a1c39
docs(sequence-diagram): ์ข‹์•„์š” ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜ ํ˜•์‹ ์ˆ˜์ •
hyujikoh Nov 7, 2025
485e5ed
Merge pull request #8 from hyujikoh/week2/docs
hyujikoh Nov 7, 2025
2f90f75
docs(erd): ์ข‹์•„์š” ํ…Œ์ด๋ธ” ์ œ์•ฝ์กฐ๊ฑด ๋ฐ ์ธ๋ฑ์Šค ์ถ”๊ฐ€
hyujikoh Nov 7, 2025
75846d6
docs(sequence-diagram): ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ ์›์ž์„ฑ ๋ณด์žฅ ๋ฌธ์„œ ์ถ”๊ฐ€
hyujikoh Nov 7, 2025
0c02b41
docs(sequence-diagram): ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ จ ๋ฌธ์„œ ์ˆ˜์ •
hyujikoh Nov 7, 2025
1648962
Merge pull request #9 from hyujikoh/week2/docs
hyujikoh Nov 7, 2025
eec1c14
feat(brand): ๋ธŒ๋žœ๋“œ ์—”ํ‹ฐํ‹ฐ ๋ฐ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 8, 2025
b3d1101
feat(brand): ๋ธŒ๋žœ๋“œ ์—”ํ‹ฐํ‹ฐ ์ƒ์„ฑ ๋กœ์ง ๋ฐ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 8, 2025
a4d8faf
feat(brand): ๋ธŒ๋žœ๋“œ ์—”ํ‹ฐํ‹ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋กœ์ง ์ถ”๊ฐ€
hyujikoh Nov 8, 2025
6436eb8
feat(brand): ๋ธŒ๋žœ๋“œ JPA ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฐ ๊ตฌํ˜„์ฒด ์ถ”๊ฐ€
hyujikoh Nov 9, 2025
d97296d
feat(brand): ๋ธŒ๋žœ๋“œ ๋ชฉ๋ก ํŽ˜์ด์ง€๋„ค์ด์…˜ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 9, 2025
5eb7e8f
feat(brand): ๋ธŒ๋žœ๋“œ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ์œ ํ‹ธ๋ฆฌํ‹ฐ ์ถ”๊ฐ€
hyujikoh Nov 9, 2025
54c9ffe
feat(brand): ๋ธŒ๋žœ๋“œ ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 9, 2025
eac2678
test(brand): ๋ธŒ๋žœ๋“œ ์„œ๋น„์Šค ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ˆ˜์ •
hyujikoh Nov 9, 2025
39305a0
feat(brand): ๋ธŒ๋žœ๋“œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 9, 2025
3d77d9d
style(brand): ์ฝ”๋“œ ํฌ๋งทํŒ… ๋ฐ ์ •๋ ฌ ๊ฐœ์„ 
hyujikoh Nov 9, 2025
b134767
test(brand): ๋ธŒ๋žœ๋“œ ๋ชฉ๋ก ์กฐํšŒ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ œ๊ฑฐ
hyujikoh Nov 9, 2025
82921f4
Merge pull request #10 from hyujikoh/feature/brand
hyujikoh Nov 9, 2025
3743f16
feat(product): ์ƒํ’ˆ ๋„๋ฉ”์ธ ๋ฐ ๊ฐ€๊ฒฉ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 10, 2025
1ca24a3
feat(product): ์ƒํ’ˆ ์—”ํ‹ฐํ‹ฐ ๋ฐ ๊ฐ€๊ฒฉ ์ •๋ณด ์ƒ์„ฑ ๋กœ์ง ๊ฐœ์„ 
hyujikoh Nov 10, 2025
9513ce9
feat(product): ์ƒํ’ˆ ์ƒ์„ฑ ์š”์ฒญ ๊ฒ€์ฆ ๋กœ์ง ์ถ”๊ฐ€
hyujikoh Nov 10, 2025
d454449
feat(product): ์ƒํ’ˆ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค ์ถ”๊ฐ€
hyujikoh Nov 10, 2025
dc5ff33
feat(product): ์ƒํ’ˆ ์ €์žฅ ๋ฐ ์กฐํšŒ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 10, 2025
89ec870
feat(product): ์ƒํ’ˆ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค ๋ฐ ํ…Œ์ŠคํŠธ ํ”ฝ์Šค์ฒ˜ ์ถ”๊ฐ€
hyujikoh Nov 10, 2025
12e3998
feat(product): ์ƒํ’ˆ ์ƒ์„ธ ์ •๋ณด ๋ฐ ๊ฐ€๊ฒฉ ์ •๋ณด DTO ์ถ”๊ฐ€
hyujikoh Nov 10, 2025
c802ccb
feat(product): ์ƒํ’ˆ ํŽ˜์ด์ง• ์กฐํšŒ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 10, 2025
573b71c
feat(product): ์ƒํ’ˆ ์กฐํšŒ ๋ฐ ์ƒ์„ธ ์ •๋ณด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 10, 2025
27c902f
test(product): ์ƒํ’ˆ ํŽ˜์ด์ง• ๋ฐ ์ƒ์„ธ ์ •๋ณด ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 10, 2025
36f7d99
refactor(product): ์ƒํ’ˆ ์—”ํ‹ฐํ‹ฐ ๋‚ด ๋ธŒ๋žœ๋“œ ์—”ํ‹ฐํ‹ฐ ์ฐธ์กฐ ID๋กœ ๋ณ€๊ฒฝ
hyujikoh Nov 11, 2025
456812a
test(product): ์ƒํ’ˆ ๋„๋ฉ”์ธ ์š”์ฒญ ๋ธŒ๋žœ๋“œ ID ๊ฒ€์ฆ ํ…Œ์ŠคํŠธ ์ˆ˜์ •
hyujikoh Nov 11, 2025
08b1ae6
feat(product): ์ƒํ’ˆ ๋„๋ฉ”์ธ ์„œ๋น„์Šค ๋กœ์ง ์ˆ˜์ •
hyujikoh Nov 11, 2025
ed8df70
feat(product): ์ƒํ’ˆ ๊ด€๋ จ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ์ถ”๊ฐ€
hyujikoh Nov 11, 2025
322cf93
test(brand): ๋ธŒ๋žœ๋“œ ์กฐํšŒ ์‹œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ฐœ์„ 
hyujikoh Nov 11, 2025
176266f
feat(product): ์ƒํ’ˆ ๊ฒ€์ƒ‰ ํ•„ํ„ฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 11, 2025
51cea0e
feat(product): ๋ธŒ๋žœ๋“œ ID๋กœ ์ƒํ’ˆ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 11, 2025
b5e82ca
feat(product): ์ƒํ’ˆ ์ •๋ณด์— ์ƒ์„ฑ์ผ์‹œ ํ•„๋“œ ์ถ”๊ฐ€
hyujikoh Nov 11, 2025
85ee1d9
refactor(product): ์ƒํ’ˆ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•ด์„œ ๊ตฌ์กฐ ๋ฆฌํŒฉํ† ๋ง
hyujikoh Nov 11, 2025
26ed367
feat(product): ์ƒํ’ˆ ์ƒ์„ธ ์ •๋ณด์— ์žฌ๊ณ  ์ˆ˜๋Ÿ‰ ํ•„๋“œ ์ถ”๊ฐ€
hyujikoh Nov 11, 2025
92447a8
refactor: ์ฝ”๋“œ ํฌ๋งทํŒ… ๋ฐ ์ •๋ฆฌ
hyujikoh Nov 11, 2025
e747841
refactor(product): 'likesCount' ํ•„๋“œ๋ช…์„ 'likeCount'๋กœ ๋ณ€๊ฒฝ
hyujikoh Nov 11, 2025
dfc7ffd
Merge pull request #11
hyujikoh Nov 11, 2025
4427b50
feat(like): ์ข‹์•„์š” ๊ธฐ๋Šฅ ๊ด€๋ จ ์—”ํ‹ฐํ‹ฐ ๋ฐ ์„œ๋น„์Šค ์ถ”๊ฐ€
hyujikoh Nov 11, 2025
511f645
test(like): ์ข‹์•„์š” ์„œ๋น„์Šค ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 11, 2025
585e102
feat(like): ์ข‹์•„์š” ์ทจ์†Œ ์‹œ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ด€๊ณ„ ๋ฌด์‹œ ์ฒ˜๋ฆฌ
hyujikoh Nov 11, 2025
7bda10b
fix(user): ์‚ฌ์šฉ์ž ์กฐํšŒ ์‹œ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ถ”๊ฐ€
hyujikoh Nov 11, 2025
0c6b71a
refactor(like): ์ข‹์•„์š” ์„œ๋น„์Šค ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ํฌ๋งทํŒ… ์ˆ˜์ •
hyujikoh Nov 11, 2025
d12ecbf
refactor(like): ์ข‹์•„์š” ์„œ๋น„์Šค ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ํฌ๋งทํŒ… ์ˆ˜์ •
hyujikoh Nov 12, 2025
bf51f05
feat(brand): ๋ธŒ๋žœ๋“œ ์ƒ์„ฑ ์š”์ฒญ DTO ๋ฐ ์„œ๋น„์Šค ๋กœ์ง ์ถ”๊ฐ€
hyujikoh Nov 12, 2025
5a2022d
feat(product): ์ƒํ’ˆ ๋“ฑ๋ก ๊ธฐ๋Šฅ, DTO ๋ฐ ์„œ๋น„์Šค ๋ฉ”์„œ๋“œ ๊ตฌํ˜„
hyujikoh Nov 12, 2025
cff61dd
feat(product): ์ƒํ’ˆ ํ…Œ์ŠคํŠธ ํ”ฝ์Šค์ฒ˜ ๊ฐœ์„ 
hyujikoh Nov 12, 2025
1a6d151
test(like): ์ข‹์•„์š” ๋“ฑ๋ก ๋ฐ ๋ณต์› ๊ธฐ๋Šฅ ๊ตฌํ˜„
hyujikoh Nov 12, 2025
3002c9c
fix(brand, product): dto ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ˆ˜์ •
hyujikoh Nov 13, 2025
bf70674
test(like): ์ข‹์•„์š” ๊ธฐ๋Šฅ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 13, 2025
d57669c
test(like): ์ข‹์•„์š” ์ทจ์†Œ ๊ธฐ๋Šฅ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๊ตฌํ˜„
hyujikoh Nov 13, 2025
a7c52eb
test(like): ์ข‹์•„์š” ๊ธฐ๋Šฅ์˜ ๋™์‹œ์„ฑ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 13, 2025
0c25368
refactor(like): ์ข‹์•„์š” ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ ์˜๋ฌธ์œผ๋กœ ๋ณ€๊ฒฝ
hyujikoh Nov 13, 2025
bff601f
feat(like): ์ƒํ’ˆ ์ข‹์•„์š” ์ˆ˜ ์ฆ๊ฐ€ ๋ฐ ๊ฐ์†Œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 13, 2025
0e76810
feat(product): ์ƒํ’ˆ ์ƒ์„ธ ์กฐํšŒ ์‹œ ์ข‹์•„์š” ์ •๋ณด ํฌํ•จ
hyujikoh Nov 13, 2025
ea4c599
feat(order): ์ฃผ๋ฌธ ๋ฐ ์ฃผ๋ฌธ ํ•ญ๋ชฉ ๋„๋ฉ”์ธ ๋ชจ๋ธ ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
11ddb53
feat(order): ์ฃผ๋ฌธ ๋ฐ ์ฃผ๋ฌธ ํ•ญ๋ชฉ ์œ ํšจ์„ฑ ๊ฒ€์ฆ ๋กœ์ง ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
d0ef3d3
test(order): ์ฃผ๋ฌธ ์—”ํ‹ฐํ‹ฐ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
245e61c
test(order): ์ฃผ๋ฌธ ํ•ญ๋ชฉ ์—”ํ‹ฐํ‹ฐ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
4d51cf1
refactor(order): ์ฃผ๋ฌธ ํ•ญ๋ชฉ ์—”ํ‹ฐํ‹ฐ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ ์ด๋ฆ„ ๋ณ€๊ฒฝ
hyujikoh Nov 14, 2025
2024280
feat(order): ์ฃผ๋ฌธ ์ƒ์„ฑ ๋ฐ ์ฃผ๋ฌธ ์ •์ƒ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ
hyujikoh Nov 14, 2025
7a1c2da
feat(order): ์ฃผ๋ฌธ ์ƒ์„ฑ ๋กœ์ง ๊ฐœ์„  ๋ฐ ์ฃผ๋ฌธ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ๊ฒ€์ฆ ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
94baffc
test(order): ์ฃผ๋ฌธ ์ƒ์„ฑ ์‹œ ์ฃผ๋ฌธ ํ•ญ๋ชฉ ์ €์žฅ ๊ฒ€์ฆ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
a2cb102
test(order): ์ฃผ๋ฌธ ์ƒ์„ฑ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ ๋ฐ ๊ฒ€์ฆ ๋กœ์ง ๊ฐœ์„ 
hyujikoh Nov 14, 2025
e36d2bf
feat(order): ์ฃผ๋ฌธ ํ™•์ • ๋กœ์ง ๊ฐœ์„  ๋ฐ ์‚ญ์ œ๋œ ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
9a7f5b8
feat(order): ์ฃผ๋ฌธ ์กฐํšŒ ๋ฐ ํŽ˜์ด์ง• ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
2a5e827
feat(order): ์ฃผ๋ฌธ ๋ฐ ์ฃผ๋ฌธ ํ•ญ๋ชฉ ์ƒ์„ฑ ์‹œ ์œ ํšจ์„ฑ ๊ฒ€์ฆ ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
77d2529
feat(order): ์ฃผ๋ฌธ ์ทจ์†Œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
a41deea
feat(product): ์žฌ๊ณ  ์›๋ณต ๋ฐ ๋น„๊ด€์  ๋ฝ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
8face44
feat(order): ์ฃผ๋ฌธ ์ทจ์†Œ ๊ธฐ๋Šฅ ๋ฐ ์žฌ๊ณ  ์›๋ณต ๋กœ์ง ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
c9b45cc
feat(order): ์ฃผ๋ฌธ ์ƒ์„ฑ ๋กœ์ง ๊ฐœ์„  ๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์ฆ ๊ฐ•ํ™”
hyujikoh Nov 14, 2025
9f2552c
refactor(product): ์žฌ๊ณ  ์›๋ณต ๋ฉ”์„œ๋“œ ์ œ๊ฑฐ
hyujikoh Nov 14, 2025
92ae5f5
fix(order): ์‚ฌ์šฉ์ž ID ํ•„์ˆ˜ ๋ฉ”์‹œ์ง€ ์ˆ˜์ •
hyujikoh Nov 14, 2025
70e4d11
style: ์ฝ”๋“œ ์ฃผ์„ ํฌ๋งทํŒ… ๊ฐœ์„ 
hyujikoh Nov 14, 2025
1e2e1d6
Merge pull request #12 from hyujikoh/feat/like
hyujikoh Nov 14, 2025
fc8ea5b
Merge remote-tracking branch 'origin/week3' into feat/order
hyujikoh Nov 14, 2025
7a2a103
Merge pull request #13 from hyujikoh/feat/order
hyujikoh Nov 14, 2025
c2fc69e
Merge pull request #14 from hyujikoh/week3
hyujikoh Nov 14, 2025
0489a55
feat(order): ์ฃผ๋ฌธ ์š”์•ฝ ๋ชฉ๋ก ํŽ˜์ด์ง• ์กฐํšŒ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
d1f1d83
Merge pull request #15 from hyujikoh/feat/order
hyujikoh Nov 14, 2025
cc97592
feat(order): ์ข‹์•„์š” ๋“ฑ๋ก ๋ฐ ์ทจ์†Œ ๋กœ์ง ๊ฐœ์„ 
hyujikoh Nov 14, 2025
9c70960
feat(order): ์ฃผ๋ฌธ ํ•ญ๋ชฉ ์ •๋ ฌ๋กœ ๋ฐ๋“œ๋ฝ ๋ฐฉ์ง€ ๋กœ์ง ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
6f32438
fix(order): ์ฃผ๋ฌธ ์ด์•ก ์†Œ์ˆ˜์  ๋‘ ์ž๋ฆฌ๋กœ ๋ฐ˜์˜ฌ๋ฆผ ์ฒ˜๋ฆฌ
hyujikoh Nov 14, 2025
51b315f
test(like): ์ข‹์•„์š” ์ทจ์†Œ ํ…Œ์ŠคํŠธ์—์„œ ์‚ญ์ œ๋œ ์ƒํ’ˆ ID ์‚ฌ์šฉ
hyujikoh Nov 14, 2025
6c09244
fix(order): ์ฃผ๋ฌธ ์ƒ์„ฑ ์‹œ ํฌ์ธํŠธ ๋ถ€์กฑ ์˜ˆ์™ธ ํƒ€์ž… ์ˆ˜์ •
hyujikoh Nov 14, 2025
4a62476
refactor(order): ์ฃผ๋ฌธ ๋™์‹œ์„ฑ ํ…Œ์ŠคํŠธ ๊ฐœ์„  ๋ฐ ์žฌ๊ณ  ๊ฒ€์ฆ ๊ฐ•ํ™”
hyujikoh Nov 14, 2025
5b791aa
refactor(product): ์ƒํ’ˆ ๊ฒ€์ƒ‰ ํ•„ํ„ฐ์˜ ์ •๋ ฌ ๊ธฐ์ค€ ๋ณ€๊ฒฝ
hyujikoh Nov 14, 2025
0763ebe
refactor(product): ์ƒํ’ˆ ๊ฒ€์ƒ‰ ํ•„ํ„ฐ์˜ ์ •๋ ฌ ๊ธฐ์ค€ ๋ณ€๊ฒฝ
hyujikoh Nov 14, 2025
950f50c
Merge pull request #16 from hyujikoh/feat/order
hyujikoh Nov 14, 2025
ec0cc10
refactor(order): ์ฃผ๋ฌธ ํ•ญ๋ชฉ ์ƒ์„ฑ ๋กœ์ง ์ •๋ ฌ ๊ธฐ์ค€ ๋ณ€๊ฒฝ
hyujikoh Nov 14, 2025
6242712
refactor(order): ์ข‹์•„์š” ์‚ญ์ œ ์‹œ ์ค‘๋ณต ์ฒ˜๋ฆฌ ๋กœ์ง ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
7d8aa3a
test(order): ์ข‹์•„์š” ์‚ญ์ œ ์‹œ ์ข‹์•„์š” ์ˆ˜ ๊ฒ€์ฆ ๋กœ์ง ์ˆ˜์ •
hyujikoh Nov 14, 2025
cdbb0a6
test(order): ์ข‹์•„์š” ์ทจ์†Œ ์‹œ ์นด์šดํŠธ ๊ฒ€์ฆ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
b0935dd
Merge pull request #17 from hyujikoh/feat/order
hyujikoh Nov 14, 2025
4c869f2
feat(product): ๊ฐ€๊ฒฉ ํ•„๋“œ์— null ๊ฒ€์ฆ ์ถ”๊ฐ€
hyujikoh Nov 14, 2025
538ad15
test(order): ์ข‹์•„์š” ์ทจ์†Œ ์‹œ delete ํ˜ธ์ถœ ๋กœ์ง ์ˆ˜์ •
hyujikoh Nov 14, 2025
349be31
feat(product): ์ข‹์•„์š” ์—ฌ๋ถ€ ์ฃผ์„ ์ˆ˜์ •
hyujikoh Nov 14, 2025
4ee0798
Merge pull request #18 from hyujikoh/feat/order
hyujikoh Nov 14, 2025
a47467c
fix(product): ํ• ์ธ ๊ฐ€๊ฒฉ ๊ฒ€์ฆ ๋กœ์ง ์ˆ˜์ •
hyujikoh Nov 14, 2025
daeada9
test(order): ์ข‹์•„์š” ์ทจ์†Œ ์‹œ ๋ฉฑ๋“ฑ์„ฑ ๋ณด์žฅ ๋กœ์ง ์ˆ˜์ •
hyujikoh Nov 14, 2025
e0d8c29
Merge pull request #19 from hyujikoh/feat/order
hyujikoh Nov 14, 2025
caa9e52
fix(product): ํ• ์ธ ๊ฐ€๊ฒฉ ๊ฒ€์ฆ ๋ฉ”์‹œ์ง€ ์ˆ˜์ •
hyujikoh Nov 14, 2025
63b4a21
Merge pull request #20 from hyujikoh/feat/order
hyujikoh Nov 14, 2025
3dd9c68
docs : ๋ฌธ์„œ ์ˆ˜์ •
hyujikoh Nov 15, 2025
a5ff6c3
docs : ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ
hyujikoh Nov 16, 2025
468ad2f
refactor(order): ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๊ตฌ์กฐ ๋ถ„๋ฆฌ
hyujikoh Nov 17, 2025
2eb8669
docs(coupon): ์ฟ ํฐ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋จ์œผ๋กœ์„œ ์‹œํ€ธ์Šค ์ •์˜
hyujikoh Nov 18, 2025
dfbc775
refactor(order): ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋ถ„๋ฆฌ
hyujikoh Nov 18, 2025
da8a28b
feat(coupon): ์ฟ ํฐ ๋„๋ฉ”์ธ ๋ฐ ์‚ฌ์šฉ ์ด๋ ฅ ์ถ”๊ฐ€
hyujikoh Nov 18, 2025
840be45
feat(coupon): ์ฟ ํฐ ์—”ํ‹ฐํ‹ฐ ๋ฐ ์ƒํƒœ, ํƒ€์ž… ์ถ”๊ฐ€
hyujikoh Nov 18, 2025
45fd1e6
feat(coupon): ์ฟ ํฐ ๊ด€๋ จ ์ œ์•ฝ์‚ฌํ•ญ ๋ฐ ํ• ์ธ ๊ณ„์‚ฐ ๋กœ์ง ๋ฌธ์„œํ™”
hyujikoh Nov 18, 2025
faa5642
feat(coupon): ์ฟ ํฐ ์ €์žฅ์†Œ ๋ฐ ์„œ๋น„์Šค ๊ตฌํ˜„
hyujikoh Nov 18, 2025
ecddadd
feat(coupon): ์‚ฌ์šฉ์ž ์—”ํ‹ฐํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•œ ์ฟ ํฐ ์ƒ์„ฑ ๋ฉ”์„œ๋“œ ์ˆ˜์ •
hyujikoh Nov 18, 2025
8b7bea1
feat(coupon): ์ฟ ํฐ ์กฐํšŒ ๋ฐ ์†Œ๋น„ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 19, 2025
a16463b
feat(coupon): ์ฟ ํฐ ์กฐํšŒ ๋ฐ ์†Œ๋น„ ๊ธฐ๋Šฅ ๊ฐœ์„ 
hyujikoh Nov 20, 2025
24af4ff
test(order): ์ •์•ก ์ฟ ํฐ ์ ์šฉ ํ›„ ์ด ์ฃผ๋ฌธ ๊ธˆ์•ก ๊ณ„์‚ฐ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 20, 2025
8dadd1d
test(order): ์ •์•ก ์ฟ ํฐ ํ• ์ธ ํ›„ ํฌ์ธํŠธ ์ฐจ๊ฐ ๊ฒ€์ฆ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 20, 2025
ab43b95
feat(order): ๋ฐฐ์œจ ํ• ์ธ ์ฟ ํฐ ์ฃผ๋ฌธ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 20, 2025
122374a
feat(coupon): ์ฟ ํฐ ์กฐํšŒ ์‹œ ์‚ฌ์šฉ์ž ID ๊ธฐ๋ฐ˜์œผ๋กœ ์ˆ˜์ •
hyujikoh Nov 20, 2025
d04679f
feat(coupon): ์ฟ ํฐ ์กฐํšŒ ๋ฐ ์†Œ๋น„ ๊ธฐ๋Šฅ ๊ฐœ์„ 
hyujikoh Nov 20, 2025
d79e8d2
feat(order): ์ฃผ๋ฌธ ์ทจ์†Œ ์‹œ ์ฟ ํฐ ๋ณต๊ตฌ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 20, 2025
a2d28fc
feat(order): ์ฃผ๋ฌธ ์ทจ์†Œ ์‹œ ์ฟ ํฐ ๋ณต๊ตฌ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 20, 2025
4b718d8
test(order): ์ฃผ๋ฌธ ์ทจ์†Œ ์‹œ ํฌ์ธํŠธ ๋ฐ ์žฌ๊ณ  ๋ณต๊ตฌ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 20, 2025
2285aa8
test(order): ์ฃผ๋ฌธ์— ๋Œ€ํ•œ testFixture ๊ตฌํ˜„
hyujikoh Nov 20, 2025
315df09
test(order): ์ฃผ๋ฌธ ์ทจ์†Œ ์‹œ ํฌ์ธํŠธ ๋ฐ ์žฌ๊ณ  ๋ณต๊ตฌ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 20, 2025
f2bd05b
feat(coupon): ์ฟ ํฐ ๋‚™๊ด€์  ๋ฝ ๊ธฐ๋Šฅ ๊ตฌํ˜„
hyujikoh Nov 20, 2025
755ee50
test(coupon): ์ฟ ํฐ ๋™์‹œ์„ฑ ์ œ์–ด ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 20, 2025
e111792
feat(order): ์ฃผ๋ฌธ ์ƒ์„ฑ ์‹œ ์‚ฌ์šฉ์ž ์ •๋ณด ๋™์‹œ์„ฑ ์ œ์–ด ์ถ”๊ฐ€
hyujikoh Nov 20, 2025
a535c7c
Merge remote-tracking branch 'origin/feat/coupon' into feat/coupon
hyujikoh Nov 20, 2025
a6fd72c
feat(product): ์ข‹์•„์š” ์ˆ˜ ์›์ž์  ์ฆ๊ฐ€ ๋ฐ ๊ฐ์†Œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 21, 2025
1a6c9be
refactor: ์ฝ”๋“œ ํฌ๋งทํŒ… ๋ฐ ๋ถˆํ•„์š”ํ•œ ์ž„ํฌํŠธ ์ œ๊ฑฐ
hyujikoh Nov 21, 2025
ac40424
refactor(coupon): ํ• ์ธ ๋น„์œจ ์ปฌ๋Ÿผ ์„ค์ • ์ˆ˜์ •
hyujikoh Nov 21, 2025
5446092
refactor(product): ์ข‹์•„์š” ์นด์šดํŠธ ์ฆ๊ฐ€ ๋กœ์ง ๊ฐœ์„ 
hyujikoh Nov 21, 2025
7a442fb
feat(product): ์ƒํ’ˆ ๋ชฉ๋ก ๋ฐ ์ƒ์„ธ ์กฐํšŒ API ๊ตฌํ˜„
hyujikoh Nov 21, 2025
931bd82
feat(product): ์ƒํ’ˆ ๋ชฉ๋ก ๋ฐ ์ƒ์„ธ ์กฐํšŒ API ์‘๋‹ต ๊ฐœ์„ 
hyujikoh Nov 21, 2025
bdebadd
feat(order): ์ฃผ๋ฌธ API ๊ตฌํ˜„ ๋ฐ E2E ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 21, 2025
db7f946
feat(like): ์ข‹์•„์š” ๋“ฑ๋ก ๋ฐ ์ทจ์†Œ API ๊ตฌํ˜„
hyujikoh Nov 21, 2025
713cf5a
refactor: ์ฝ”๋“œ ์ •๋ฆฌ ๋ฐ ๋ถˆํ•„์š”ํ•œ ์ž„ํฌํŠธ ์ œ๊ฑฐ
hyujikoh Nov 21, 2025
7e39b7b
Merge pull request #21 from hyujikoh/feat/coupon
hyujikoh Nov 21, 2025
c61142a
Merge pull request #22 from hyujikoh/week4
hyujikoh Nov 21, 2025
4b3becc
refactor(like): ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ๋ณ€๊ฒฝ ๋ฐ ๋ถˆํ•„์š”ํ•œ ์ž„ํฌํŠธ ์ •๋ฆฌ
hyujikoh Nov 21, 2025
6733893
Merge pull request #23 from hyujikoh/week4
hyujikoh Nov 21, 2025
34927c5
refactor(like): ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ๋ณ€๊ฒฝ ๋ฐ ๋ถˆํ•„์š”ํ•œ ์ž„ํฌํŠธ ์ •๋ฆฌ
hyujikoh Nov 21, 2025
95e327a
Merge pull request #24 from hyujikoh/week4
hyujikoh Nov 21, 2025
8a2ca46
refactor(order): ์ฃผ๋ฌธ ๊ด€๋ จ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๊ฐœ์„ 
hyujikoh Nov 21, 2025
7229b1d
refactor(product): ์ข‹์•„์š” ์นด์šดํŠธ ์—…๋ฐ์ดํŠธ ์ฟผ๋ฆฌ ์ˆ˜์ •
hyujikoh Nov 21, 2025
9f13e9a
refactor(user): ์‚ฌ์šฉ์ž ์กฐํšŒ ๋ฉ”์„œ๋“œ์— ํŠธ๋žœ์žญ์…˜ ์„ค์ • ์ถ”๊ฐ€
hyujikoh Nov 21, 2025
ff352bd
test(order): ์ฃผ๋ฌธ ์ƒ์„ฑ ์‹คํŒจ ์‹œ ์žฌ๊ณ  ๋ณต๊ตฌ ๊ฒ€์ฆ ๊ฐ•ํ™”
hyujikoh Nov 21, 2025
88ce8ad
refactor(order): ์ฃผ๋ฌธ ๊ด€๋ จ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๊ฐœ์„ 
hyujikoh Nov 21, 2025
4557e67
Merge remote-tracking branch 'origin/main' into week4
hyujikoh Nov 21, 2025
af86b09
refactor(product): ์ข‹์•„์š” ์นด์šดํŠธ ์—…๋ฐ์ดํŠธ ์ฟผ๋ฆฌ ๋ฆฌํŒฉํ† ๋ง
hyujikoh Nov 21, 2025
4d7de8b
refactor(order): ์ฃผ๋ฌธ ์ƒ์„ฑ ์š”์ฒญ DTO ๋ฐ ์—”ํ‹ฐํ‹ฐ ๋ฆฌํŒฉํ† ๋ง
hyujikoh Nov 21, 2025
b8d5f33
refactor(order): ์ฃผ๋ฌธ ๊ด€๋ จ ๊ธˆ์•ก ํ•„๋“œ ์ด๋ฆ„ ๋ณ€๊ฒฝ
hyujikoh Nov 21, 2025
10fc725
refactor(coupon): ์ฟ ํฐ ๋˜๋Œ๋ฆฌ๊ธฐ ๋กœ์ง ํŠธ๋žœ์žญ์…˜ ์ถ”๊ฐ€
hyujikoh Nov 21, 2025
3069c93
refactor(order): ํŽ˜์ด์ง• ์‘๋‹ต DTO ๋ถ„๋ฆฌ ๋ฐ ๋ฆฌํŒฉํ† ๋ง
hyujikoh Nov 21, 2025
647d2eb
refactor(order): ์ฃผ๋ฌธ ๋ชฉ๋ก ์‘๋‹ต DTO ๋ฆฌํŒฉํ† ๋ง
hyujikoh Nov 21, 2025
2063d2a
refactor(test): ํ…Œ์ŠคํŠธ ๋ฉ”์‹œ์ง€ ํฌ๋งท ๊ฐœ์„ 
hyujikoh Nov 21, 2025
05ce094
test(order): ์ฃผ๋ฌธ ์ทจ์†Œ ์‹œ ํฌ์ธํŠธ ํ™˜๋ถˆ ํ™•์ธ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 21, 2025
9e3fef2
refactor(order): ์ฃผ๋ฌธ ์ทจ์†Œ ์‹œ ํฌ์ธํŠธ ํ™˜๋ถˆ ๋กœ์ง ์ˆ˜์ •
hyujikoh Nov 21, 2025
22f82e8
refactor(order): ์ฃผ๋ฌธ ํ™•์ • ๋กœ์ง์— ์‚ฌ์šฉ์ž ์ •๋ณด ์ถ”๊ฐ€
hyujikoh Nov 21, 2025
3237625
refactor(order): ๊ธˆ์•ก ์ •ํ•ฉ์„ฑ ๊ฒ€์ฆ ๋กœ์ง ๊ฐœ์„ 
hyujikoh Nov 21, 2025
b54c050
test(order): ์ฃผ๋ฌธ ์กฐํšŒ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆ˜์ •
hyujikoh Nov 21, 2025
39043d4
refactor(order): ๊ธˆ์•ก ์ •ํ•ฉ์„ฑ ๊ฒ€์ฆ ๋กœ์ง ์†Œ์ˆ˜์  ์ฒ˜๋ฆฌ ๊ฐœ์„ 
hyujikoh Nov 21, 2025
c0dfba3
feat(order): ์ฃผ๋ฌธ ์ƒ์„ฑ ๋ฐ ์ฃผ๋ฌธ ํ•ญ๋ชฉ ์ฒ˜๋ฆฌ ๋กœ์ง ์ถ”๊ฐ€
hyujikoh Nov 21, 2025
9afac65
refactor(order): ์ฟ ํฐ ๊ฒ€์ฆ ๋กœ์ง ๊ฐœ์„  ๋ฐ ์ฝ”๋“œ ๊ฐ„์†Œํ™”
hyujikoh Nov 21, 2025
12d497a
refactor(product): ๋ถˆํ•„์š”ํ•œ ์ฃผ์„ ๋ฐ ๋ฉ”์„œ๋“œ ์ œ๊ฑฐ
hyujikoh Nov 22, 2025
359d98c
feat(product): ์ƒํ’ˆ ์—”ํ‹ฐํ‹ฐ ์ธ๋ฑ์Šค ์ถ”๊ฐ€
hyujikoh Nov 25, 2025
27bf8e3
feat(product): ์ƒํ’ˆ ๋ฐ์ดํ„ฐ ์ž๋™ ์ƒ์„ฑ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 25, 2025
5b5b437
feat(product): ์ƒํ’ˆ ์บ์‹œ ์„œ๋น„์Šค ์ถ”๊ฐ€
hyujikoh Nov 26, 2025
876d26e
feat(product): ์ƒํ’ˆ ์บ์‹œ ๋ฐฐ์น˜ ๊ฐฑ์‹  ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 26, 2025
59717a1
feat(product): ์ƒํ’ˆ ์ข‹์•„์š” ํ†ต๊ณ„ MV ํ…Œ์ด๋ธ” ์ถ”๊ฐ€
hyujikoh Nov 26, 2025
0407539
feat(product): ์ข‹์•„์š” ์ˆ˜ ๊ด€๋ฆฌ ๋ฐฉ์‹ ๋ณ€๊ฒฝ
hyujikoh Nov 26, 2025
74fd3ed
feat(product): ์ข‹์•„์š” ์ˆ˜ ๊ด€๋ฆฌ ๋ฐฉ์‹ ๋ณ€๊ฒฝ
hyujikoh Nov 26, 2025
8a30584
refactor(product): likeCount ์ •๋ ฌ ์ฒ˜๋ฆฌ ๋ฐฉ์‹ ๋ณ€๊ฒฝ
hyujikoh Nov 26, 2025
f1a2a5c
feat(product): ์ข‹์•„์š” ํ†ต๊ณ„ ๋ฐ ์บ์‹œ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 26, 2025
4774f15
test: ํ…Œ์ŠคํŠธ ์‹œ redis truncated ๋กœ์ง ์ถ”๊ฐ€
hyujikoh Nov 26, 2025
53f5666
feat(product): ์ข‹์•„์š” ๋“ฑ๋ก ๋ฐ ์ทจ์†Œ ์‹œ ํ†ต๊ณ„ ์—…๋ฐ์ดํŠธ ๋กœ์ง ๊ฐœ์„ 
hyujikoh Nov 26, 2025
40be7c9
feat(product): ์ข‹์•„์š” ํ†ต๊ณ„ ๋™๊ธฐํ™” ๋ฐ ํ…Œ์ŠคํŠธ ๋กœ์ง ์ถ”๊ฐ€
hyujikoh Nov 26, 2025
aa56ccf
feat(product): ์ƒํ’ˆ Materialized View ์—”ํ‹ฐํ‹ฐ ์ถ”๊ฐ€
hyujikoh Nov 27, 2025
080a187
feat(product): ์ƒํ’ˆ Materialized View ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฐ ์ฟผ๋ฆฌ ๊ตฌํ˜„
hyujikoh Nov 27, 2025
89c2c00
feat(product): ์ƒํ’ˆ Materialized View ๋™๊ธฐํ™” ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 27, 2025
b1fa774
feat(product): ํ™œ์„ฑ ์ƒํ’ˆ ์กฐํšŒ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 27, 2025
aadae2d
feat(product): ์ƒํ’ˆ ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ ์„ฑ๋Šฅ ์ตœ์ ํ™”
hyujikoh Nov 27, 2025
dfbafe3
feat(product): ํ™œ์„ฑ ์ƒํ’ˆ ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ๋กœ ๋ณ€๊ฒฝ
hyujikoh Nov 27, 2025
b26c44e
refactor(product): ์ข‹์•„์š” ํ†ต๊ณ„ ์„œ๋น„์Šค ์ œ๊ฑฐ ๋ฐ ๋ฆฌํŒฉํ† ๋ง
hyujikoh Nov 27, 2025
28162a3
style: ์ฝ”๋“œ ํฌ๋งทํŒ… ๋ฐ ๋ถˆํ•„์š”ํ•œ ๊ณต๋ฐฑ ์ œ๊ฑฐ
hyujikoh Nov 27, 2025
a274d5e
feat(product): ์„ธ๋ฐ€ํ•œ ์บ์‹œ ๋ฌดํšจํ™” ๊ธฐ๋Šฅ ์ถ”๊ฐ€
hyujikoh Nov 27, 2025
55179de
feat(product): ๋ฐฐ์น˜ ์—…๋ฐ์ดํŠธ ๊ฒฐ๊ณผ์— ๋ณ€๊ฒฝ๋œ ์ƒํ’ˆ ๋ฐ ๋ธŒ๋žœ๋“œ ID ์ถ”๊ฐ€
hyujikoh Nov 27, 2025
d738c87
feat(product): ์บ์‹ฑ ์ „๋žต ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
hyujikoh Nov 27, 2025
f18ac55
chore(product): ์ฃผ์„ ๊ฐœ์„ 
hyujikoh Nov 27, 2025
6963902
refactor(product): ๊ตฌ์กฐ ์ˆ˜์ •
hyujikoh Nov 27, 2025
a601a3b
refactor(product): ์ฃผ์„ ์ˆ˜์ •
hyujikoh Nov 27, 2025
53fb60f
refactor(product): DTO ์ฃผ์„ ๋ฐ ๋ฌธ์„œ ๊ฐœ์„ 
hyujikoh Nov 28, 2025
2fee591
refactor(product): ์ƒํ’ˆ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ Runner ์ฃผ์„ ๊ฐœ์„ 
hyujikoh Nov 28, 2025
dc961f2
refactor(product): Hot ์บ์‹œ TTL ๊ฐ’์„ 60๋ถ„์—์„œ 30๋ถ„์œผ๋กœ ๋ณ€๊ฒฝ
hyujikoh Nov 28, 2025
bb65d07
refactor(product): ์ƒํ’ˆ ๋ฐ ๋ธŒ๋žœ๋“œ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ๋กœ์ง ๊ฐœ์„ 
hyujikoh Nov 28, 2025
2adf7d5
refactor(product): ์ƒํ’ˆ ๋ฐ ๋ธŒ๋žœ๋“œ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ๋กœ์ง ๊ฐœ์„ 
hyujikoh Nov 28, 2025
e68693d
feat(product): MV ๋™๊ธฐํ™” ์„ฑ๋Šฅ ๊ฐœ์„  ๋ฐ ๋ฐฐ์น˜ ๋กœ์ง ๋ฆฌํŒฉํ† ๋ง
hyujikoh Nov 28, 2025
6f411eb
chore : ๋ถˆํ•„์š”ํ•œ ์ฃผ์„ ์ œ๊ฑฐ
hyujikoh Nov 28, 2025
521111c
feat(product): ์ƒํ’ˆ ์ธ๋ฉ”๋ชจ๋ฆฌ MV ์บ์‹ฑ ๋ฐ ํด๋ฐฑ ์กฐํšŒ ๋กœ์ง ๊ฐœ์„ 
hyujikoh Nov 28, 2025
39cddc2
refactor(product): ์ƒํ’ˆ MV ์กฐํšŒ ๋ฐ ์บ์‹ฑ ๋กœ์ง ๊ตฌ์กฐ ๊ฐœ์„ 
hyujikoh Nov 28, 2025
15ff9d4
refactor(product): ์ƒํ’ˆ ์ƒ์„ธ ์กฐํšŒ ๋ฐ MV ์‚ญ์ œ ๋กœ์ง ๊ฐœ์„ 
hyujikoh Nov 28, 2025
12c428e
refactor(product): MV ์—”ํ‹ฐํ‹ฐ ์บ์‹ฑ ๋ฐ ์กฐํšŒ ์ฑ…์ž„ ๋ถ„๋ฆฌ
hyujikoh Nov 28, 2025
ab37df2
feat(product): ์ƒํ’ˆ MV ํ†ตํ•ฉ ๊ฒ€์ƒ‰ ํ•„ํ„ฐ ๋ฐ ์กฐํšŒ ๋กœ์ง ๊ฐœ์„ 
hyujikoh Nov 28, 2025
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
13 changes: 13 additions & 0 deletions .codeguide/loopers-1-week.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,16 @@

- [ ] ํฌ์ธํŠธ ์กฐํšŒ์— ์„ฑ๊ณตํ•  ๊ฒฝ์šฐ, ๋ณด์œ  ํฌ์ธํŠธ๋ฅผ ์‘๋‹ต์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
- [ ] `X-USER-ID` ํ—ค๋”๊ฐ€ ์—†์„ ๊ฒฝ์šฐ, `400 Bad Request` ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


### ํฌ์ธํŠธ ์ถฉ์ „

**๐Ÿงฑ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ**
- [ ] ์ดํ•˜์˜ ์ •์ˆ˜๋กœ ํฌ์ธํŠธ๋ฅผ ์ถฉ์ „ ์‹œ ์‹คํŒจํ•œ๋‹ค.

**๐Ÿ”— ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ**
- [ ] ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์œ ์ € ID ๋กœ ์ถฉ์ „์„ ์‹œ๋„ํ•œ ๊ฒฝ์šฐ, ์‹คํŒจํ•œ๋‹ค.

**๐ŸŒ E2E ํ…Œ์ŠคํŠธ**
- [ ] ํฌ์ธํŠธ ์ถฉ์ „์ด ์„ฑ๊ณตํ•  ๊ฒฝ์šฐ, ์—…๋ฐ์ดํŠธ๋œ ๋ณด์œ  ํฌ์ธํŠธ๋ฅผ ์‘๋‹ต์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
- [ ] ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์œ ์ €๋กœ ์š”์ฒญํ•  ๊ฒฝ์šฐ, 404 Not Found ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

.kiro
apps/commerce-api/src/main/generated/**
docs/project-analysis
### STS ###
.apt_generated
.classpath
Expand Down
4 changes: 4 additions & 0 deletions apps/commerce-api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ dependencies {
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:${project.properties["springDocOpenApiVersion"]}")


// faker
implementation("net.datafaker:datafaker:2.0.2")

// querydsl
annotationProcessor("com.querydsl:querydsl-apt::jakarta")
annotationProcessor("jakarta.persistence:jakarta.persistence-api")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
package com.loopers;

import jakarta.annotation.PostConstruct;
import java.util.TimeZone;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
import java.util.TimeZone;
import org.springframework.scheduling.annotation.EnableScheduling;

import jakarta.annotation.PostConstruct;

@ConfigurationPropertiesScan
@SpringBootApplication
@EnableScheduling
public class CommerceApiApplication {

@PostConstruct
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.loopers.application.brand;

/**
* @author hyunjikoh
* @since 2025. 11. 10.
*/
public record BrandInfo(
Long id,
String name,
String description
) {
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.loopers.application.example;

import org.springframework.stereotype.Component;

import com.loopers.domain.example.ExampleModel;
import com.loopers.domain.example.ExampleService;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

@RequiredArgsConstructor
@Component
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
public record ExampleInfo(Long id, String name, String description) {
public static ExampleInfo from(ExampleModel model) {
return new ExampleInfo(
model.getId(),
model.getName(),
model.getDescription()
model.getId(),
model.getName(),
model.getDescription()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package com.loopers.application.like;

import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import com.loopers.domain.like.LikeResult;
import com.loopers.domain.like.LikeService;
import com.loopers.domain.product.ProductCacheService;
import com.loopers.domain.product.ProductEntity;
import com.loopers.domain.product.ProductService;
import com.loopers.domain.user.UserEntity;
import com.loopers.domain.user.UserService;
import com.loopers.support.error.CoreException;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

/**
* ์ข‹์•„์š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒŒ์‚ฌ๋“œ
*
* ์ข‹์•„์š” ๊ด€๋ จ ์œ ์Šค์ผ€์ด์Šค๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
* ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ ์„œ๋น„์Šค(User, Product, Like)๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์™„์ „ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ํ๋ฆ„์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
*
* @author hyunjikoh
* @since 2025. 11. 11.
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class LikeFacade {
private final ProductService productService;
private final UserService userService;
private final LikeService likeService;
private final ProductCacheService cacheService;

/**
* ์ข‹์•„์š”๋ฅผ ๋“ฑ๋กํ•˜๊ฑฐ๋‚˜ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.
*
* @param username ์‚ฌ์šฉ์ž๋ช…
* @param productId ์ƒํ’ˆ ID
* @return ์ข‹์•„์š” ์ •๋ณด DTO
* @throws CoreException ์‚ฌ์šฉ์ž ๋˜๋Š” ์ƒํ’ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ
*/
@Transactional
public LikeInfo upsertLike(String username, Long productId) {
log.debug("์ข‹์•„์š” ๋“ฑ๋ก/๋ณต์› ์‹œ์ž‘ - username: {}, productId: {}", username, productId);

// 1. ์‚ฌ์šฉ์ž ๊ฒ€์ฆ
UserEntity user = userService.getUserByUsername(username);

// 2. ์ƒํ’ˆ ๊ฒ€์ฆ
ProductEntity product = productService.getActiveProductDetail(productId);

// 3. ์ข‹์•„์š” ๋“ฑ๋ก/๋ณต์› (์‹ค์ œ ๋ณ€๊ฒฝ ์—ฌ๋ถ€ ํ™•์ธ)
LikeResult result = likeService.upsertLike(user, product);

// 5. DTO ๋ณ€ํ™˜ ํ›„ ๋ฐ˜ํ™˜
return LikeInfo.of(result.entity(), product, user);
}

/**
* ์ข‹์•„์š”๋ฅผ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.
*
* ์ข‹์•„์š”๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ƒํ’ˆ์˜ ์ข‹์•„์š” ์นด์šดํŠธ๋ฅผ ๊ฐ์†Œ์‹œํ‚ต๋‹ˆ๋‹ค.
*
* @param username ์‚ฌ์šฉ์ž๋ช…
* @param productId ์ƒํ’ˆ ID
* @throws CoreException ์‚ฌ์šฉ์ž ๋˜๋Š” ์ƒํ’ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ
*/
@Transactional
public void unlikeProduct(String username, Long productId) {
log.debug("์ข‹์•„์š” ์ทจ์†Œ ์‹œ์ž‘ - username: {}, productId: {}", username, productId);

// 1. ์‚ฌ์šฉ์ž ๊ฒ€์ฆ
UserEntity user = userService.getUserByUsername(username);

// 2. ์ƒํ’ˆ ๊ฒ€์ฆ
ProductEntity product = productService.getActiveProductDetail(productId);

// 3. ์ข‹์•„์š” ์ทจ์†Œ
likeService.unlikeProduct(user, product);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.loopers.application.like;

import java.time.ZonedDateTime;

import com.loopers.domain.like.LikeEntity;
import com.loopers.domain.product.ProductEntity;
import com.loopers.domain.user.UserEntity;

/**
* @author hyunjikoh
* @since 2025. 11. 12.
*/
public record LikeInfo(
String username,
Long productId,
String productName,
ZonedDateTime createdAt
) {
public static LikeInfo of(LikeEntity like, ProductEntity product, UserEntity user) {
return new LikeInfo(
user.getUsername(),
product.getId(),
product.getName(),
like.getCreatedAt()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.loopers.application.order;

import java.util.List;

import lombok.Builder;

/**
* ์ฃผ๋ฌธ ์ƒ์„ฑ ์ปค๋งจ๋“œ
*
* @author hyunjikoh
* @since 2025. 11. 14.
*/
@Builder
public record OrderCreateCommand(
String username,
List<OrderItemCommand> orderItems
) {
}
Loading