diff --git a/members/yenachang924/idea.md b/members/yenachang924/idea.md index 16c2345..a4d1614 100644 --- a/members/yenachang924/idea.md +++ b/members/yenachang924/idea.md @@ -1,14 +1,14 @@ -# ๐Ÿ’ก ํ”„๋กœ์ ํŠธ ๊ธฐํš์„œ โ€” ๋นตํ‚ต (BbangKeep) +# ๐Ÿ’ก ํ”„๋กœ์ ํŠธ ๊ธฐํš์„œ. ๋นตํ‚ต (BbangKeep) | ํ•ญ๋ชฉ | ๋‚ด์šฉ | | --- | --- | | **1. ํ•œ ์ค„ ์ •์˜** | ํ’ˆ์ ˆ ์ „์— ์›ํ•˜๋Š” ๋นต์„ ํ™•๋ณดํ•˜๊ณ  ์‹ถ์€ ๋นต์ง€์ˆœ๋ก€ ์†Œ๋น„์ž์™€, ์ƒ์‚ฐ๋Ÿ‰์„ ๊ฐ์œผ๋กœ ์ •ํ•˜๋Š” ๋™๋„ค ๋นต์ง‘ ์‚ฌ์žฅ์„ ์œ„ํ•œ **์„ ๊ฒฐ์ œ ํ”ฝ์—… ์˜ˆ์•ฝ ์„œ๋น„์Šค**. | -| **2. ๋ฌธ์ œ** | ๋‹น์ผ ์ œ์กฐยท๋‹น์ผ ์†Œ์ง„์ด๋ผ ์†๋‹˜์€ "๊ฐ€๋ฉด ๊ทธ ๋นต์ด ์žˆ๋Š”์ง€"๋ฅผ ์•Œ ์ˆ˜ ์—†๋‹ค โ†’ ์˜คํ”ˆ๋Ÿฐ์œผ๋กœ ์‹œ๊ฐ„์„ ์“ฐ๊ฑฐ๋‚˜, ํ—›๊ฑธ์Œํ•˜๊ฑฐ๋‚˜, ์›์น˜ ์•Š๋Š” ์ฐจ์„ ์„ ์‚ฐ๋‹ค. ์‚ฌ์žฅ์€ ํ’ˆ์ ˆ ๋ฌธ์˜ ์‘๋Œ€์— ์‹œ๋‹ฌ๋ฆฌ๊ณ  ํ’ˆ์ ˆ ํ›„ ๋ฐฉ๋ฌธ๊ฐ์€ ์ „๋ถ€ ๋†“์นœ ๋งค์ถœ. ์ง€๊ธˆ ์ด ๋‘˜์„ ์ž‡๋Š” ์ฑ„๋„์€ ์ธ์Šคํƒ€ ์Šคํ† ๋ฆฌ(์ผ๋ฐฉํ–ฅยท์˜ˆ์•ฝ ๋ถˆ๊ฐ€ยท24์‹œ๊ฐ„ ์†Œ๋ฉธ)์™€ ์ „ํ™”๋ฟ. | -| **3. ํ•ด๊ฒฐ์ฑ…** | ์‚ฌ์žฅ์€ ์•„์นจ 1ํšŒ 5๋ถ„, ์˜ค๋Š˜์˜ ๊ตฝ๋Š” ์‹œ๊ฐ„ํ‘œ์™€ ์‹œ๊ฐ„๋Œ€๋ณ„ ์ˆ˜๋Ÿ‰๋งŒ ์˜ฌ๋ฆฐ๋‹ค. ์†๋‹˜์€ ์‹œ๊ฐ„๋Œ€๋ฅผ ๊ณจ๋ผ ์ •๊ฐ€ ์„ ๊ฒฐ์ œ๋กœ 'ํ‚ต'ํ•˜๊ณ  ์ค„ ์—†์ด ํ”ฝ์—…. ํ•ต์‹ฌ์€ ์ผ๋ถ€๋Ÿฌ **ํ•˜์ง€ ์•Š๋Š” ๋‘ ๊ฐ€์ง€** โ€” ์‹ค์‹œ๊ฐ„ ์žฌ๊ณ  ์ž…๋ ฅ ์š”๊ตฌ ์—†์Œ(์‚ฌ์žฅ์ด ์ง€์† ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋‹ˆ๊นŒ), ํ• ์ธ ์—†์Œ(ํŒŒ๋Š” ๊ฒƒ์€ ์‹ผ ๋นต์ด ์•„๋‹ˆ๋ผ "๊ฐ€๋ฉด ๋ฐ˜๋“œ์‹œ ์žˆ๋‹ค"๋Š” ํ™•์‹คํ•จ). | -| **4. ์™œ ์ง€๊ธˆ** | ์ˆ˜์š” ์ชฝ: ๋นต์ง€์ˆœ๋ก€๊ฐ€ ๋Œ€์ค‘ ์ทจ๋ฏธ๊ฐ€ ๋˜๋ฉฐ '๋นต์ผ€ํŒ…' ์‹ ์กฐ์–ด๊นŒ์ง€ ์ƒ๊ฒผ๋Š”๋ฐ, ํ™•๋ณด ์ˆ˜๋‹จ๋งŒ ๊ณต๋ฐฑ์œผ๋กœ ๋‚จ์•„ ์žˆ๋‹ค. ๊ธฐ์ˆ  ์ชฝ: AI ์ฝ”๋”ฉ ๋„๊ตฌ๋กœ ๊ฐœ๋ฐœ ํŒŒํŠธ๋„ˆ ์—†์ด๋„ 6์ฃผ ์•ˆ์— ์˜ˆ์•ฝ ํ๋ฆ„์„ ๋ถ™์ผ ์ˆ˜ ์žˆ๊ฒŒ ๋๋‹ค โ€” ์ž‘๋…„์ด๋ผ๋ฉด ๊ธฐํš์„œ์—์„œ ๋ฉˆ์ท„์„ ๊ทœ๋ชจ. (๊ฐ€์„ค) ์žฅ๊ธฐ์ ์œผ๋กœ๋Š” ์Œ“์ธ ํ‚ต ๋ฐ์ดํ„ฐ ์œ„์— LLM์„ ์–น์–ด "๋‚ด์ผ ๋ช‡ ๊ฐœ ๊ตฌ์šธ๊นŒ"๋ฅผ ์ œ์•ˆํ•˜๋Š” ์šด์˜ ๋น„์„œ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋‚˜, ๋ฐ์ดํ„ฐ ์—†๋Š” AI ๋„์ž…์€ ํ•˜์ง€ ์•Š๋Š”๋‹ค(์ˆœ์„œ: ๊ฑฐ๋ž˜ โ†’ ๋ฐ์ดํ„ฐ โ†’ ์ž๋™ํ™”). | -| **5. ์‚ฌ์šฉ์ž** | 1์ฐจ ์‚ฌ์šฉ์ž๋Š” ์„œ์šธ ๋ง์›ยท์—ฐ๋‚จ์˜ ์ค‘์œ„๊ถŒ ์ธ๊ธฐ ๋นต์ง‘ โ€” ์ธ์Šคํƒ€์— ํ’ˆ์ ˆ ๊ณต์ง€๋Š” ์˜ฌ๋ฆฌ์ง€๋งŒ ์˜ˆ์•ฝยท์›จ์ดํŒ… ์•ฑ์€ ์“ฐ์ง€ ์•Š๋Š” ๊ณณ. ์ ‘์ด‰ ๋Œ€์ƒ 30๊ณณ ๋ฆฌ์ŠคํŠธ์—…. 2์ฐจ๋Š” ๊ทธ ๊ฐ€๊ฒŒ๋ฅผ ๋”ฐ๋ผ๋‹ค๋‹ˆ๋Š” ๋นต์ง€์ˆœ๋ก€ํ˜• ์†Œ๋น„์ž. (๊ฐ€์„ค) ์ „๊ตญ์—์„œ ํ’ˆ์ ˆ์ด ๋ฐœ์ƒํ•˜๋Š” ์ธ๊ธฐ ๋กœ์ปฌ ๋นต์ง‘ ์•ฝ 900๊ณณ โ€” ์ „์ฒด 1.85๋งŒ ๊ณณ์˜ 5% ์ถ”์‚ฐ. | -| **6. ๋Œ€์•ˆยท๊ฒฝ์Ÿ** | ๋Ÿญํ‚ค๋ฐ€(๋งˆ๊ฐยท๋žœ๋ค๋ฐ•์Šคยทํ• ์ธ), ์บ์น˜ํ…Œ์ด๋ธ”ยทํ…Œ์ด๋ธ”๋ง(๋„์ฐฉํ•œ ์†๋‹˜์˜ ์ค„ ๊ด€๋ฆฌ), ํ•ดํ”ผ์˜ค๋”(ํ”„๋žœ์ฐจ์ด์ฆˆ ์ž์ฒด ์•ฑ), ์ธ์Šคํƒ€ DM(ํ˜„์žฌ ๊ด€ํ–‰). ์ฐจ๋ณ„์  ํ•œ ๋ฌธ์žฅ: **"๋Ÿญํ‚ค๋ฐ€์ด ๋งˆ๊ฐ์˜ ๋žœ๋ค์„ ํŒ๋‹ค๋ฉด, ๋นตํ‚ต์€ ์˜คํ”ˆ์˜ ์ง€๋ช…์„ ํŒ๋‹ค"** โ€” ์•„์นจยท์ง€๋ช…ยท์ •๊ฐ€. ์›จ์ดํŒ…์ด ์ค„์„ ๊ด€๋ฆฌํ•œ๋‹ค๋ฉด ๋นตํ‚ต์€ ๋„์ฐฉํ•˜๊ธฐ ์ „์— ํ™•๋ณดํ•œ๋‹ค. | -| **7. ์ œํ’ˆ** | ํ•ต์‹ฌ ๊ธฐ๋Šฅ โ€” โ‘  ์‚ฌ์žฅ์˜ ์•„์นจ ์ž…๋ ฅ์„ ์˜ˆ์•ฝ ํŽ˜์ด์ง€๋กœ ๋ณ€ํ™˜ โ‘ก ์†๋‹˜์˜ ์‹œ๊ฐ„๋Œ€ ์„ ํƒยท**์„ ๊ฒฐ์ œ ํ‚ต** โ‘ข ํ’ˆ์ ˆ/๋งˆ๊ฐ ์›ํ„ฐ์น˜. **6์ฃผ MVP๋Š” 2๋‹จ๊ณ„**: (1๋‹จ๊ณ„) ๋‚ด๊ฐ€ ์ฝ˜์‹œ์–ด์ง€ ์šด์˜์— ์“ธ ๋„๊ตฌ โ€” ์นดํ†ก์œผ๋กœ ๋ฐ›์€ ํ•œ ์ค„์„ ์˜ˆ์•ฝ ํŽ˜์ด์ง€๋กœ ๋งŒ๋“ค๊ณ  ๋“ค์–ด์˜จ ์˜ˆ์•ฝ์„ ๊ฐ€๊ฒŒ๋ณ„๋กœ ์ง‘๊ณ„ (2๋‹จ๊ณ„) ์†๋‹˜์šฉ ์˜ˆ์•ฝ+๊ฒฐ์ œ ํŽ˜์ด์ง€. **๊ฒฐ์ œ๋Š” ์ƒŒ๋“œ๋ฐ•์Šค/ํ…Œ์ŠคํŠธ ์—ฐ๋™**์œผ๋กœ ๊ฒฐ์ œ์ฐฝ ํ˜ธ์ถœโ†’์ฝœ๋ฐฑโ†’์„ฑ๊ณตยท์‹คํŒจ ๋ถ„๊ธฐ๊นŒ์ง€ ํ๋ฆ„์„ ๋ถ™์—ฌ ํ•™์Šตํ•˜๋˜, ์‹ค ์ •์‚ฐ ๊ตฌ์กฐ๋Š” ์‚ฌ์—…๊ณ„ํš์„œ๋Œ€๋กœ ์†๋‹˜โ†’๊ฐ€๊ฒŒ ๊ณ„์ขŒ ์ง์ ‘ ์ž…๊ธˆ์„ ์œ ์ง€ํ•œ๋‹ค(๋นตํ‚ต์€ ๋ˆ์„ ๋งŒ์ง€์ง€ ์•Š์Œ). **๋ฒ”์œ„ ๋ฐ–**: ์‹ค์‹œ๊ฐ„ ์žฌ๊ณ , ์‹ค PG ๊ณ„์•ฝยท์ •์‚ฐ, ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ, ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ. | -| **8. ์ง€์† ๋ฐฉ๋ฒ•** | ํ• ์ธ ์—†์ด 'ํ™•๋ณด์˜ ๊ฐ’'์„ ๋ฐ›๋˜, ๊ฐ ๊ณผ๊ธˆ์€ ์•ž ๋‹จ๊ณ„ ์ง€ํ‘œ๊ฐ€ ์ฆ๋ช…๋œ ๋’ค์—๋งŒ ์ผ ๋‹ค. Phase 0 ์ˆ˜์ˆ˜๋ฃŒ 0์›(์ด ์‹œ๊ธฐ์˜ ์ˆ˜์ต์€ ๊ฑฐ๋ž˜ ๋ฐ์ดํ„ฐ์™€ ์‚ฌ์žฅ ์‹ ๋ขฐ) โ†’ Phase 1 ์†Œ๋น„์ž ํ‚ต ์ˆ˜์ˆ˜๋ฃŒ ๊ฑด๋‹น 500์› โ†’ Phase 2 ๊ฐ€๊ฒŒ ๊ฑฐ๋ž˜ ์ˆ˜์ˆ˜๋ฃŒ 5%(๋ฐฐ๋‹ฌ์•ฑ์˜ ์ ˆ๋ฐ˜) โ†’ Phase 3 ๊ตฌ๋…ยท์ˆ˜์š”์˜ˆ์ธก ๋ฐ์ดํ„ฐ. (๊ฐ€์„ค) ๋ชจ๋“  ์ˆ˜์น˜๋Š” ๊ฐ€์ • ๊ธฐ๋ฐ˜ ์ถ”์‚ฐ์ด๋ฉฐ, ํ‚ต ์ „ํ™˜์œจ 5% ๋ฏธ๋งŒ์ด๋ฉด '์˜ค๋Š˜์˜ ๋นต ์•Œ๋ฆผ'์œผ๋กœ ํ”ผ๋ฒ—. | -| **9. ๋‚˜(ํŒ€)** | ํƒ€๊นƒ ๋‹น์‚ฌ์ž โ€” ๋นต์ผ€ํŒ…์„ ์ง์ ‘ ๊ฒช๋Š” ํ—ค๋น„์œ ์ €๋ผ ๋ฌธ์ œ๋ฅผ ๋ชธ์œผ๋กœ ์•ˆ๋‹ค. ์บ ํผ์Šค ์ƒ๊ถŒ ํ”Œ๋žซํผ PM์œผ๋กœ ์†Œ์ƒ๊ณต์ธยท์†Œ๋น„์ž ์–‘๋ฉด ์‹œ์žฅ์„ ์„ค๊ณ„ํ•ด๋ดค๋‹ค. 22๊ฐœ ์ถœ์ฒ˜ ๊ต์ฐจ๊ฒ€์ฆ ์กฐ์‚ฌ์™€ ๋ฐ˜์ฆ ๊ฐ€์„ค ์ค‘์‹ฌ ๊ฒ€์ฆ ์„ค๊ณ„๋ฅผ ์ง์ ‘ ์ˆ˜ํ–‰ โ€” ์•„์ด๋””์–ด์— ์ทจํ•˜์ง€ ์•Š๊ณ  ์ฃฝ์—ฌ๋ณด๋Š” ํ›ˆ๋ จ์ด ๋ผ ์žˆ๋‹ค. ๋ถ€์กฑํ•œ ๊ฑด ๊ฐœ๋ฐœ ๊ฒฝํ—˜์ด๊ณ , ์ด 6์ฃผ๊ฐ€ ๊ทธ ๋ณด์™„ ๊ณผ์ •์ด๋‹ค. | -| **10. 6์ฃผ ๊ณ„ํš** | **3์ฃผ์ฐจ** ๋ฐ์ดํ„ฐ ๋ชจ๋ธยทํ™”๋ฉด ์„ค๊ณ„ + ์‚ฌ์žฅ ์ž…๋ ฅ โ†’ ์˜ˆ์•ฝ ํŽ˜์ด์ง€ ์ƒ์„ฑ ํ๋ฆ„ 1๊ฐœ ์™„์„ฑ(๊ฐ€์ƒ ๋นต์ง‘ 1๊ณณ) ยท **4์ฃผ์ฐจ** ์˜ˆ์•ฝ ์ ‘์ˆ˜ยท์ง‘๊ณ„ ๋ถ™์—ฌ์„œ ์ฝ˜์‹œ์–ด์ง€ ๋„๊ตฌ ํ•œ ๋ฐ”ํ€ด ๋Œ๋ฆฌ๊ธฐ ยท **5์ฃผ์ฐจ** ์†๋‹˜์šฉ ์˜ˆ์•ฝ ํŽ˜์ด์ง€(์‹œ๊ฐ„๋Œ€ ์„ ํƒ โ†’ ์˜ˆ์•ฝ ํ™•์ •) + **๊ฒฐ์ œ ์ƒŒ๋“œ๋ฐ•์Šค ์—ฐ๋™**(๊ฒฐ์ œ์ฐฝ โ†’ ์ฝœ๋ฐฑ โ†’ ์„ฑ๊ณตยท์‹คํŒจ ๋ถ„๊ธฐ) ยท **6์ฃผ์ฐจ** ๋ฐฐํฌ + ๊ฐ€์ƒ ๋ฐ์ดํ„ฐ ์‹œ๋‚˜๋ฆฌ์˜ค ํ…Œ์ŠคํŠธ + ๋ฐœํ‘œ | +| **2. ๋ฌธ์ œ** | ๋‹น์ผ ์ œ์กฐ, ๋‹น์ผ ์†Œ์ง„์ด๋ผ ์†๋‹˜์€ "๊ฐ€๋ฉด ๊ทธ ๋นต์ด ์žˆ๋Š”์ง€"๋ฅผ ์•Œ ์ˆ˜ ์—†๋‹ค โ†’ ์˜คํ”ˆ๋Ÿฐ์œผ๋กœ ์‹œ๊ฐ„์„ ์“ฐ๊ฑฐ๋‚˜, ํ—›๊ฑธ์Œํ•˜๊ฑฐ๋‚˜, ์›์น˜ ์•Š๋Š” ์ฐจ์„ ์„ ์‚ฐ๋‹ค. ์‚ฌ์žฅ์€ ํ’ˆ์ ˆ ๋ฌธ์˜ ์‘๋Œ€์— ์‹œ๋‹ฌ๋ฆฌ๊ณ  ํ’ˆ์ ˆ ํ›„ ๋ฐฉ๋ฌธ๊ฐ์€ ์ „๋ถ€ ๋†“์นœ ๋งค์ถœ. ์ง€๊ธˆ ์ด ๋‘˜์„ ์ž‡๋Š” ์ฑ„๋„์€ ์ธ์Šคํƒ€ ์Šคํ† ๋ฆฌ(์ผ๋ฐฉํ–ฅ, ์˜ˆ์•ฝ ๋ถˆ๊ฐ€, 24์‹œ๊ฐ„ ์†Œ๋ฉธ)์™€ ์ „ํ™”๋ฟ. | +| **3. ํ•ด๊ฒฐ์ฑ…** | ์‚ฌ์žฅ์€ ์•„์นจ 1ํšŒ 5๋ถ„, ์˜ค๋Š˜์˜ ๊ตฝ๋Š” ์‹œ๊ฐ„ํ‘œ์™€ ์‹œ๊ฐ„๋Œ€๋ณ„ ์ˆ˜๋Ÿ‰๋งŒ ์˜ฌ๋ฆฐ๋‹ค. ์†๋‹˜์€ ์‹œ๊ฐ„๋Œ€๋ฅผ ๊ณจ๋ผ ์ •๊ฐ€ ์„ ๊ฒฐ์ œ๋กœ 'ํ‚ต'ํ•˜๊ณ  ์ค„ ์—†์ด ํ”ฝ์—…. ํ•ต์‹ฌ์€ ์ผ๋ถ€๋Ÿฌ **ํ•˜์ง€ ์•Š๋Š” ๋‘ ๊ฐ€์ง€**. ์‹ค์‹œ๊ฐ„ ์žฌ๊ณ  ์ž…๋ ฅ ์š”๊ตฌ ์—†์Œ(์‚ฌ์žฅ์ด ์ง€์† ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋‹ˆ๊นŒ), ํ• ์ธ ์—†์Œ(ํŒŒ๋Š” ๊ฒƒ์€ ์‹ผ ๋นต์ด ์•„๋‹ˆ๋ผ "๊ฐ€๋ฉด ๋ฐ˜๋“œ์‹œ ์žˆ๋‹ค"๋Š” ํ™•์‹คํ•จ). | +| **4. ์™œ ์ง€๊ธˆ** | ์ˆ˜์š” ์ชฝ: ๋นต์ง€์ˆœ๋ก€๊ฐ€ ๋Œ€์ค‘ ์ทจ๋ฏธ๊ฐ€ ๋˜๋ฉฐ '๋นต์ผ€ํŒ…' ์‹ ์กฐ์–ด๊นŒ์ง€ ์ƒ๊ฒผ๋Š”๋ฐ, ํ™•๋ณด ์ˆ˜๋‹จ๋งŒ ๊ณต๋ฐฑ์œผ๋กœ ๋‚จ์•„ ์žˆ๋‹ค. ๊ธฐ์ˆ  ์ชฝ: AI ์ฝ”๋”ฉ ๋„๊ตฌ๋กœ ๊ฐœ๋ฐœ ํŒŒํŠธ๋„ˆ ์—†์ด๋„ 6์ฃผ ์•ˆ์— ์˜ˆ์•ฝ ํ๋ฆ„์„ ๋ถ™์ผ ์ˆ˜ ์žˆ๊ฒŒ ๋๋‹ค. ์ž‘๋…„์ด๋ผ๋ฉด ๊ธฐํš์„œ์—์„œ ๋ฉˆ์ท„์„ ๊ทœ๋ชจ. (๊ฐ€์„ค) ์žฅ๊ธฐ์ ์œผ๋กœ๋Š” ์Œ“์ธ ํ‚ต ๋ฐ์ดํ„ฐ ์œ„์— LLM์„ ์–น์–ด "๋‚ด์ผ ๋ช‡ ๊ฐœ ๊ตฌ์šธ๊นŒ"๋ฅผ ์ œ์•ˆํ•˜๋Š” ์šด์˜ ๋น„์„œ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋‚˜, ๋ฐ์ดํ„ฐ ์—†๋Š” AI ๋„์ž…์€ ํ•˜์ง€ ์•Š๋Š”๋‹ค(์ˆœ์„œ: ๊ฑฐ๋ž˜ โ†’ ๋ฐ์ดํ„ฐ โ†’ ์ž๋™ํ™”). | +| **5. ์‚ฌ์šฉ์ž** | 1์ฐจ ์‚ฌ์šฉ์ž๋Š” ์„œ์šธ ๋ง์›, ์—ฐ๋‚จ์˜ ์ค‘์œ„๊ถŒ ์ธ๊ธฐ ๋นต์ง‘. ์ธ์Šคํƒ€์— ํ’ˆ์ ˆ ๊ณต์ง€๋Š” ์˜ฌ๋ฆฌ์ง€๋งŒ ์˜ˆ์•ฝ, ์›จ์ดํŒ… ์•ฑ์€ ์“ฐ์ง€ ์•Š๋Š” ๊ณณ. ์ ‘์ด‰ ๋Œ€์ƒ 30๊ณณ ๋ฆฌ์ŠคํŠธ์—…. 2์ฐจ๋Š” ๊ทธ ๊ฐ€๊ฒŒ๋ฅผ ๋”ฐ๋ผ๋‹ค๋‹ˆ๋Š” ๋นต์ง€์ˆœ๋ก€ํ˜• ์†Œ๋น„์ž. (๊ฐ€์„ค) ์ „๊ตญ์—์„œ ํ’ˆ์ ˆ์ด ๋ฐœ์ƒํ•˜๋Š” ์ธ๊ธฐ ๋กœ์ปฌ ๋นต์ง‘ ์•ฝ 900๊ณณ. ์ „์ฒด 1.85๋งŒ ๊ณณ์˜ 5% ์ถ”์‚ฐ. | +| **6. ๋Œ€์•ˆ, ๊ฒฝ์Ÿ** | ๋Ÿญํ‚ค๋ฐ€(๋งˆ๊ฐ, ๋žœ๋ค๋ฐ•์Šค, ํ• ์ธ), ์บ์น˜ํ…Œ์ด๋ธ”, ํ…Œ์ด๋ธ”๋ง(๋„์ฐฉํ•œ ์†๋‹˜์˜ ์ค„ ๊ด€๋ฆฌ), ํ•ดํ”ผ์˜ค๋”(ํ”„๋žœ์ฐจ์ด์ฆˆ ์ž์ฒด ์•ฑ), ์ธ์Šคํƒ€ DM(ํ˜„์žฌ ๊ด€ํ–‰). ์ฐจ๋ณ„์  ํ•œ ๋ฌธ์žฅ: **"๋Ÿญํ‚ค๋ฐ€์ด ๋งˆ๊ฐ์˜ ๋žœ๋ค์„ ํŒ๋‹ค๋ฉด, ๋นตํ‚ต์€ ์˜คํ”ˆ์˜ ์ง€๋ช…์„ ํŒ๋‹ค"**. ์•„์นจ, ์ง€๋ช…, ์ •๊ฐ€. ์›จ์ดํŒ…์ด ์ค„์„ ๊ด€๋ฆฌํ•œ๋‹ค๋ฉด ๋นตํ‚ต์€ ๋„์ฐฉํ•˜๊ธฐ ์ „์— ํ™•๋ณดํ•œ๋‹ค. | +| **7. ์ œํ’ˆ** | ํ•ต์‹ฌ ๊ธฐ๋Šฅ. โ‘  ์‚ฌ์žฅ์˜ ์•„์นจ ์ž…๋ ฅ์„ ์˜ˆ์•ฝ ํŽ˜์ด์ง€๋กœ ๋ณ€ํ™˜ โ‘ก ์†๋‹˜์˜ ์‹œ๊ฐ„๋Œ€ ์„ ํƒ, **์„ ๊ฒฐ์ œ ํ‚ต** โ‘ข ํ’ˆ์ ˆ/๋งˆ๊ฐ ์›ํ„ฐ์น˜. **6์ฃผ MVP๋Š” 2๋‹จ๊ณ„**: (1๋‹จ๊ณ„) ๋‚ด๊ฐ€ ์ฝ˜์‹œ์–ด์ง€ ์šด์˜์— ์“ธ ๋„๊ตฌ. ์นดํ†ก์œผ๋กœ ๋ฐ›์€ ํ•œ ์ค„์„ ์˜ˆ์•ฝ ํŽ˜์ด์ง€๋กœ ๋งŒ๋“ค๊ณ  ๋“ค์–ด์˜จ ์˜ˆ์•ฝ์„ ๊ฐ€๊ฒŒ๋ณ„๋กœ ์ง‘๊ณ„ (2๋‹จ๊ณ„) ์†๋‹˜์šฉ ์˜ˆ์•ฝ+๊ฒฐ์ œ ํŽ˜์ด์ง€. **๊ฒฐ์ œ๋Š” ์ƒŒ๋“œ๋ฐ•์Šค/ํ…Œ์ŠคํŠธ ์—ฐ๋™**์œผ๋กœ ๊ฒฐ์ œ์ฐฝ ํ˜ธ์ถœโ†’์ฝœ๋ฐฑโ†’์„ฑ๊ณต, ์‹คํŒจ ๋ถ„๊ธฐ๊นŒ์ง€ ํ๋ฆ„์„ ๋ถ™์—ฌ ํ•™์Šตํ•˜๋˜, ์‹ค ์ •์‚ฐ ๊ตฌ์กฐ๋Š” ์‚ฌ์—…๊ณ„ํš์„œ๋Œ€๋กœ ์†๋‹˜โ†’๊ฐ€๊ฒŒ ๊ณ„์ขŒ ์ง์ ‘ ์ž…๊ธˆ์„ ์œ ์ง€ํ•œ๋‹ค(๋นตํ‚ต์€ ๋ˆ์„ ๋งŒ์ง€์ง€ ์•Š์Œ). **๋ฒ”์œ„ ๋ฐ–**: ์‹ค์‹œ๊ฐ„ ์žฌ๊ณ , ์‹ค PG ๊ณ„์•ฝ, ์ •์‚ฐ, ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ, ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ. | +| **8. ์ง€์† ๋ฐฉ๋ฒ•** | ํ• ์ธ ์—†์ด 'ํ™•๋ณด์˜ ๊ฐ’'์„ ๋ฐ›๋˜, ๊ฐ ๊ณผ๊ธˆ์€ ์•ž ๋‹จ๊ณ„ ์ง€ํ‘œ๊ฐ€ ์ฆ๋ช…๋œ ๋’ค์—๋งŒ ์ผ ๋‹ค. Phase 0 ์ˆ˜์ˆ˜๋ฃŒ 0์›(์ด ์‹œ๊ธฐ์˜ ์ˆ˜์ต์€ ๊ฑฐ๋ž˜ ๋ฐ์ดํ„ฐ์™€ ์‚ฌ์žฅ ์‹ ๋ขฐ) โ†’ Phase 1 ์†Œ๋น„์ž ํ‚ต ์ˆ˜์ˆ˜๋ฃŒ ๊ฑด๋‹น 500์› โ†’ Phase 2 ๊ฐ€๊ฒŒ ๊ฑฐ๋ž˜ ์ˆ˜์ˆ˜๋ฃŒ 5%(๋ฐฐ๋‹ฌ์•ฑ์˜ ์ ˆ๋ฐ˜) โ†’ Phase 3 ๊ตฌ๋…, ์ˆ˜์š”์˜ˆ์ธก ๋ฐ์ดํ„ฐ. (๊ฐ€์„ค) ๋ชจ๋“  ์ˆ˜์น˜๋Š” ๊ฐ€์ • ๊ธฐ๋ฐ˜ ์ถ”์‚ฐ์ด๋ฉฐ, ํ‚ต ์ „ํ™˜์œจ 5% ๋ฏธ๋งŒ์ด๋ฉด '์˜ค๋Š˜์˜ ๋นต ์•Œ๋ฆผ'์œผ๋กœ ํ”ผ๋ฒ—. | +| **9. ๋‚˜(ํŒ€)** | ํƒ€๊นƒ ๋‹น์‚ฌ์ž. ๋นต์ผ€ํŒ…์„ ์ง์ ‘ ๊ฒช๋Š” ํ—ค๋น„์œ ์ €๋ผ ๋ฌธ์ œ๋ฅผ ๋ชธ์œผ๋กœ ์•ˆ๋‹ค. ์บ ํผ์Šค ์ƒ๊ถŒ ํ”Œ๋žซํผ PM์œผ๋กœ ์†Œ์ƒ๊ณต์ธ, ์†Œ๋น„์ž ์–‘๋ฉด ์‹œ์žฅ์„ ์„ค๊ณ„ํ•ด๋ดค๋‹ค. 22๊ฐœ ์ถœ์ฒ˜ ๊ต์ฐจ๊ฒ€์ฆ ์กฐ์‚ฌ์™€ ๋ฐ˜์ฆ ๊ฐ€์„ค ์ค‘์‹ฌ ๊ฒ€์ฆ ์„ค๊ณ„๋ฅผ ์ง์ ‘ ์ˆ˜ํ–‰. ์•„์ด๋””์–ด์— ์ทจํ•˜์ง€ ์•Š๊ณ  ์ฃฝ์—ฌ๋ณด๋Š” ํ›ˆ๋ จ์ด ๋ผ ์žˆ๋‹ค. ๋ถ€์กฑํ•œ ๊ฑด ๊ฐœ๋ฐœ ๊ฒฝํ—˜์ด๊ณ , ์ด 6์ฃผ๊ฐ€ ๊ทธ ๋ณด์™„ ๊ณผ์ •์ด๋‹ค. | +| **10. 6์ฃผ ๊ณ„ํš** | **3์ฃผ์ฐจ** ๋ฐ์ดํ„ฐ ๋ชจ๋ธ, ํ™”๋ฉด ์„ค๊ณ„ + ์‚ฌ์žฅ ์ž…๋ ฅ โ†’ ์˜ˆ์•ฝ ํŽ˜์ด์ง€ ์ƒ์„ฑ ํ๋ฆ„ 1๊ฐœ ์™„์„ฑ(๊ฐ€์ƒ ๋นต์ง‘ 1๊ณณ), **4์ฃผ์ฐจ** ์˜ˆ์•ฝ ์ ‘์ˆ˜, ์ง‘๊ณ„ ๋ถ™์—ฌ์„œ ์ฝ˜์‹œ์–ด์ง€ ๋„๊ตฌ ํ•œ ๋ฐ”ํ€ด ๋Œ๋ฆฌ๊ธฐ, **5์ฃผ์ฐจ** ์†๋‹˜์šฉ ์˜ˆ์•ฝ ํŽ˜์ด์ง€(์‹œ๊ฐ„๋Œ€ ์„ ํƒ โ†’ ์˜ˆ์•ฝ ํ™•์ •) + **๊ฒฐ์ œ ์ƒŒ๋“œ๋ฐ•์Šค ์—ฐ๋™**(๊ฒฐ์ œ์ฐฝ โ†’ ์ฝœ๋ฐฑ โ†’ ์„ฑ๊ณต, ์‹คํŒจ ๋ถ„๊ธฐ), **6์ฃผ์ฐจ** ๋ฐฐํฌ + ๊ฐ€์ƒ ๋ฐ์ดํ„ฐ ์‹œ๋‚˜๋ฆฌ์˜ค ํ…Œ์ŠคํŠธ + ๋ฐœํ‘œ | diff --git a/members/yenachang924/project.md b/members/yenachang924/project.md new file mode 100644 index 0000000..25a9090 --- /dev/null +++ b/members/yenachang924/project.md @@ -0,0 +1,22 @@ +# ๋นตํ‚ต (BbangKeep) + +๋™๋„ค ๋นต์ง‘์˜ ์˜ค๋Š˜ ๊ตฝ๋Š” ์–‘์„ ์„ ๊ฒฐ์ œ ํ”ฝ์—… ์˜ˆ์•ฝ์œผ๋กœ ๋ฐ”๊พธ๋Š” ์„œ๋น„์Šค. +์‚ฌ์žฅ๋‹˜์€ ์•„์นจ์— ํ•œ ์ค„("๋‚ด์ผ ์†Œ๊ธˆ๋นต 11์‹œ 40๊ฐœ, ์•™๋ฒ„ํ„ฐ ์‰ฌ์–ด๊ฐ")์„ ์ ๊ณ , ์†๋‹˜์€ ์‹œ๊ฐ„๋Œ€๋ฅผ ๊ณจ๋ผ ์ •๊ฐ€๋กœ ๋ฏธ๋ฆฌ ๊ฒฐ์ œํ•˜๊ณ  ์ค„ ์—†์ด ํ”ฝ์—…ํ•ฉ๋‹ˆ๋‹ค. + +- ์„œ๋น„์Šค: https://bbangkeep.vercel.app (๋ฐ๋ชจ ๊ณ„์ • `owner@salt.com`, `test@test.com`, ๋น„๋ฐ€๋ฒˆํ˜ธ `Test1234!`) +- ๋ ˆํฌ: https://github.com/yenachang924/bbangkeep +- ์Šคํƒ: Next.js 16, Prisma 6, Postgres(Render), Vercel. Spring Boot(Kotlin)๋กœ ๊ฒฐ์ œ์™€ ์žฌ๊ณ ๋ฅผ ์ด์‹ํ•˜๋Š” ์ค‘ + +## ๋งŒ๋“  ๊ฒƒ + +- ์‚ฌ์žฅ๋‹˜ AI ๋น„์„œ: ํ•œ ์ค„ ๋ฌธ์žฅ์„ ์ดˆ์•ˆ ์นด๋“œ๋กœ ๋ฐ”๊พธ๊ณ , ์‚ฌ์žฅ๋‹˜์ด ์Šน์ธํ•ด์•ผ ๋ฐœํ–‰. LLM์€ ๊ฒŒ์ดํŠธ์›จ์ด ๋’ค(๊ธฐ๋ณธ์€ ๋ฃฐ ํŒŒ์„œ, ํ‚ค๊ฐ€ ์žˆ์œผ๋ฉด OpenAI) +- ์žฌ๊ณ ์™€ ๊ฒฐ์ œ: ์กฐ๊ฑด๋ถ€ ์›์ž UPDATE๋กœ ์žฌ๊ณ  ์ฐจ๊ฐ, ๊ธˆ์•ก์€ ์„œ๋ฒ„๊ฐ€ ์ •ํ•จ, ์Šน์ธ์€ ๋ฉฑ๋“ฑ, PG๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋’ค(๋ชจ์˜ PG๋กœ ์‹œ์—ฐ) +- ์šด์˜: CI(ํ…Œ์ŠคํŠธ, ๋นŒ๋“œ, ๋ธŒ๋ผ์šฐ์ € E2E, API ๊ณ„์•ฝ), keepalive, ์ฃผ๊ฐ„ ๋ฐฑ์—…, ํ”ฝ์—… ๋ฆฌ๋งˆ์ธ๋” +- ๋ฌธ์„œ: ADR 11๊ฑด, ์ธก์ • ๊ฒฐ๊ณผ(proof), ์ธ์ˆ˜์ธ๊ณ„(HANDOFF), OpenAPI ๊ณ„์•ฝ + +## Claude Code๋ฅผ ์–ด๋–ป๊ฒŒ ์ผ๋‚˜ + +- ๊ทœ์•ฝ์€ AGENTS.md์—, ๊ฒฐ์ •์€ ADR์—, ์ˆซ์ž๋Š” proof์—. ์—์ด์ „ํŠธ๊ฐ€ ์ฝ๊ณ  ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์žฅ์œผ๋กœ +- ๋งˆ์ง€๋ง‰ ์ฃผ๋Š” HANDOFF ํ•œ ์žฅ๊ณผ ํ”„๋กฌํ”„ํŠธ๋กœ ์ƒˆ ์„ธ์…˜์„ ์‹œ์ž‘ํ•ด PR ๋‹จ์œ„๋กœ ๋ฐ›๊ณ , ๋‚ด๊ฐ€ ์ฝ๊ณ  ๋จธ์ง€ +- ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ, ์šด์˜ DB, ์‹œํฌ๋ฆฟ์€ ์Šน์ธ ์—†์ด๋Š” ๋ชป ๊ฑด๋“œ๋ฆฌ๊ฒŒ ๊ธˆ์ง€ ๋ชฉ๋ก์„ ๋จผ์ € ์คŒ +- MCP ์„œ๋ฒ„๋กœ Claude๊ฐ€ ์‚ฌ์žฅ๋‹˜ ๋น„์„œ ๋„๊ตฌ(์‹œ๊ฐ„ํ‘œ ์กฐํšŒ, ์ดˆ์•ˆ, ๋ฐœํ–‰)๋ฅผ ์“ฐ๊ฒŒ ํ•จ diff --git a/members/yenachang924/retrospective.md b/members/yenachang924/retrospective.md new file mode 100644 index 0000000..c8882dd --- /dev/null +++ b/members/yenachang924/retrospective.md @@ -0,0 +1,26 @@ +# ๋นตํ‚ต 6์ฃผ ํšŒ๊ณ  + +## ๋ฌด์—‡์„ ๋งŒ๋“ค์—ˆ๋‚˜ +๋™๋„ค ๋นต์ง‘์˜ ์˜ค๋Š˜ ๊ตฝ๋Š” ์–‘์„ ์˜ˆ์•ฝ์œผ๋กœ ๋ฐ”๊พธ๋Š” ์„ ๊ฒฐ์ œ ํ”ฝ์—… ์„œ๋น„์Šค. ์‚ฌ์žฅ๋‹˜์€ ์•„์นจ ํ•œ ์ค„, ์†๋‹˜์€ ์‹œ๊ฐ„๋Œ€ ์„ ํƒ๊ณผ ๊ฒฐ์ œ. +https://bbangkeep.vercel.app / https://github.com/yenachang924/bbangkeep + +## ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐ”๋€ ๊ฒƒ +1. 1์ฃผ: ๋‚ด ์ฝ”๋“œ๋ฅผ Claude์—๊ฒŒ ์ฑ„์ ์‹œ์ผฐ๋‹ค. ๋ฐœ๊ฒฌ์€ Claude, ๊ฒฐ์ •์€ ๋‚˜. +2. 2์ฃผ: ๊ทœ์น™์€ ์ปค๋ฐ‹๋˜์–ด์•ผ ์กด์žฌํ•œ๋‹ค. ๋ฌธ์„œ๋Š” ํ•ด์„๋˜์ง€๋งŒ ํ›…์€ ์‹คํ–‰๋œ๋‹ค. +3. 4์ฃผ: ๋งจ๋•… ๋Œ€์‹  ๋น„์Šทํ•œ ์„œ๋น„์Šค๋ฅผ ๋จผ์ € ์ฝ์—ˆ๋‹ค. ๊ฐ€์ ธ์˜ฌ ๊ฒƒ, ๋ฒ„๋ฆด ๊ฒƒ, ๋‹ฌ๋ผ์•ผ ํ•  ๊ฒƒ์„ ์ ๊ณ  ์„ค๊ณ„. +4. ๋งค์ฃผ: ๊ฒฐ์ •์€ ADR, ์ˆ˜์น˜๋Š” proof. ๋ง‰ํžŒ ๊ณณ๋„ "์•Œ๋ ค์ง„ ๊ตฌ๋ฉ"์œผ๋กœ ์ ์–ด๋‘๊ณ  ๋„˜์–ด๊ฐ”๋‹ค. +5. 6์ฃผ: HANDOFF ํ•œ ์žฅ์œผ๋กœ ์ƒˆ ์„ธ์…˜์ด ๊ธฐ๋Šฅ์„ ์ด์–ด ๋งŒ๋“ค์—ˆ๋‹ค. ๋‚ด ์—ญํ• ์€ ๋ฌด์—‡, ์™œ, ์–ด๋””๊นŒ์ง€. + +## ๋ฐฐ์šด ๊ฒƒ +- ์ œ์•ฝ์ด ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. PG๊ฐ€ ์—†์–ด์„œ PaymentGateway, ํ‚ค๊ฐ€ ์—†์–ด์„œ LlmGateway, ์ฑ„๋„์ด ์—†์–ด์„œ NotificationGateway. ๊ฐ™์€ ๋ชจ์–‘์„ ์„ธ ๋ฒˆ ์“ฐ๋‹ˆ ๋‚ด ๊ฒƒ์ด ๋๋‹ค. +- AI๋Š” ๋ฐœํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ดˆ์•ˆ์„ ์“ฐ๊ณ  ์‚ฌ๋žŒ์ด ์Šน์ธํ•œ๋‹ค. ๊ฒฐ์ œ์—์„œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ฏฟ์ง€ ์•Š๋Š” ํƒœ๋„๋ฅผ LLM์—๋„ ๋˜‘๊ฐ™์ด ์ ์šฉํ–ˆ๋‹ค. +- ์—์ด์ „ํŠธ์—๊ฒŒ "ํ•˜์ง€ ๋ง ๊ฒƒ"์„ ๋จผ์ € ์ฃผ๋ฉด ๋‚˜๋จธ์ง€๋Š” ๋นจ๋ผ๋„ ์•ˆ์ „ํ•˜๋‹ค. +- ์ธก์ •ํ•˜๋ฉด ๋ณด์ธ๋‹ค. ๋А๋ฆฌ๋‹ค๊ณ  ๋А๋‚€ ๊ฒƒ์ด ์ฝœ๋“œ์Šคํƒ€ํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฆฌ์ „ ๊ฑฐ๋ฆฌ์˜€๋‹ค. + +## ์•„์‰ฌ์šด ๊ฒƒ +- ์‚ฌ์šฉ์ž๊ฐ€ ์•„์ง ์—†๋‹ค. ์ฝ”๋“œ๋ณด๋‹ค ๋…ธ์ถœ์ด ๋Šฆ์—ˆ๋‹ค. +- ์‹ค๊ฒฐ์ œ์™€ ์•Œ๋ฆผํ†ก์€ ํ‚ค์™€ ์‚ฌ์—…์ž๋“ฑ๋ก ๋’ค์— ์žˆ๋‹ค. +- ๋น ๋ฅด๊ฒŒ ๋“ค์–ด์˜จ ์ฝ”๋“œ๋ฅผ ๋‹ค ์ฝ์ง€ ๋ชปํ•œ ๊ตฌ๊ฐ„์ด ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ Spring์˜ approve, cancel์€ ๋‚ด ์†์œผ๋กœ ๋‚จ๊ฒจ๋’€๋‹ค. + +## ๋‹ค์Œ +์จ ์ค„ ๊ฐ€๊ฒŒ ํ•œ ๊ณณ ์ฐพ๊ธฐ. Spring approve, cancel ์ง์ ‘ ๊ตฌํ˜„ํ•ด์„œ ๊ฐ™์€ ๊ณ„์•ฝ ํ…Œ์ŠคํŠธ ํ†ต๊ณผ์‹œํ‚ค๊ธฐ. diff --git a/members/yenachang924/week01.md b/members/yenachang924/week01.md index e445b8c..0db85de 100644 --- a/members/yenachang924/week01.md +++ b/members/yenachang924/week01.md @@ -15,11 +15,11 @@ git๋„ ์„œํˆด๊ณ  Claude Code๋„ ํ„ฐ๋ฏธ๋„์— ๊น ์ง€ ์–ผ๋งˆ ์•ˆ ๋œ ์ƒํƒœ๋ผ, ## 1. ํ™˜๊ฒฝ ์„ธํŒ… ์ฒดํฌ๋ฆฌ์ŠคํŠธ -- [x] ์„ค์น˜ & ๋กœ๊ทธ์ธ โ€” `claude --version` โ†’ 2.1.215 ํ™•์ธ -- [x] VS Code ์—ฐ๋™ โ€” ํ™•์žฅ ์„ค์น˜, ํ„ฐ๋ฏธ๋„์„ ํ”„๋กœ์ ํŠธ ํด๋”์—์„œ ์—ฌ๋Š” ๊ฒƒ๋ถ€ํ„ฐ ๋ฐฐ์›€ -- [x] `CLAUDE.md` ์ƒ์„ฑ โ€” `/init` ์‹คํ–‰ (โ†’ ์•„๋ž˜ 6๋ฒˆ) -- [x] ์ฒซ ๋Œ€ํ™” & ์ฒซ ์ˆ˜์ • โ€” ํ”„๋กœ์ ํŠธ ์„ค๋ช… ๋ฐ›๊ณ  diff ์ˆ˜๋ฝ๊นŒ์ง€ (โ†’ ์•„๋ž˜ 3ยท5๋ฒˆ) -- [x] git ์ปค๋ฐ‹ ์œ„์ž„ โ€” ์ปค๋ฐ‹ยทpushยทPR ๋ธŒ๋žœ์น˜ ์ค€๋น„๊นŒ์ง€ ๋งก๊ฒจ๋ด„ (โ†’ ์•„๋ž˜ 5ยท7๋ฒˆ) +- [x] ์„ค์น˜ & ๋กœ๊ทธ์ธ. `claude --version` โ†’ 2.1.215 ํ™•์ธ +- [x] VS Code ์—ฐ๋™. ํ™•์žฅ ์„ค์น˜, ํ„ฐ๋ฏธ๋„์„ ํ”„๋กœ์ ํŠธ ํด๋”์—์„œ ์—ฌ๋Š” ๊ฒƒ๋ถ€ํ„ฐ ๋ฐฐ์›€ +- [x] `CLAUDE.md` ์ƒ์„ฑ. `/init` ์‹คํ–‰ (โ†’ ์•„๋ž˜ 6๋ฒˆ) +- [x] ์ฒซ ๋Œ€ํ™” & ์ฒซ ์ˆ˜์ •. ํ”„๋กœ์ ํŠธ ์„ค๋ช… ๋ฐ›๊ณ  diff ์ˆ˜๋ฝ๊นŒ์ง€ (โ†’ ์•„๋ž˜ 3, 5๋ฒˆ) +- [x] git ์ปค๋ฐ‹ ์œ„์ž„. ์ปค๋ฐ‹, push, PR ๋ธŒ๋žœ์น˜ ์ค€๋น„๊นŒ์ง€ ๋งก๊ฒจ๋ด„ (โ†’ ์•„๋ž˜ 5, 7๋ฒˆ) ## 2. ๊ณต์‹ ๋ฌธ์„œ ์ฝ๊ธฐ @@ -65,7 +65,7 @@ git log --oneline -- index.html โ†’ ์ปค๋ฐ‹ ๋‹ค์ˆ˜ ์ปค๋ฐ‹์„ ๋งก๊ฒผ๋”๋‹ˆ ์˜ˆ์ƒ ๋ฐ–์˜ ์žฅ๋ฉด์ด ์ด์–ด์กŒ๋‹ค. - ์ปค๋ฐ‹ ์ „์— ์Šคํ…Œ์ด์ง• ์ƒํƒœ๋ถ€ํ„ฐ ํ™•์ธํ•˜๊ณ , **๋”ฑ ๊ทธ ํ•œ ์ค„๋งŒ** ์ปค๋ฐ‹ํ–ˆ๋‹ค -- git identity๊ฐ€ ์„ค์ • ์•ˆ ๋œ ๊ฑธ ๋ฐœ๊ฒฌํ•˜์ž, ๊ธฐ์กด ์ปค๋ฐ‹์˜ author๋ฅผ ์กฐํšŒํ•ด **๊ฐ™์€ ์ฃผ์†Œ๋กœ, ์ด ์ €์žฅ์†Œ์—๋งŒ**(`git config --local`) ์„ค์ •ํ–ˆ๋‹ค โ€” ์ „์—ญ ์„ค์ •์€ ์•ˆ ๊ฑด๋“œ๋ ธ๋‹ค +- git identity๊ฐ€ ์„ค์ • ์•ˆ ๋œ ๊ฑธ ๋ฐœ๊ฒฌํ•˜์ž, ๊ธฐ์กด ์ปค๋ฐ‹์˜ author๋ฅผ ์กฐํšŒํ•ด **๊ฐ™์€ ์ฃผ์†Œ๋กœ, ์ด ์ €์žฅ์†Œ์—๋งŒ**(`git config --local`) ์„ค์ •ํ–ˆ๋‹ค. ์ „์—ญ ์„ค์ •์€ ์•ˆ ๊ฑด๋“œ๋ ธ๋‹ค - ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์— ๋ฌธ์ž๋ฅผ ์ž˜๋ชป ์„ž์€ ๊ฑธ(`@` ํ˜ผ์ž…) **์Šค์Šค๋กœ ๋ฐœ๊ฒฌํ•˜๊ณ **, "์•„์ง push ์ „์ด๋ผ ์•ˆ์ „ํ•˜๋‹ค"๋Š” ํŒ๋‹จ๊ณผ ํ•จ๊ป˜ `--amend`๋กœ ๊ณ ์ณค๋‹ค - push๋Š” ์ž๊ธฐ ํŒ๋‹จ์œผ๋กœ ํ•˜์ง€ ์•Š๊ณ  "์›๊ฒฉ ๋ฐ˜์˜์ด ํ•„์š”ํ•˜๋ฉด ๋ง์”€ํ•ด ์ฃผ์„ธ์š”"์—์„œ ๋ฉˆ์ท„๋‹ค @@ -78,9 +78,9 @@ Claude๋„ ์‹ค์ˆ˜๋ฅผ ํ•œ๋‹ค. ๋‹ค๋งŒ ์‹ค์ˆ˜๋ฅผ ์Šค์Šค๋กœ ๊ฐ์ง€ํ–ˆ๊ณ , ๊ณ ์ณ๋„ `/init`์„ ๋Œ๋ฆฌ์ž CLAUDE.md ์ž‘์—…์„ **worktree๋กœ ๊ฒฉ๋ฆฌ**ํ•ด์„œ ์ง„ํ–‰ํ–ˆ๋‹ค(๋‚ด ์ž‘์—… ํด๋”๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ๋”ด ๋ฐฉ์—์„œ ์ž‘์—…). ๊ฒฐ๊ณผ๋ฌผ์—์„œ ๋ˆˆ์— ๋ˆ ๊ฒƒ ์„ธ ๊ฐ€์ง€. -1. **๋ฒ„๊ทธ '์‚ฌ๋ก€'๊ฐ€ ์•„๋‹ˆ๋ผ '์œ ํ˜•'์„ ๋ฌธ์„œํ™”ํ–ˆ๋‹ค.** ์ž‘์—… ๋ธŒ๋žœ์น˜ ๊ธฐ์ค€์—๋Š” GET / ๋ฒ„๊ทธ๊ฐ€ ์•„์ง ๋‚จ์•„ ์žˆ์—ˆ๋Š”๋ฐ, ๊ทธ๊ฑธ ์•Œ์•„์ฑ„๊ณ  `GET /` ์„ค๋ช…์„ ํŠน์ • ํŒŒ์ผ๋ช…์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ์„œ์ˆ ๋กœ ๊ณ ์ณ ์ผ๋‹ค โ€” "ํ•˜๋“œ์ฝ”๋”ฉ๋œ ํŒŒ์ผ๋ช…์ด ์‹ค์ œ ์ปค๋ฐ‹๋œ ํŽ˜์ด์ง€์™€ ๋‹ค๋ฅด๋ฉด ๋ฃจํŠธ๋งŒ ์กฐ์šฉํžˆ ์ฃฝ๊ณ  API๋Š” ๋‹ค ์‚ด์•„ ์žˆ์–ด์„œ ๋†“์น˜๊ธฐ ์‰ฝ๋‹ค"๋Š” ์‹์œผ๋กœ. +1. **๋ฒ„๊ทธ '์‚ฌ๋ก€'๊ฐ€ ์•„๋‹ˆ๋ผ '์œ ํ˜•'์„ ๋ฌธ์„œํ™”ํ–ˆ๋‹ค.** ์ž‘์—… ๋ธŒ๋žœ์น˜ ๊ธฐ์ค€์—๋Š” GET / ๋ฒ„๊ทธ๊ฐ€ ์•„์ง ๋‚จ์•„ ์žˆ์—ˆ๋Š”๋ฐ, ๊ทธ๊ฑธ ์•Œ์•„์ฑ„๊ณ  `GET /` ์„ค๋ช…์„ ํŠน์ • ํŒŒ์ผ๋ช…์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ์„œ์ˆ ๋กœ ๊ณ ์ณ ์ผ๋‹ค. "ํ•˜๋“œ์ฝ”๋”ฉ๋œ ํŒŒ์ผ๋ช…์ด ์‹ค์ œ ์ปค๋ฐ‹๋œ ํŽ˜์ด์ง€์™€ ๋‹ค๋ฅด๋ฉด ๋ฃจํŠธ๋งŒ ์กฐ์šฉํžˆ ์ฃฝ๊ณ  API๋Š” ๋‹ค ์‚ด์•„ ์žˆ์–ด์„œ ๋†“์น˜๊ธฐ ์‰ฝ๋‹ค"๋Š” ์‹์œผ๋กœ. 2. **์ฃผ์žฅ์„ ์ฝ”๋“œ ๋ผ์ธ๊ณผ ๋Œ€์กฐํ–ˆ๋‹ค๊ณ  ๋ช…์‹œํ–ˆ๋‹ค.** GREATEST ๋ณ‘ํ•ฉ, 5ํด๋ฆญ ๋™๊ธฐํ™”, ์ปค๋„ฅ์…˜ ํ’€ ์„ค์ • ๊ฐ™์€ ๊ธฐ์ˆ  ์„œ์ˆ  ์ „๋ถ€๋ฅผ ์‹ค์ œ ์ฝ”๋“œ์™€ ๋Œ€์กฐ ๊ฒ€์ฆํ–ˆ๋‹ค๊ณ  ๋ฐํ˜”๋‹ค. -3. **๋‚ด๊ฐ€ ๋ชจ๋ฅด๋˜ ์œ„ํ—˜์„ ๋ฌธ์„œ์— ๋‚จ๊ฒผ๋‹ค** โ€” "`index.html`์„ ๋กœ์ปฌ์—์„œ ์—ด์–ด๋„ ํ”„๋กœ๋•์…˜ DB๋ฅผ ์ฝ๊ณ  ์“ด๋‹ค. ์“ฐ๊ธฐ ํ…Œ์ŠคํŠธ ์ „์— API ์ฃผ์†Œ๋ฅผ localhost๋กœ ๋ฐ”๊ฟ”๋ผ." +3. **๋‚ด๊ฐ€ ๋ชจ๋ฅด๋˜ ์œ„ํ—˜์„ ๋ฌธ์„œ์— ๋‚จ๊ฒผ๋‹ค**. "`index.html`์„ ๋กœ์ปฌ์—์„œ ์—ด์–ด๋„ ํ”„๋กœ๋•์…˜ DB๋ฅผ ์ฝ๊ณ  ์“ด๋‹ค. ์“ฐ๊ธฐ ํ…Œ์ŠคํŠธ ์ „์— API ์ฃผ์†Œ๋ฅผ localhost๋กœ ๋ฐ”๊ฟ”๋ผ." ์ฒซ ๋Œ€ํ™” ์š”์•ฝ์ด "์ง€๊ธˆ ์ด ๋ ˆํฌ์˜ ์ƒํƒœ์™€ ๋ฌธ์ œ"๋ฅผ ๋งํ•œ๋‹ค๋ฉด, CLAUDE.md๋Š” "๋‹ค์Œ ์„ธ์…˜์˜ Claude๊ฐ€ ํ—›์งš์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ์ง€๋„"์— ๊ฐ€๊นŒ์› ๋‹ค. ๊ฐ™์€ ๋ ˆํฌ๋ฅผ ์ฝ๊ณ ๋„ ์‚ฐ์ถœ๋ฌผ์˜ ๋ชฉ์ ์ด ๋‹ฌ๋ž๋‹ค. @@ -110,5 +110,5 @@ Claude๋„ ์‹ค์ˆ˜๋ฅผ ํ•œ๋‹ค. ๋‹ค๋งŒ ์‹ค์ˆ˜๋ฅผ ์Šค์Šค๋กœ ๊ฐ์ง€ํ–ˆ๊ณ , ๊ณ ์ณ๋„ - [ ] `.DS_Store` ์ œ๊ฑฐ + `.gitignore` ์ถ”๊ฐ€ ์ปค๋ฐ‹ - [ ] GitHub About์˜ "SQLite"๋ฅผ ์‹ค์ œ(PostgreSQL)์— ๋งž๊ฒŒ ์ˆ˜์ • -- [ ] ๋ณด์•ˆ ๊ตฌ๋ฉ(`/dashboard` ๋ฌด์ธ์ฆ)์€ 2์ฃผ์ฐจ์— ๊ถŒํ•œยทํ›…์„ ๋ฐฐ์šฐ๋ฉด์„œ ์ฒ˜๋ฆฌ ์˜ˆ์ • -- [ ] ๊ฐ€์„ค ์‹คํ—˜: "๋ฐฐํฌ ์˜๋„๋ฅผ CLAUDE.md์— ์ ์–ด๋‘๋ฉด Claude์˜ ์ˆ˜์ • ์ œ์•ˆ์ด ๋‹ฌ๋ผ์งˆ๊นŒ" โ€” A/B๋กœ ํ™•์ธํ•ด๋ณด๊ณ  ์‹ถ๋‹ค +- [ ] ๋ณด์•ˆ ๊ตฌ๋ฉ(`/dashboard` ๋ฌด์ธ์ฆ)์€ 2์ฃผ์ฐจ์— ๊ถŒํ•œ, ํ›…์„ ๋ฐฐ์šฐ๋ฉด์„œ ์ฒ˜๋ฆฌ ์˜ˆ์ • +- [ ] ๊ฐ€์„ค ์‹คํ—˜: "๋ฐฐํฌ ์˜๋„๋ฅผ CLAUDE.md์— ์ ์–ด๋‘๋ฉด Claude์˜ ์ˆ˜์ • ์ œ์•ˆ์ด ๋‹ฌ๋ผ์งˆ๊นŒ". A/B๋กœ ํ™•์ธํ•ด๋ณด๊ณ  ์‹ถ๋‹ค diff --git a/members/yenachang924/week02.md b/members/yenachang924/week02.md index bdac375..2fee29a 100644 --- a/members/yenachang924/week02.md +++ b/members/yenachang924/week02.md @@ -7,17 +7,17 @@ ## 1. ์›Œํฌํ”Œ๋กœ์šฐ 1๋ฐ”ํ€ด (ํ•„์ˆ˜) -**์ž‘์—…ํ•œ ๊ฒƒ (๋ฒ„๊ทธ ์ˆ˜์ • + ๋ณด์•ˆ ์ˆ˜์ •):** ํ”„๋กœ๋•์…˜ `/ranking` 500 ์žฅ์•  ๋Œ€์‘, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ณต๊ตฌ ๊ณผ์ •์— ์–น์€ ๋ถ„์„ยท์šด์˜ ์—”๋“œํฌ์ธํŠธ ์ธ์ฆ ํ•˜๋“œ๋‹(fail-closed). +**์ž‘์—…ํ•œ ๊ฒƒ (๋ฒ„๊ทธ ์ˆ˜์ • + ๋ณด์•ˆ ์ˆ˜์ •):** ํ”„๋กœ๋•์…˜ `/ranking` 500 ์žฅ์•  ๋Œ€์‘, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ณต๊ตฌ ๊ณผ์ •์— ์–น์€ ๋ถ„์„, ์šด์˜ ์—”๋“œํฌ์ธํŠธ ์ธ์ฆ ํ•˜๋“œ๋‹(fail-closed). **๊ณผ์ •: ํƒ์ƒ‰ โ†’ ๊ณ„ํš โ†’ ๊ตฌํ˜„ โ†’ ๊ฒ€์ฆ โ†’ ์ปค๋ฐ‹ โ†’ PR** -- **ํƒ์ƒ‰** โ€” ํ”„๋กœ๋•์…˜ `/ranking`์ด 500. ๊ฐ€์„ค์„ ๋‘ ๊ฐœ ์„ธ์› ๋‹ค. โ‘ Render ๋ฌด๋ฃŒ ํ‹ฐ์–ด ์ฝœ๋“œ์Šคํƒ€ํŠธ โ‘ก1์ฃผ์ฐจ์— ๋ฐœ๊ฒฌํ•ด๋‘” "๋ฌด๋ฃŒ Postgres 30์ผ ๋งŒ๋ฃŒ". ์„œ๋ฒ„๊ฐ€ ์™„์ „ํžˆ ๊ธฐ๋™ํ•œ ๋’ค์—๋„ 500์ด ์œ ์ง€๋˜์–ด โ‘ ์„ ๊ธฐ๊ฐํ–ˆ๋‹ค. ๊ฒฐ์ •์  ์ฆ๊ฑฐ๋Š” ํ”„๋กœ๋•์…˜ ๋กœ๊ทธ์˜ `failed to resolve host` โ€” Render ๋‚ด๋ถ€๋ง์—์„œ์กฐ์ฐจ ํ˜ธ์ŠคํŠธ๊ฐ€ ์‚ฌ๋ผ์กŒ๋‹ค๋Š” ๋œป์ด๋ผ DB ์ธ์Šคํ„ด์Šค ์ž์ฒด์˜ ์†Œ๋ฉธ์„ ๊ฐ€๋ฆฌ์ผฐ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋งŒ๋ฃŒ ํ™•์ • ๋ฉ”์ผ๊นŒ์ง€ ํ™•์ธํ•ด 3์ค‘์œผ๋กœ ๋‹ซ์•˜๋‹ค. +- **ํƒ์ƒ‰**. ํ”„๋กœ๋•์…˜ `/ranking`์ด 500. ๊ฐ€์„ค์„ ๋‘ ๊ฐœ ์„ธ์› ๋‹ค. โ‘ Render ๋ฌด๋ฃŒ ํ‹ฐ์–ด ์ฝœ๋“œ์Šคํƒ€ํŠธ โ‘ก1์ฃผ์ฐจ์— ๋ฐœ๊ฒฌํ•ด๋‘” "๋ฌด๋ฃŒ Postgres 30์ผ ๋งŒ๋ฃŒ". ์„œ๋ฒ„๊ฐ€ ์™„์ „ํžˆ ๊ธฐ๋™ํ•œ ๋’ค์—๋„ 500์ด ์œ ์ง€๋˜์–ด โ‘ ์„ ๊ธฐ๊ฐํ–ˆ๋‹ค. ๊ฒฐ์ •์  ์ฆ๊ฑฐ๋Š” ํ”„๋กœ๋•์…˜ ๋กœ๊ทธ์˜ `failed to resolve host`: Render ๋‚ด๋ถ€๋ง์—์„œ์กฐ์ฐจ ํ˜ธ์ŠคํŠธ๊ฐ€ ์‚ฌ๋ผ์กŒ๋‹ค๋Š” ๋œป์ด๋ผ DB ์ธ์Šคํ„ด์Šค ์ž์ฒด์˜ ์†Œ๋ฉธ์„ ๊ฐ€๋ฆฌ์ผฐ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋งŒ๋ฃŒ ํ™•์ • ๋ฉ”์ผ๊นŒ์ง€ ํ™•์ธํ•ด 3์ค‘์œผ๋กœ ๋‹ซ์•˜๋‹ค. โ†’ **1์ฃผ์ฐจ์— "์œ„ํ—˜ํ•˜๋‹ค"๊ณ  ์ ์–ด๋‘” ํ•ญ๋ชฉ์ด 2์ฃผ์ฐจ์— ์‹ค์ œ๋กœ ํ„ฐ์กŒ๋‹ค.** ๊ฒฝ๊ณ  ๋ฉ”์ผ์€ 6/11, 6/25 ๋‘ ๋ฒˆ ์™”์ง€๋งŒ ๋†“์ณค๊ณ , 14์ผ ์œ ์˜ˆ๊ธฐ๊ฐ„๋„ ์ง€๋‚˜ ์žˆ์—ˆ๋‹ค. -- **๊ณ„ํš** โ€” ๋ณต๊ตฌ ์˜ต์…˜ ์ค‘ "๋ฌด๋ฃŒ DB ๋น ๋ฅธ ์žฌ์ƒ์„ฑ"์„ ์„ ํƒํ–ˆ๋‹ค. 30์ผ ๋งŒ๋ฃŒ ๊ตฌ์กฐ๊ฐ€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋œ๋‹ค๋Š” ๊ฑธ ์•Œ๋ฉด์„œ ๋‚ด๋ฆฐ ๊ฒฐ์ •์ด๋ผ, ๋Œ€์‹  ๋งŒ๋ฃŒ ๋Œ€๋น„ ๊ทœ์น™์„ ๋ฌธ์„œ์— ๋‚จ๊ธฐ๊ธฐ๋กœ ํ–ˆ๋‹ค. ๊ฐ™์€ ์‚ฌ์ดํด์— 1์ฃผ์ฐจ์— ๋ฐœ๊ฒฌํ•ด๋‘” `/dashboard` ๋ฌด์ธ์ฆ ๊ตฌ๋ฉ๋„ ํ•จ๊ป˜ ๋ง‰๊ธฐ๋กœ ํ–ˆ๋‹ค. -- **๊ตฌํ˜„** โ€” ๋ถ„์„ยท์šด์˜ ์—”๋“œํฌ์ธํŠธ์— HTTP Basic ์ธ์ฆ. ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์—†์œผ๋ฉด ํ†ต๊ณผ๊ฐ€ ์•„๋‹ˆ๋ผ **์ฐจ๋‹จ**๋˜๋„๋ก fail-closed๋กœ ์„ค๊ณ„ํ–ˆ๋‹ค. -- **๊ฒ€์ฆ** โ€” ์ƒˆ๋กœ ๋งŒ๋“  ๋นˆ DB๋กœ ๊ณ„ํš์„œ 8๋‹จ๊ณ„๋ฅผ ์ „๋ถ€ ํ†ต๊ณผ์‹œ์ผฐ๋‹ค. ํŠนํžˆ `init_db`์˜ ๋งจ๋•… ์ƒ์„ฑ๊ณผ ๋ฉฑ๋“ฑ์„ฑ์€ **์ด์ „๊นŒ์ง€ ํ•œ ๋ฒˆ๋„ ์‹ค์ „ ๊ฒ€์ฆ๋œ ์ ์ด ์—†๋˜ ๊ฒฝ๋กœ**์˜€๋‹ค. ๊ทธ ์™ธ ์“ฐ๊ธฐ ๋‹จ์กฐ ๋ถˆ๋ณ€์‹, ์ธ์ฆ 401/200/503, ๋ธŒ๋ผ์šฐ์ € ์‹ค๋ Œ๋”๊นŒ์ง€ ํ™•์ธ. - ๋กœ์ปฌ Claude๊ฐ€ ๋„๊ตฌ ์ œ์•ฝ(Chrome์ด URL ์ž๊ฒฉ์ฆ๋ช…ยท`file://` ๊ฑฐ๋ถ€, curl ์…ธ ์ธ์šฉ ๊นจ์ง)์— ๋ถ€๋”ชํž ๋•Œ๋งˆ๋‹ค ์šฐํšŒํ•˜๋ฉด์„œ๋„ "๋ฐ”์ดํŠธ ๋™์ผ" ํ™•์ธ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ฒ€์ฆ์˜ ์˜๋ฏธ๋ฅผ ๋ณด์กดํ•œ ๊ฒŒ ์ธ์ƒ์ ์ด์—ˆ๋‹ค. -- **์ปค๋ฐ‹ โ†’ PR** โ€” ์—ฌ๊ธฐ์„œ ์‚ฌ๊ฑด์ด ํ•˜๋‚˜ ํ„ฐ์กŒ๋Š”๋ฐ, ๊ทธ๊ฑด 3๋ฒˆ ์„น์…˜์—์„œ ์ด์–ด ์“ด๋‹ค. +- **๊ณ„ํš**. ๋ณต๊ตฌ ์˜ต์…˜ ์ค‘ "๋ฌด๋ฃŒ DB ๋น ๋ฅธ ์žฌ์ƒ์„ฑ"์„ ์„ ํƒํ–ˆ๋‹ค. 30์ผ ๋งŒ๋ฃŒ ๊ตฌ์กฐ๊ฐ€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋œ๋‹ค๋Š” ๊ฑธ ์•Œ๋ฉด์„œ ๋‚ด๋ฆฐ ๊ฒฐ์ •์ด๋ผ, ๋Œ€์‹  ๋งŒ๋ฃŒ ๋Œ€๋น„ ๊ทœ์น™์„ ๋ฌธ์„œ์— ๋‚จ๊ธฐ๊ธฐ๋กœ ํ–ˆ๋‹ค. ๊ฐ™์€ ์‚ฌ์ดํด์— 1์ฃผ์ฐจ์— ๋ฐœ๊ฒฌํ•ด๋‘” `/dashboard` ๋ฌด์ธ์ฆ ๊ตฌ๋ฉ๋„ ํ•จ๊ป˜ ๋ง‰๊ธฐ๋กœ ํ–ˆ๋‹ค. +- **๊ตฌํ˜„**. ๋ถ„์„, ์šด์˜ ์—”๋“œํฌ์ธํŠธ์— HTTP Basic ์ธ์ฆ. ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์—†์œผ๋ฉด ํ†ต๊ณผ๊ฐ€ ์•„๋‹ˆ๋ผ **์ฐจ๋‹จ**๋˜๋„๋ก fail-closed๋กœ ์„ค๊ณ„ํ–ˆ๋‹ค. +- **๊ฒ€์ฆ**. ์ƒˆ๋กœ ๋งŒ๋“  ๋นˆ DB๋กœ ๊ณ„ํš์„œ 8๋‹จ๊ณ„๋ฅผ ์ „๋ถ€ ํ†ต๊ณผ์‹œ์ผฐ๋‹ค. ํŠนํžˆ `init_db`์˜ ๋งจ๋•… ์ƒ์„ฑ๊ณผ ๋ฉฑ๋“ฑ์„ฑ์€ **์ด์ „๊นŒ์ง€ ํ•œ ๋ฒˆ๋„ ์‹ค์ „ ๊ฒ€์ฆ๋œ ์ ์ด ์—†๋˜ ๊ฒฝ๋กœ**์˜€๋‹ค. ๊ทธ ์™ธ ์“ฐ๊ธฐ ๋‹จ์กฐ ๋ถˆ๋ณ€์‹, ์ธ์ฆ 401/200/503, ๋ธŒ๋ผ์šฐ์ € ์‹ค๋ Œ๋”๊นŒ์ง€ ํ™•์ธ. + ๋กœ์ปฌ Claude๊ฐ€ ๋„๊ตฌ ์ œ์•ฝ(Chrome์ด URL ์ž๊ฒฉ์ฆ๋ช…, `file://` ๊ฑฐ๋ถ€, curl ์…ธ ์ธ์šฉ ๊นจ์ง)์— ๋ถ€๋”ชํž ๋•Œ๋งˆ๋‹ค ์šฐํšŒํ•˜๋ฉด์„œ๋„ "๋ฐ”์ดํŠธ ๋™์ผ" ํ™•์ธ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ฒ€์ฆ์˜ ์˜๋ฏธ๋ฅผ ๋ณด์กดํ•œ ๊ฒŒ ์ธ์ƒ์ ์ด์—ˆ๋‹ค. +- **์ปค๋ฐ‹ โ†’ PR**. ์—ฌ๊ธฐ์„œ ์‚ฌ๊ฑด์ด ํ•˜๋‚˜ ํ„ฐ์กŒ๋Š”๋ฐ, ๊ทธ๊ฑด 3๋ฒˆ ์„น์…˜์—์„œ ์ด์–ด ์“ด๋‹ค. **์ปค๋ฐ‹ / PR ๋งํฌ:** - ์ธ์ฆ ํ•˜๋“œ๋‹: `71aac5c` โ†’ PR #5 (๋งํฌ: https://github.com/yenachang924/popketmon-server/pull/5) @@ -33,7 +33,7 @@ **`/init` ํ›„ ์ง์ ‘ ์†๋ณธ ๋‚ด์šฉ:** `/init`์ด ๋งŒ๋“ค์–ด์ค€ ๊ตฌ์กฐ ์„ค๋ช… ์œ„์—, ์ด ํ”„๋กœ์ ํŠธ์˜ **"์šด์˜ ์˜๋„"**(๋ฌด์—‡์„ ์ง€ํ‚ค๋ ค๊ณ  ํ•˜๋Š” ์„œ๋น„์Šค์ธ์ง€)๋ฅผ ์–น์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜("main ์ง์ ‘ ์ปค๋ฐ‹ ๊ธˆ์ง€, ๋ธŒ๋žœ์น˜+PR")๊ณผ ์ด๋ฒˆ ์ฃผ์— ์ถ”๊ฐ€ํ•œ pg_dump ๋ฐฑ์—… ๊ทœ์น™. -**before/after โ€” Claude์˜ ๋‹ต์ด ์–ด๋–ป๊ฒŒ ๋‹ฌ๋ผ์กŒ๋‚˜:** +**before/after. Claude์˜ ๋‹ต์ด ์–ด๋–ป๊ฒŒ ๋‹ฌ๋ผ์กŒ๋‚˜:** ๊ฐ™์€ ๋ณด์•ˆ ์ˆ˜์ • ์š”์ฒญ์„ ์šด์˜ ์˜๋„ ์ฃผ์ž… ์ „/ํ›„๋กœ ๊ฐ๊ฐ ๋˜์ ธ A/B๋กœ ๋น„๊ตํ–ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” ์˜ˆ์ƒ๊ณผ ๋‹ฌ๋ž๋‹ค. - **์ œ์•ˆ๋œ FIX ์ž์ฒด๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์•˜๋‹ค.** ๊ณ ์น  ๋Œ€์ƒ๋„, ๋ฐฉ๋ฒ•๋„ ๊ฐ™์•˜๋‹ค. @@ -41,9 +41,9 @@ - โ†’ ๋ฐœ๊ฒฌ: **์˜๋„๋Š” "๋ฌด์—‡์„ ๊ณ ์น ์ง€"๋ณด๋‹ค "์™œ ๊ณ ์น˜๋Š”์ง€ ์„ค๋ช…ํ•˜๋Š” ๋ฐฉ์‹"์— ๋จผ์ € ๋ฐ˜์˜๋œ๋‹ค.** - (์ •์งํ•˜๊ฒŒ: after ์ชฝ์—์„œ `/stats` ๊ด€๋ จ ์ถ”๊ฐ€ ๋ฐœ๊ฒฌ์ด ํ•˜๋‚˜ ๋” ๋‚˜์™”๋Š”๋ฐ, ์ด๊ฑด ์ฃผ์ž… ํšจ๊ณผ์ธ์ง€ ์‹คํ–‰ ํŽธ์ฐจ์ธ์ง€ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์—†์–ด confound๋กœ ๋‚จ๊ฒจ๋‘”๋‹ค.) -**๊ทธ๋ฆฌ๊ณ  ๋ฐ˜์ „ โ€” ๊ทœ์น™์€ ์ปค๋ฐ‹๋œ ์ ์ด ์—†์—ˆ๋‹ค.** +**๊ทธ๋ฆฌ๊ณ  ๋ฐ˜์ „. ๊ทœ์น™์€ ์ปค๋ฐ‹๋œ ์ ์ด ์—†์—ˆ๋‹ค.** ๋‚ด๊ฐ€ ๋ถ„๋ช…ํžˆ ๋„ฃ์—ˆ๋‹ค๊ณ  ๊ธฐ์–ตํ•˜๋Š” "ํ•ญ์ƒ ์ƒˆ ๋ธŒ๋žœ์น˜" ๊ทœ์น™์ด CLAUDE.md์— ์—†์—ˆ๋‹ค. ํ•œ๊ธ€๋กœ grepํ–ˆ๋”๋‹ˆ ์•„๋ฌด๊ฒƒ๋„ ์•ˆ ๋‚˜์™”๋Š”๋ฐ, ์ธ์ฝ”๋”ฉ ๋ฌธ์ œ์˜€์„ ์ˆ˜ ์žˆ์–ด์„œ ์˜์–ด `main`์œผ๋กœ ๋‹ค์‹œ grepํ•ด ์Œ์„ฑ ๊ฒฐ๊ณผ๋ฅผ ์žฌ๊ฒ€์ฆํ–ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์—†์—ˆ๋‹ค. -๋กœ์ปฌ Claude์—๊ฒŒ ์ „์ˆ˜ ์ถ”์ (`-S`, ์ „ ref, stash, reflog, worktree)์„ ์‹œ์ผฐ๊ณ  ๊ฒฐ๋ก ์€ ์ด๋žฌ๋‹ค โ€” **๊ทธ ๊ทœ์น™์€ git์— ์ปค๋ฐ‹๋œ ์  ์ž์ฒด๊ฐ€ ์—†๋‹ค. ์ž‘์—… ํŠธ๋ฆฌ์—๋งŒ ์žˆ๋‹ค๊ฐ€ ์œ ์‹ค๋๊ณ , ์‹œ์ ๊ณผ ์›์ธ์€ git์œผ๋กœ ํŠน์ • ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.** +๋กœ์ปฌ Claude์—๊ฒŒ ์ „์ˆ˜ ์ถ”์ (`-S`, ์ „ ref, stash, reflog, worktree)์„ ์‹œ์ผฐ๊ณ  ๊ฒฐ๋ก ์€ ์ด๋žฌ๋‹ค. **๊ทธ ๊ทœ์น™์€ git์— ์ปค๋ฐ‹๋œ ์  ์ž์ฒด๊ฐ€ ์—†๋‹ค. ์ž‘์—… ํŠธ๋ฆฌ์—๋งŒ ์žˆ๋‹ค๊ฐ€ ์œ ์‹ค๋๊ณ , ์‹œ์ ๊ณผ ์›์ธ์€ git์œผ๋กœ ํŠน์ • ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.** โ†’ ๊ทธ๋ž˜์„œ ์ด๋ฒˆ ์ฃผ ๊ฒฐ๋ก  ๋ฌธ์žฅ: **"๊ทœ์น™์€ ์ปค๋ฐ‹๋˜์–ด์•ผ ์กด์žฌํ•œ๋‹ค."** --- @@ -63,29 +63,29 @@ **๊ฒฐ๋ก : ๋ฌธ์„œ์— ์ ํžŒ ๊ทœ์น™์€ advisory๋‹ค. ๊ฐ•์ œํ•˜๋ ค๋ฉด ์‹คํ–‰ ๋ ˆ์ด์–ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.** ๊ทธ๋ž˜์„œ ํ›…์„ ๋งŒ๋“ค์—ˆ๋‹ค. **๋งŒ๋“  ์ปค๋งจ๋“œ (`.claude/commands/commit.md`):** -์ด๋ฏธ ์กด์žฌํ•˜๋˜ ์ปค๋งจ๋“œ๋ผ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ ์ „์— ๋‚ด์šฉ๋ถ€ํ„ฐ ํ™•์ธํ–ˆ๋‹ค. frontmatter์˜ `allowed-tools: Bash(git:*)`๋กœ ๋„๊ตฌ๋ฅผ ์ œํ•œํ•˜๊ณ , ๋ณธ๋ฌธ์—์„œ `` !`git status` ``ยท`` !`git diff --staged` `` ๋ฌธ๋ฒ•์œผ๋กœ ์…ธ ์ถœ๋ ฅ์„ ์ปจํ…์ŠคํŠธ์— ๋„ฃ์€ ๋’ค Conventional Commits ํ˜•์‹์œผ๋กœ ์ปค๋ฐ‹์‹œํ‚ค๋Š” ํ—ฌํผ์˜€๋‹ค. +์ด๋ฏธ ์กด์žฌํ•˜๋˜ ์ปค๋งจ๋“œ๋ผ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ ์ „์— ๋‚ด์šฉ๋ถ€ํ„ฐ ํ™•์ธํ–ˆ๋‹ค. frontmatter์˜ `allowed-tools: Bash(git:*)`๋กœ ๋„๊ตฌ๋ฅผ ์ œํ•œํ•˜๊ณ , ๋ณธ๋ฌธ์—์„œ `` !`git status` ``, `` !`git diff --staged` `` ๋ฌธ๋ฒ•์œผ๋กœ ์…ธ ์ถœ๋ ฅ์„ ์ปจํ…์ŠคํŠธ์— ๋„ฃ์€ ๋’ค Conventional Commits ํ˜•์‹์œผ๋กœ ์ปค๋ฐ‹์‹œํ‚ค๋Š” ํ—ฌํผ์˜€๋‹ค. **๋ฌธ์ œ: ๋ธŒ๋žœ์น˜ ์–˜๊ธฐ๊ฐ€ ํ•œ ์ค„๋„ ์—†์—ˆ๋‹ค.** main์—์„œ `/commit`์„ ์น˜๋ฉด ๊ทธ๋Œ€๋กœ main์— ์ปค๋ฐ‹๋œ๋‹ค. ๊ทธ๋ž˜์„œ "์ปค๋ฐ‹ ์ „ ๋ธŒ๋žœ์น˜ ํ™•์ธ, main์ด๋ฉด ์ปค๋ฐ‹ํ•˜์ง€ ๋ง๊ณ  ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ์„ ๋จผ์ € ์ œ์•ˆ" ์ง€์‹œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค. **๋งŒ๋“  Hook (`.claude/hooks/block_main_commit.py` + `.claude/settings.json`):** -`PreToolUse` ์ด๋ฒคํŠธ, matcher๋Š” `Bash`. stdin์œผ๋กœ ๋“ค์–ด์˜จ ํ›… ํŽ˜์ด๋กœ๋“œ์—์„œ ์‹คํ–‰๋  ๋ช…๋ น์„ ๊บผ๋‚ด, **์‹ค์ œ `git commit` ์‹คํ–‰์ธ์ง€** ํŒ๋ณ„ํ•œ๋‹ค. ๋ฌธ์ž์—ด์— "commit"์ด ๋“ค์–ด์žˆ๋Š”์ง€๋กœ ๋ณด์ง€ ์•Š๊ณ  `&&`ยท`||`ยท`;`ยท`|` ๋“ฑ ์…ธ ์—ฐ์‚ฐ์ž๋กœ ๋ช…๋ น์„ ์„ธ๊ทธ๋จผํŠธ ๋‹จ์œ„๋กœ ์ž˜๋ผ ํŒ๋ณ„ํ–ˆ๋‹ค(์šฐํšŒ ๋ฐฉ์ง€). main์ด๋ฉด exit 2 + ํ•œ๊ตญ์–ด stderr๋กœ ์ฐจ๋‹จ ์‚ฌ์œ ์™€ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ์ œ์•ˆ์„ ๋Œ๋ ค์ค€๋‹ค. +`PreToolUse` ์ด๋ฒคํŠธ, matcher๋Š” `Bash`. stdin์œผ๋กœ ๋“ค์–ด์˜จ ํ›… ํŽ˜์ด๋กœ๋“œ์—์„œ ์‹คํ–‰๋  ๋ช…๋ น์„ ๊บผ๋‚ด, **์‹ค์ œ `git commit` ์‹คํ–‰์ธ์ง€** ํŒ๋ณ„ํ•œ๋‹ค. ๋ฌธ์ž์—ด์— "commit"์ด ๋“ค์–ด์žˆ๋Š”์ง€๋กœ ๋ณด์ง€ ์•Š๊ณ  `&&`, `||`, `;`, `|` ๋“ฑ ์…ธ ์—ฐ์‚ฐ์ž๋กœ ๋ช…๋ น์„ ์„ธ๊ทธ๋จผํŠธ ๋‹จ์œ„๋กœ ์ž˜๋ผ ํŒ๋ณ„ํ–ˆ๋‹ค(์šฐํšŒ ๋ฐฉ์ง€). main์ด๋ฉด exit 2 + ํ•œ๊ตญ์–ด stderr๋กœ ์ฐจ๋‹จ ์‚ฌ์œ ์™€ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ์ œ์•ˆ์„ ๋Œ๋ ค์ค€๋‹ค. **์„ค๊ณ„ ๊ฒฐ์ • 3๊ฐœ์™€ ๊ทผ๊ฑฐ:** | ๊ฒฐ์ • | ์„ ํƒ | ๊ทผ๊ฑฐ | |---|---|---| -| ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ ๋™์ž‘ | **์ ˆ์ถฉ** โ€” ์ปค๋ฐ‹์œผ๋กœ ํŒ๋ณ„๋œ ๋’ค์˜ ์˜ˆ์™ธ๋งŒ ์ฐจ๋‹จ, ํŒ๋ณ„ ์ด์ „ ์˜ˆ์™ธ๋Š” ํ†ต๊ณผ | ๋งค์ฒ˜๊ฐ€ `Bash` ์ „์ฒด๋ผ fail-closed๋ฉด ๋ชจ๋“  ์…ธ ๋ช…๋ น์ด ๋ง‰ํ˜€ ์„ธ์…˜์ด ๋งˆ๋น„๋œ๋‹ค. ํญ๋ฐœ ๋ฐ˜๊ฒฝ์„ ์ปค๋ฐ‹์œผ๋กœ ์ขํ˜”๋‹ค. | +| ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ ๋™์ž‘ | **์ ˆ์ถฉ**. ์ปค๋ฐ‹์œผ๋กœ ํŒ๋ณ„๋œ ๋’ค์˜ ์˜ˆ์™ธ๋งŒ ์ฐจ๋‹จ, ํŒ๋ณ„ ์ด์ „ ์˜ˆ์™ธ๋Š” ํ†ต๊ณผ | ๋งค์ฒ˜๊ฐ€ `Bash` ์ „์ฒด๋ผ fail-closed๋ฉด ๋ชจ๋“  ์…ธ ๋ช…๋ น์ด ๋ง‰ํ˜€ ์„ธ์…˜์ด ๋งˆ๋น„๋œ๋‹ค. ํญ๋ฐœ ๋ฐ˜๊ฒฝ์„ ์ปค๋ฐ‹์œผ๋กœ ์ขํ˜”๋‹ค. | | ์„ค์ • ํŒŒ์ผ ์œ„์น˜ | **`.claude/settings.json`** (์ปค๋ฐ‹๋˜๋Š” ์ชฝ) | ์ด๋ฒˆ ์ฃผ ๊ฒฐ๋ก ์ด "๊ทœ์น™์€ ์ปค๋ฐ‹๋˜์–ด์•ผ ์กด์žฌํ•œ๋‹ค"์ธ๋ฐ ๋กœ์ปฌ ์ „์šฉ ํŒŒ์ผ์— ๋„ฃ์œผ๋ฉด ์ž๊ธฐ๋ชจ์ˆœ์ด๋‹ค. | | ์ฐจ๋‹จ ๋ฒ”์œ„ | **main๋งŒ** (master ์ œ์™ธ) | ์ด ์ €์žฅ์†Œ์— master๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ๋ง‰๋Š” ๊ทœ์น™์€ **๋ฌธ์„œ์— ์—†๋Š” ๊ทœ์น™์„ ๊ฐ•์ œํ•˜๋Š” ์—ญ๋ฐฉํ–ฅ ๋ถˆ์ผ์น˜**๋ฅผ ๋งŒ๋“ ๋‹ค. | -**"์กฐ์šฉํ•œ ์ฃฝ์Œ" ๋Œ€์ฑ…:** fail-open์œผ๋กœ ํ†ต๊ณผ์‹œํ‚ค๋Š” ๋ชจ๋“  ์˜ˆ์™ธ๋Š” `hook_errors.log`์— ์‹œ๊ฐยท์—๋Ÿฌ ๋‚ด์šฉ์„ ๋‚จ๊ธฐ๊ณ  stderr์—๋„ ๊ฒฝ๊ณ ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ํ›…์ด ์กฐ์šฉํžˆ ์ฃฝ์–ด์„œ "์š”์ฆ˜ ์ปค๋ฐ‹ ์ž˜ ๋˜๋„ค"๋กœ ๋ณด์ด๋Š” ์ƒํ™ฉ์ด ๊ณง ์ด๋ฒˆ ์ฃผ์— ๊ฒช์€ "๊ทœ์น™์ด ์กฐ์šฉํžˆ ์œ ์‹ค๋œ" ์‚ฌ๊ฑด์˜ ์žฌํŒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์šฉ ์ƒ˜ํ”Œ JSON 3๊ฐœ๋„ ํŒŒ์ผ๋กœ ์ €์žฅํ•ด ์–ธ์ œ๋“  ์žฌ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ๋‹ค. +**"์กฐ์šฉํ•œ ์ฃฝ์Œ" ๋Œ€์ฑ…:** fail-open์œผ๋กœ ํ†ต๊ณผ์‹œํ‚ค๋Š” ๋ชจ๋“  ์˜ˆ์™ธ๋Š” `hook_errors.log`์— ์‹œ๊ฐ, ์—๋Ÿฌ ๋‚ด์šฉ์„ ๋‚จ๊ธฐ๊ณ  stderr์—๋„ ๊ฒฝ๊ณ ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ํ›…์ด ์กฐ์šฉํžˆ ์ฃฝ์–ด์„œ "์š”์ฆ˜ ์ปค๋ฐ‹ ์ž˜ ๋˜๋„ค"๋กœ ๋ณด์ด๋Š” ์ƒํ™ฉ์ด ๊ณง ์ด๋ฒˆ ์ฃผ์— ๊ฒช์€ "๊ทœ์น™์ด ์กฐ์šฉํžˆ ์œ ์‹ค๋œ" ์‚ฌ๊ฑด์˜ ์žฌํŒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์šฉ ์ƒ˜ํ”Œ JSON 3๊ฐœ๋„ ํŒŒ์ผ๋กœ ์ €์žฅํ•ด ์–ธ์ œ๋“  ์žฌ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ๋‹ค. **์–ด๋–ป๊ฒŒ ์—ฐ๋™ํ–ˆ๋‚˜:** `/commit` ์‹คํ–‰ โ†’ Claude๊ฐ€ Bash ๋„๊ตฌ๋กœ `git commit` ํ˜ธ์ถœ ์‹œ๋„ โ†’ PreToolUse ํ›…์ด ๊ทธ ์•ž์—์„œ ๊ฐ€๋กœ์ฑ„ ํŒ๋ณ„ โ†’ ์ฐจ๋‹จ์ด๋ฉด stderr๊ฐ€ Claude์—๊ฒŒ ํ”ผ๋“œ๋ฐฑ์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค. ์ฆ‰ **์ปค๋งจ๋“œ๋Š” ํŽธ์˜, ํ›…์€ ๊ฐ•์ œ**๋กœ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ–ˆ๋‹ค. **๊ฒ€์ฆ ๊ฒฐ๊ณผ์™€ ํ•œ๊ณ„ (์ •์งํ•˜๊ฒŒ):** -- ๋‹จ์œ„ ํ…Œ์ŠคํŠธ 11/11 ํ†ต๊ณผ โ€” (a) main์—์„œ `git commit` โ†’ exit 2 (b) ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜ โ†’ exit 0 (c) `git status` โ†’ exit 0, ์˜คํƒ/๋ฏธํƒ 8์ผ€์ด์Šค ์ „๋ถ€ ํ†ต๊ณผ. fail-open ๊ฒฝ๋กœ(๊นจ์ง„ JSON โ†’ ํ†ต๊ณผ + ๋กœ๊ทธ + ํ•œ๊ธ€ ์•ˆ ๊นจ์ง)๋„ ๋ณ„๋„ ํ™•์ธ. +- ๋‹จ์œ„ ํ…Œ์ŠคํŠธ 11/11 ํ†ต๊ณผ. (a) main์—์„œ `git commit` โ†’ exit 2 (b) ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜ โ†’ exit 0 (c) `git status` โ†’ exit 0, ์˜คํƒ/๋ฏธํƒ 8์ผ€์ด์Šค ์ „๋ถ€ ํ†ต๊ณผ. fail-open ๊ฒฝ๋กœ(๊นจ์ง„ JSON โ†’ ํ†ต๊ณผ + ๋กœ๊ทธ + ํ•œ๊ธ€ ์•ˆ ๊นจ์ง)๋„ ๋ณ„๋„ ํ™•์ธ. - **๋ผ์ด๋ธŒ ๊ฒ€์ฆ์€ ๋ฏธ์™„์ด๋‹ค.** ์„ค์ •์€ ์„ธ์…˜ ์‹œ์ž‘ ์‹œ ๋กœ๋“œ๋˜๋ฏ€๋กœ Claude Code ์žฌ์‹œ์ž‘ ํ›„์— ์‹ค์ œ ์ฐจ๋‹จ์„ ํ™•์ธํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ฒˆ ์ฃผ ๋ฒ”์œ„ ์•ˆ์—์„œ ๊ฑฐ๊ธฐ๊นŒ์ง€ ๊ฐ€์ง€ ๋ชปํ–ˆ๋‹ค. ์ปค๋ฐ‹: `d871245`, PR: https://github.com/yenachang924/popketmon-server/pull/7 -- **๋ฒ”์œ„์˜ ํ•œ๊ณ„**: ์ด ํ›…์ด ์žก๋Š” ๊ฒƒ์€ `git commit`๋ฟ์ด๋‹ค. `git merge`ยท`rebase`ยท`cherry-pick`ยท`push origin main`์€ ์•ˆ ์žก๋Š”๋‹ค. ํŠนํžˆ **`git pull`์€ ๋‚ด๋ถ€์ ์œผ๋กœ fetch + merge๋ผ main์„ ๋ฐ”๊พธ๋Š”๋ฐ๋„ ๋ช…๋ น ๋ฌธ์ž์—ด์ด "pull"์ด๋ผ ์–ด๋–ค ํ™•์žฅ์œผ๋กœ๋„ ์•ˆ ๊ฑธ๋ฆฐ๋‹ค.** +- **๋ฒ”์œ„์˜ ํ•œ๊ณ„**: ์ด ํ›…์ด ์žก๋Š” ๊ฒƒ์€ `git commit`๋ฟ์ด๋‹ค. `git merge`, `rebase`, `cherry-pick`, `push origin main`์€ ์•ˆ ์žก๋Š”๋‹ค. ํŠนํžˆ **`git pull`์€ ๋‚ด๋ถ€์ ์œผ๋กœ fetch + merge๋ผ main์„ ๋ฐ”๊พธ๋Š”๋ฐ๋„ ๋ช…๋ น ๋ฌธ์ž์—ด์ด "pull"์ด๋ผ ์–ด๋–ค ํ™•์žฅ์œผ๋กœ๋„ ์•ˆ ๊ฑธ๋ฆฐ๋‹ค.** โ†’ ํ›…์€ ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์˜ **๊ฒ‰๋ฉด**๋งŒ ๋ณธ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๊ฑด "main ๋ณ€๊ฒฝ ์›์ฒœ ๋ด‰์‡„"๊ฐ€ ์•„๋‹ˆ๋ผ **"์˜๋„์ ์ธ main ์ง์ ‘ ์ž‘์—…์„ ๋ˆˆ์— ๋„๊ฒŒ ๋งŒ๋“œ๋Š” ์žฅ์น˜"**๋‹ค. ๋ฒ”์œ„๋ฅผ ๋„“ํžˆ๋Š” ๊ฒƒ๋ณด๋‹ค ํ•œ๊ณ„๋ฅผ ์ •ํ™•ํžˆ ์•„๋Š” ์ชฝ์„ ํƒํ–ˆ๋‹ค. --- @@ -98,12 +98,12 @@ https://github.com/yenachang924/popketmon-server/pull/7 ## 5. ํšŒ๊ณ  -**๊ฒช์€ ์‚ฝ์งˆ โ€” ์ธ์ฝ”๋”ฉ 3์—ฐํƒ€** +**๊ฒช์€ ์‚ฝ์งˆ. ์ธ์ฝ”๋”ฉ 3์—ฐํƒ€** -1. **ํ•œ๊ธ€ grep ํ—›๋ฐฉ** โ€” CLAUDE.md์—์„œ ๊ทœ์น™์„ ์ฐพ๋Š”๋ฐ ํ•œ๊ธ€ ๊ฒ€์ƒ‰์ด ์•„๋ฌด๊ฒƒ๋„ ๋ชป ์žก์•˜๋‹ค. ์ธ์ฝ”๋”ฉ ๋ฌธ์ œ์ผ ์ˆ˜ ์žˆ์–ด ์˜์–ด `main`์œผ๋กœ ์žฌ๊ฒ€์ƒ‰ํ•ด ์Œ์„ฑ ๊ฒฐ๊ณผ ์ž์ฒด๋ฅผ ๊ฒ€์ฆํ–ˆ๋‹ค. โ†’ **"์—†๋‹ค"๋Š” ๊ฒฐ๊ณผ๋„ ๊ฒ€์ฆ ๋Œ€์ƒ์ด๋‹ค.** -2. **`commit.md` ํ™”๋ฉด ๊นจ์ง** โ€” `type`์œผ๋กœ ์—ด์—ˆ๋”๋‹ˆ ํ•œ๊ธ€์ด ์ „๋ถ€ ๊นจ์ ธ ๋‚˜์™”๋‹ค. ํŒŒ์ผ์ด ๊นจ์ง„ ๊ฑด์ง€ ํ™”๋ฉด์ด ๊นจ์ง„ ๊ฑด์ง€ ๋ชจ๋ฅด๋Š” ์ƒํƒœ์—์„œ ๊ด€์ฐฐ ํฌ์ธํŠธ๋ฅผ ์ •ํ•˜๊ณ ("์ธ์ฝ”๋”ฉ์„ ์ง€์ •ํ•ด ์ฝ์œผ๋ฉด ๋ณต์›๋˜๋Š”๊ฐ€") `Get-Content -Encoding UTF8`๋กœ ํ™•์ธ โ†’ **ํŒŒ์ผ์€ ๋ฉ€์ฉกํ–ˆ๊ณ  ์ฝ˜์†” ํ•ด์„์ด ๋ฌธ์ œ์˜€๋‹ค.** -3. **์ „์—ญ ์„ค์ • ํŒŒ์ผ ์†์ƒ** โ€” ํ›… ํ…Œ์ŠคํŠธ์šฉ ๋”๋ฏธ ๋ณ€๊ฒฝ์„ ๋งŒ๋“ค๋ ค๊ณ  `echo "" >> .claude/settings.json`์„ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ, **์ƒˆ๋กœ ์—ฐ PowerShell ์ฐฝ์ด ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์˜€๋‹ค.** ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ผ `C:\Users\yenac\.claude\settings.json`(์ „์—ญ ์„ค์ •)์ด ์ˆ˜์ •๋๊ณ , PowerShell 5.1์˜ `>>`๊ฐ€ UTF-8 ํŒŒ์ผ์— UTF-16 CRLF(`0D 00 0A 00`)๋ฅผ ๋ง๋ถ™์—ฌ JSON ํŒŒ์„œ๊ฐ€ ํŒŒ์ผ ์ „์ฒด๋ฅผ ๊ฑฐ๋ถ€ํ–ˆ๋‹ค. Claude Code๊ฐ€ "Invalid or malformed JSON"์„ ๋ฑ‰์—ˆ๋‹ค. - โ†’ ์ด๋ฒˆ ์ฃผ์— ๋ฐ˜๋ณตํ•ด์„œ ๋‚˜์˜จ ์›๋ฆฌ("PowerShell ์ฐฝ์˜ ์ƒํƒœ๋Š” ์—ด๋ฆฐ ์ˆœ๊ฐ„ ๊ณ ์ •๋œ๋‹ค")๊ฐ€ ์ธ์ฝ”๋”ฉ ์‚ฌ๊ณ ์™€ ๊ฒน์ณ ์žฌ๋“ฑ์žฅํ•œ ์‚ฌ๋ก€. ๊ทธ๋ฆฌ๊ณ  **ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์œผ๋กœ ํ•˜ํ•„ ํ›… ์„ค์ • ํŒŒ์ผ์„ ๊ณ ๋ฅธ ๊ฒƒ ์ž์ฒด๊ฐ€ ์„ค๊ณ„ ๋ฏธ์Šค**์˜€๋‹ค โ€” ๋ง๊ฐ€์ง€๋ฉด ํ…Œ์ŠคํŠธ ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ด์ง€๋Š” ํŒŒ์ผ์ด์—ˆ๋‹ค. +1. **ํ•œ๊ธ€ grep ํ—›๋ฐฉ**. CLAUDE.md์—์„œ ๊ทœ์น™์„ ์ฐพ๋Š”๋ฐ ํ•œ๊ธ€ ๊ฒ€์ƒ‰์ด ์•„๋ฌด๊ฒƒ๋„ ๋ชป ์žก์•˜๋‹ค. ์ธ์ฝ”๋”ฉ ๋ฌธ์ œ์ผ ์ˆ˜ ์žˆ์–ด ์˜์–ด `main`์œผ๋กœ ์žฌ๊ฒ€์ƒ‰ํ•ด ์Œ์„ฑ ๊ฒฐ๊ณผ ์ž์ฒด๋ฅผ ๊ฒ€์ฆํ–ˆ๋‹ค. โ†’ **"์—†๋‹ค"๋Š” ๊ฒฐ๊ณผ๋„ ๊ฒ€์ฆ ๋Œ€์ƒ์ด๋‹ค.** +2. **`commit.md` ํ™”๋ฉด ๊นจ์ง**. `type`์œผ๋กœ ์—ด์—ˆ๋”๋‹ˆ ํ•œ๊ธ€์ด ์ „๋ถ€ ๊นจ์ ธ ๋‚˜์™”๋‹ค. ํŒŒ์ผ์ด ๊นจ์ง„ ๊ฑด์ง€ ํ™”๋ฉด์ด ๊นจ์ง„ ๊ฑด์ง€ ๋ชจ๋ฅด๋Š” ์ƒํƒœ์—์„œ ๊ด€์ฐฐ ํฌ์ธํŠธ๋ฅผ ์ •ํ•˜๊ณ ("์ธ์ฝ”๋”ฉ์„ ์ง€์ •ํ•ด ์ฝ์œผ๋ฉด ๋ณต์›๋˜๋Š”๊ฐ€") `Get-Content -Encoding UTF8`๋กœ ํ™•์ธ โ†’ **ํŒŒ์ผ์€ ๋ฉ€์ฉกํ–ˆ๊ณ  ์ฝ˜์†” ํ•ด์„์ด ๋ฌธ์ œ์˜€๋‹ค.** +3. **์ „์—ญ ์„ค์ • ํŒŒ์ผ ์†์ƒ**. ํ›… ํ…Œ์ŠคํŠธ์šฉ ๋”๋ฏธ ๋ณ€๊ฒฝ์„ ๋งŒ๋“ค๋ ค๊ณ  `echo "" >> .claude/settings.json`์„ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ, **์ƒˆ๋กœ ์—ฐ PowerShell ์ฐฝ์ด ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์˜€๋‹ค.** ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ผ `C:\Users\yenac\.claude\settings.json`(์ „์—ญ ์„ค์ •)์ด ์ˆ˜์ •๋๊ณ , PowerShell 5.1์˜ `>>`๊ฐ€ UTF-8 ํŒŒ์ผ์— UTF-16 CRLF(`0D 00 0A 00`)๋ฅผ ๋ง๋ถ™์—ฌ JSON ํŒŒ์„œ๊ฐ€ ํŒŒ์ผ ์ „์ฒด๋ฅผ ๊ฑฐ๋ถ€ํ–ˆ๋‹ค. Claude Code๊ฐ€ "Invalid or malformed JSON"์„ ๋ฑ‰์—ˆ๋‹ค. + โ†’ ์ด๋ฒˆ ์ฃผ์— ๋ฐ˜๋ณตํ•ด์„œ ๋‚˜์˜จ ์›๋ฆฌ("PowerShell ์ฐฝ์˜ ์ƒํƒœ๋Š” ์—ด๋ฆฐ ์ˆœ๊ฐ„ ๊ณ ์ •๋œ๋‹ค")๊ฐ€ ์ธ์ฝ”๋”ฉ ์‚ฌ๊ณ ์™€ ๊ฒน์ณ ์žฌ๋“ฑ์žฅํ•œ ์‚ฌ๋ก€. ๊ทธ๋ฆฌ๊ณ  **ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์œผ๋กœ ํ•˜ํ•„ ํ›… ์„ค์ • ํŒŒ์ผ์„ ๊ณ ๋ฅธ ๊ฒƒ ์ž์ฒด๊ฐ€ ์„ค๊ณ„ ๋ฏธ์Šค**์˜€๋‹ค. ๋ง๊ฐ€์ง€๋ฉด ํ…Œ์ŠคํŠธ ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ด์ง€๋Š” ํŒŒ์ผ์ด์—ˆ๋‹ค. **์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ์—ˆ๋‚˜** diff --git a/members/yenachang924/week03.md b/members/yenachang924/week03.md new file mode 100644 index 0000000..e144eea --- /dev/null +++ b/members/yenachang924/week03.md @@ -0,0 +1,29 @@ +# Week 03 โ€“ ๊ธฐํš & ์ฐฉ์ˆ˜: ๋นตํ‚ต + +- ์ž‘์„ฑ์ž: yenachang924 + +> ์ด๋ฒˆ ์ฃผ ํ•œ ์ค„: **"๋งŒ๋“ค๊ธฐ ์ „์— ์ฃฝ์—ฌ๋ณธ๋‹ค. ํ˜„์žฅ 30๊ณณ, 0๊ณณ."** + +## 0. ๋ฌด์—‡์„, ์™œ + +**๋นตํ‚ต**. ํ’ˆ์ ˆ ์ „์— ์›ํ•˜๋Š” ๋นต์„ ํ™•๋ณดํ•˜๊ณ  ์‹ถ์€ ์†๋‹˜๊ณผ, ์ƒ์‚ฐ๋Ÿ‰์„ ๊ฐ์œผ๋กœ ์ •ํ•˜๋Š” ๋™๋„ค ๋นต์ง‘ ์‚ฌ์žฅ๋‹˜์„ ์ž‡๋Š” **์„ ๊ฒฐ์ œ ํ”ฝ์—… ์˜ˆ์•ฝ**. +๊ธฐํš์„œ(idea.md) 10ํ•ญ๋ชฉ์˜ ํ•ต์‹ฌ์€ 'ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ' ๋‘˜์ด์—ˆ๋‹ค: **์‹ค์‹œ๊ฐ„ ์žฌ๊ณ  ์ž…๋ ฅ ์—†์Œ**(์‚ฌ์žฅ๋‹˜์€ ์•„์นจ 1ํšŒ), **ํ• ์ธ ์—†์Œ**(ํŒŒ๋Š” ๊ฒƒ์€ ์‹ผ ๋นต์ด ์•„๋‹ˆ๋ผ "๊ฐ€๋ฉด ๋ฐ˜๋“œ์‹œ ์žˆ๋‹ค"๋Š” ํ™•์‹คํ•จ). + +## 1. ํ•œ ๊ฒƒ + +- **ํ˜„์žฅ ๊ฒ€์ฆ**. ๋ง์›, ์—ฐ๋‚จ 30๊ณณ์„ ์ง์ ‘ ๋Œ์•˜๋‹ค. ์†๋‹˜์œผ๋กœ ์‚ฌ๋ณด๊ณ , ์‚ฌ์žฅ๋‹˜๊ณผ ์ด์•ผ๊ธฐํ–ˆ๋‹ค. ํ”ฝ์—… ์˜ˆ์•ฝ์„ ๋ฐ›๋Š” ๊ณณ์€ **0๊ณณ**. ํ•œ ์ธ๊ธฐ ๋นต์ง‘์€ ํ”„๋กœํ•„์— "๋นต ์˜ˆ์•ฝ ์•ˆ๋ฉ๋‹ˆ๋‹ค", ๋‹ค๋ฅธ ๊ณณ์€ ์˜์—…์‹œ๊ฐ„์ด "์†Œ์ง„์‹œ๋งˆ๊ฐ". ์‚ฌ์žฅ๋‹˜ ๋ง: **"์ˆ˜๋Ÿ‰์„ ์•Œ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ฐ๊ฐ€ ์ธ์Šคํƒ€๋ฐ–์— ์—†์–ด์š”. ํ•˜๋‚˜๋กœ ๋ชจ์ด๋ฉด ์ข‹๊ฒ ๋Š”๋ฐ."**. ๊ณต๊ธ‰์ž ์ชฝ ๋‹ˆ์ฆˆ๋ฅผ ๋‹น์‚ฌ์ž ์ž…์œผ๋กœ ํ™•์ธํ•œ ๊ฒƒ์ด ์ด ๊ธฐํš์˜ ๊ฐ€์žฅ ๊ฐ•ํ•œ ์นด๋“œ๊ฐ€ ๋๋‹ค. +- **๋ฒ”์œ„ ์ž๋ฅด๊ธฐ**. 6์ฃผ MVP๋Š” (1) ์‚ฌ์žฅ๋‹˜ ์ž…๋ ฅ โ†’ ์˜ˆ์•ฝ ํŽ˜์ด์ง€ (2) ์†๋‹˜ ์‹œ๊ฐ„๋Œ€ ์„ ํƒ, ์„ ๊ฒฐ์ œ (3) ํ”ฝ์—…, ์ทจ์†Œ. ๋ฒ”์œ„ ๋ฐ–: ์‹ค์‹œ๊ฐ„ ์žฌ๊ณ , ์‹ค PG ์ •์‚ฐ, ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ. +- **์…‹์—…**. Next.js 16(App Router, Server Actions) ๋‹จ์ผ ์•ฑ, `CLAUDE.md`(โ†’ `AGENTS.md`)์— ๊ทœ์•ฝ์„ **์—์ด์ „ํŠธ๊ฐ€ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์žฅ**์œผ๋กœ: ์‹œ๊ฐ„์€ `time.ts` ํ•œ ๊ณณ, ๊ฒฐ์ œ๋Š” `payments/` ํ•œ ๊ณณ, ์™ธ๋ถ€๋Š” ๊ฒŒ์ดํŠธ์›จ์ด ๋’ค. +- **์‚ฌ์—…๊ณ„ํš์„œ, ๋ฐœํ‘œ ๋Œ€๋ณธ** , + +## 2. ๋ง‰ํžŒ ๊ฒƒ + + +## 3. ๋ฐฐ์šด ๊ฒƒ + +- "์™œ ๋งŒ๋“œ๋‚˜"๋ฅผ **๋‚ด ๋ถˆํŽธ**์—์„œ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ, ๊ธฐํš์„œ์— ๋“ค์–ด๊ฐ„ ๊ฑด **์‚ฌ์žฅ๋‹˜์˜ ๋ฌธ์žฅ**์ด์—ˆ๋‹ค. ์ˆ˜์š”๋Š” ๋‚ด๊ฐ€ ์•Œ๊ณ , ๊ณต๊ธ‰์€ ํ˜„์žฅ์ด ์•Œ๋ ค์คฌ๋‹ค. +- ๊ธฐํš์„œ์˜ "๋Œ€์•ˆ, ๊ฒฝ์Ÿ" ์นธ์ด ์ œ์ผ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค. ๋„ค์ด๋ฒ„ ์˜ˆ์•ฝ์€ '์‹œ๊ฐ„, ์ขŒ์„' ๋ชจ๋ธ, ๊ณต๋™๊ตฌ๋งค๋Š” '์‚ฌ๋žŒ์ด ๋ชจ์—ฌ์•ผ ์„ฑ์‚ฌ', ๋งˆ๊ฐ ํ• ์ธ์€ '๋žœ๋ค'. ๋นตํ‚ต์€ **์˜คํ”ˆ์˜ ์ง€๋ช…**. + +## 4. ๋‹ค์Œ ์ฃผ + +- ์œ ์‚ฌ ์„œ๋น„์Šค ์ฝ”๋“œ ๋ถ€๊ฒ€ โ†’ ์„ค๊ณ„ โ†’ MVP ํ•œ ๋ฐ”ํ€ด(๋ฐœํ–‰, ํ‚ต, ์ทจ์†Œ, ํ”ฝ์—…) โ†’ ๊ฒฐ์ œ ์ฝ”์–ด ํ…Œ์ŠคํŠธ diff --git a/members/yenachang924/week04.md b/members/yenachang924/week04.md new file mode 100644 index 0000000..4e70d1e --- /dev/null +++ b/members/yenachang924/week04.md @@ -0,0 +1,29 @@ +# Week 04 โ€“ ๊ฐœ๋ฐœ 1: MVP ํ•œ ๋ฐ”ํ€ด + ์ฆ๊ฑฐ + +- ์ž‘์„ฑ์ž: yenachang924 + +> ์ด๋ฒˆ ์ฃผ ํ•œ ์ค„: **"์ฃผ์žฅ ๋Œ€์‹  ์ธก์ •. ๋™์‹œ 200 vs 10, ์˜ค๋ฒ„์…€ 0."** + +## 1. ํ•œ ๊ฒƒ + +- **๋งจ๋•… ๋Œ€์‹  ๋ถ€๊ฒ€** ([ADR-001](https://github.com/yenachang924/bbangkeep/blob/main/docs/adr/001-reference-autopsy.md)). ๊ฐ™์€ ์‹œ์žฅ์˜ ์œ ์‚ฌ ์„œ๋น„์Šค FE/BE๋ฅผ ํƒ์ƒ‰ ์—์ด์ „ํŠธ 2๊ฐœ ๋ณ‘๋ ฌ๋กœ ์ „์ˆ˜ ๋ถ„์„(~30๋งŒ ํ† ํฐ). ๊ฒฐ๊ณผ๋ฅผ **๊ฐ€์ ธ์˜ฌ ๊ฒƒ / ๋ฒ„๋ฆด ๊ฒƒ / ๋‹ฌ๋ผ์•ผ ํ•  ๊ฒƒ** 3๋ถ„๋ฅ˜๋กœ ๋จผ์ € ์ ๊ณ  ์„ค๊ณ„๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ฐ€์ ธ์˜ด: ๊ฒฐ์ œ ์‹ ๋ขฐ ๊ฒฝ๊ณ„, ์กฐ๊ฑด๋ถ€ ์›์ž UPDATE, ํ”ฝ์—… UX. ๋ฒ„๋ฆผ: ๋ชฉํ‘œ์ˆ˜๋Ÿ‰ ๋‹ฌ์„ฑํ˜• ์ƒํƒœ๋จธ์‹ , ์šด์˜์ž ๊ฑด๋ณ„ ์Šน์ธ, ์ •์‚ฐ, ์–ด๋“œ๋ฏผ ํ’€์Šคํƒ. ๋‹ฌ๋ฆฌํ•จ: **์‹œ๊ฐ„๋Œ€(BakeSlot)๊ฐ€ 1๊ธ‰ ์—”ํ‹ฐํ‹ฐ**, ์š”์ผ ํ…œํ”Œ๋ฆฟ, 1๋ช…์ด์–ด๋„ ์ฆ‰์‹œ ํ™•์ •. +- **MVP ์ „์ฒด ํ”Œ๋กœ์šฐ**. ์‹œ๊ฐ„ํ‘œ ๋ฐœํ–‰ โ†’ ํ‚ต(์„ ๊ฒฐ์ œ) โ†’ ์ทจ์†Œ, ํ™˜๋ถˆ โ†’ ํ”ฝ์—…(์ฝ”๋“œ/QR ๊ฒ€์ฆ). Server Actions + Prisma 6(7์—์„œ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ, [ADR-003](https://github.com/yenachang924/bbangkeep/blob/main/docs/adr/003-sqlite-prisma6.md)). +- **๊ฒฐ์ œ 5์›์น™์„ ์ฝ”๋“œ๋กœ** ([ADR-005](https://github.com/yenachang924/bbangkeep/blob/main/docs/adr/005-payment-trust-boundary.md)). ๊ธˆ์•ก์€ ์„œ๋ฒ„ ํ™•์ •, PG ์žฌ์กฐํšŒ, ์กฐ๊ฑด๋ถ€ ์›์ž UPDATE, ๋ฉฑ๋“ฑ, ๊ฐ์‚ฌ๋กœ๊ทธ. ์‚ฌ์—…์ž๋“ฑ๋ก ์ „์ด๋ผ **PG๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค ๋’ค์— ๋‘๊ณ  ๋ชจ์˜ PG๋กœ**([ADR-006](https://github.com/yenachang924/bbangkeep/blob/main/docs/adr/006-payment-gateway-abstraction.md)). ์ œ์•ฝ์ด ์ถ”์ƒํ™”๋ฅผ ๋‚ณ์•˜๋‹ค. +- **์ฆ๊ฑฐ**. ๊ฒฐ์ œ ์ฝ”์–ด ํ…Œ์ŠคํŠธ 12๊ฐœ, GitHub Actions CI. ๋™์‹œ์„ฑ ์ฆ๋ช…: ์ž”์—ฌ 10๊ฐœ์— ๋™์‹œ 200๋ช… โ†’ ์˜ˆ์•ฝ 10, **์˜ค๋ฒ„์…€ 0**, 190๋ช… ์ž๋™ ํ™˜๋ถˆ([proof](https://github.com/yenachang924/bbangkeep/blob/main/docs/proof/concurrency-latest.md)). ๋ถ€ํ•˜ ์‹ค์ธก: ์ฝ๊ธฐ p99 360ms @ 210rps. +- ADR 8๊ฑด, ์ฃผ๊ฐ„ ๋กœ๊ทธ ์‹œ์ž‘([docs/log](https://github.com/yenachang924/bbangkeep/tree/main/docs/log)), ์•„ํ‹ฐํด #0 ์ดˆ์•ˆ. + +## 2. ๋ง‰ํžŒ ๊ฒƒ + +- **ํ™˜๋ถˆ ์ˆœ์„œ ์ฐฝ**. "PG ํ™˜๋ถˆ ์„ฑ๊ณต โ†’ DB ๋ฐ˜์˜ ์‹คํŒจ" ์‚ฌ์ด. ๋‹น์‹œ์—” ๊ฐ์‚ฌ๋กœ๊ทธ ๊ธฐ๋ฐ˜ ์ˆ˜๋™ ๋ณต๊ตฌ๋ฅผ ์ „์ œ๋กœ "์•Œ๋ ค์ง„ ๊ตฌ๋ฉ"์œผ๋กœ ADR์— ์ ์–ด๋‘๊ณ  ๋„˜์–ด๊ฐ”๋‹ค(๋ฉ˜ํ† ๋ง ์งˆ๋ฌธ์œผ๋กœ). +- Prisma 7์˜ ํŒŒ๊ดด์  ๋ณ€๊ฒฝ โ†’ 6์œผ๋กœ ๋ช…์‹œ์  ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ. "์ตœ์‹ "์ด ์•„๋‹ˆ๋ผ "์ง€๊ธˆ ๋‚˜๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” ๋ฒ„์ „". +- Windows: python cp949 ์ธ์ฝ”๋”ฉ, ๋ธŒ๋ผ์šฐ์ € pane ์Šคํฌ๋ฆฐ์ƒท ๋ถˆ๊ฐ€ โ†’ `PYTHONUTF8=1`, Playwright headless๋กœ ์šฐํšŒ. + +## 3. ๋ฐฐ์šด ๊ฒƒ + +- **์žฌ๊ณ  ์ฐจ๊ฐ์„ ๋‹จ์ผ ๋ฐฉ์–ด๋กœ**. ๋ ˆํผ๋Ÿฐ์Šค์˜ 3์ค‘ ๋ฐฉ์–ด์—์„œ 2๊ฐœ๋ฅผ ๊ทผ๊ฑฐ ์žˆ๊ฒŒ ๋บ๋‹ค([ADR-004](https://github.com/yenachang924/bbangkeep/blob/main/docs/adr/004-atomic-update-inventory.md)). ๋บ€ ์ด์œ ์™€ "์ธ์Šคํ„ด์Šค 2๋Œ€+๋ฉด ์žฌ๊ฒ€ํ† "๋ฅผ ๊ฐ™์ด ์ ์–ด์•ผ ๋บ€ ๊ฒƒ์ด ๋œ๋‹ค. +- ๊ฒฐ์ •๋งˆ๋‹ค **์žฌ๊ฒ€ํ†  ์กฐ๊ฑด**์„ ์ ์–ด๋‘๋‹ˆ "์™œ ์ด๋ ‡๊ฒŒ ํ–ˆ์ง€?"๊ฐ€ "์ด ์กฐ๊ฑด์ด ๋ฐ”๋€Œ๋ฉด ๋‹ค์‹œ ๋ณธ๋‹ค"๋กœ ๋ฐ”๋€๋‹ค. + +## 4. ๋‹ค์Œ ์ฃผ + +- SQLite ์“ฐ๊ธฐ ํ•œ๊ณ„ ์‹ค์ธก โ†’ Postgres ์ „ํ™˜ โ†’ Vercel ๋ฐฐํฌ(ํŒŒ์ผ๋Ÿฟ ๊ฐ€๊ฒŒ ์•ž์— ์„ธ์šธ ์ƒํƒœ) +- ํ‚ฌ ๊ธฐ์ค€: ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์—์„œ ์˜ค๋ฒ„์…€ 1๊ฑด์ด๋ฉด ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์ค‘๋‹จ diff --git a/members/yenachang924/week05.md b/members/yenachang924/week05.md new file mode 100644 index 0000000..23aa901 --- /dev/null +++ b/members/yenachang924/week05.md @@ -0,0 +1,27 @@ +# Week 05 โ€“ ๊ฐœ๋ฐœ 2: ๋ฐฐํฌ์™€ ์ธ์ˆ˜์ธ๊ณ„ ๋ฌธ์„œ + +- ์ž‘์„ฑ์ž: yenachang924 + +> ์ด๋ฒˆ ์ฃผ ํ•œ ์ค„: **"๋ฐฐํฌ๋Š” ๋์ด ์•„๋‹ˆ๋ผ ์กฐ๊ฑด์˜ ๋ณ€๊ฒฝ์ด๋‹ค. SQLite์˜ ์žฌ๊ฒ€ํ†  ์กฐ๊ฑด์ด ๋ฐœ๋™ํ–ˆ๋‹ค."** + +## 1. ํ•œ ๊ฒƒ + +- **Postgres ์ „ํ™˜ + Vercel ๋ฐฐํฌ**. [ADR-003](https://github.com/yenachang924/bbangkeep/blob/main/docs/adr/003-sqlite-prisma6.md)์— ์ ์–ด๋‘” ์ „ํ™˜ ์กฐ๊ฑด(๋ฐฐํฌ ์‹œ์ , ํŒŒ์ผ DB ๋น„์˜์†)์ด ๋ฐœ๋™. ์Šคํ‚ค๋งˆ provider ์ „ํ™˜, raw SQL ์‹๋ณ„์ž ์ธ์šฉ, Vercel ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ. ์šด์˜ `public` / ๋กœ์ปฌ `dev` / ํ…Œ์ŠคํŠธ `bk_test` **์Šคํ‚ค๋งˆ 3๋‹จ ๊ฒฉ๋ฆฌ**. ๋ผ์ด๋ธŒ: https://bbangkeep.vercel.app +- **CI๋ฅผ ์ปจํ…Œ์ด๋„ˆ Postgres๋กœ**. ์šด์˜ DB๋ฅผ CI์—์„œ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๋„๋ก ์„œ๋น„์Šค ์ปจํ…Œ์ด๋„ˆ๋กœ ์ „ํ™˜. `demo:reset`์— ์šด์˜ ์Šคํ‚ค๋งˆ ๊ฐ€๋“œ(public์ด๋ฉด ์ค‘๋‹จ, ์šฐํšŒ๋Š” ๋ช…์‹œ ํ”Œ๋ž˜๊ทธ). +- **๋””์ž์ธ ์ „๋ฉด ๊ฐœํŽธ**. ํ† ์Šค ๋””์ž์ธ ์–ธ์–ด(๋ผ์ดํŠธ) + ๋‹คํฌ ํ…Œ๋งˆ๋ฅผ ํ† ํฐ ๋ฐ˜์ „๋งŒ์œผ๋กœ. ํ•˜๋‹จ ํƒญ ๋‚ด๋น„. +- **ADR-002์— '๊ณ„ํš๋œ ๋ถ„๋ฆฌ' ์กฐ๊ฑด ์ถ”๊ฐ€**. ๊ฒฐ์ œ, ์žฌ๊ณ  ๋„๋ฉ”์ธ์„ Spring์œผ๋กœ ์ด์‹ํ•ด ๊ฐ™์€ ํ…Œ์ŠคํŠธ, ๊ฐ™์€ ์ˆซ์ž๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ์žฌ๊ฒ€ํ†  ์กฐ๊ฑด์œผ๋กœ ๋ช…์‹œ. +- **HANDOFF.md**. ํ™˜๊ฒฝ, ๊ทœ์•ฝ, ์šฐ์„ ์ˆœ์œ„ ๋ฐฑ๋กœ๊ทธ, ๊ธˆ์ง€์‚ฌํ•ญ์„ ํ•œ ๋ฌธ์„œ๋กœ. "๋‹ค์Œ์— ์ด ๋ ˆํฌ๋ฅผ ์—ฌ๋Š” ์—์ด์ „ํŠธ/์‚ฌ๋žŒ์ด ์ด๊ฒƒ๋งŒ ์ฝ์œผ๋ฉด ๋œ๋‹ค"๋ฅผ ๋ชฉํ‘œ๋กœ. + +## 2. ๋ง‰ํžŒ ๊ฒƒ + +- ์›๊ฒฉ Render DB(์‹ฑ๊ฐ€ํฌ๋ฅด)๋กœ ๋กœ์ปฌ ํ…Œ์ŠคํŠธ๋ฅผ ๋Œ๋ฆฌ๋ฉด ๋™์‹œ์„ฑ ํ…Œ์ŠคํŠธ๊ฐ€ 60์ดˆ ํƒ€์ž„์•„์›ƒ. ํ™˜๊ฒฝ ๋ฌธ์ œ. CI๋Š” ์ปจํ…Œ์ด๋„ˆ๋ผ ๊ทธ๋ฆฐ. ๋กœ์ปฌ `.env`์˜ `?schema=dev`์™€ ํ…Œ์ŠคํŠธ์˜ `&schema=bk_test`๊ฐ€ ๊ฒน์น˜๋ฉด Prisma๊ฐ€ ์ฒซ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์“ฐ๋Š” ํ•จ์ •(6์ฃผ์ฐจ์— '๊ต์ฒด+public ์ฐจ๋‹จ'์œผ๋กœ ๊ณ ์นจ). + +## 3. ๋ฐฐ์šด ๊ฒƒ + +- ์ „ํ™˜ ์กฐ๊ฑด์„ ๋ฏธ๋ฆฌ ์ ์–ด๋‘๋ฉด ์ „ํ™˜์ด **์‚ฌ๊ฑด์ด ์•„๋‹ˆ๋ผ ์ ˆ์ฐจ**๊ฐ€ ๋œ๋‹ค. +- CI๊ฐ€ ์šด์˜ DB๋ฅผ ๋ณด๋Š” ๊ตฌ์กฐ๋Š” "๋น ๋ฅด๋‹ค"๊ฐ€ ์•„๋‹ˆ๋ผ "์œ„ํ—˜ํ•˜๋‹ค"์˜€๋‹ค. ๊ฒฉ๋ฆฌ์— ๋“œ๋Š” 1๋ถ„์ด ์‹ธ๋‹ค. + +## 4. ๋‹ค์Œ ์ฃผ + +- ์‚ฌ์žฅ๋‹˜ AI ๋น„์„œ(ํ•œ ์ค„ ๋ฐœํ–‰). LLM๋„ PaymentGateway์ฒ˜๋Ÿผ ๊ฒŒ์ดํŠธ์›จ์ด๋กœ, ์ดˆ์•ˆ์€ ์‚ฌ๋žŒ์ด ์Šน์ธ +- ๋ฐ๋ชจ๋ฐ์ด(8/23) ์‹œ์—ฐ ์ค€๋น„ diff --git a/members/yenachang924/week06.md b/members/yenachang924/week06.md new file mode 100644 index 0000000..ecd7dba --- /dev/null +++ b/members/yenachang924/week06.md @@ -0,0 +1,21 @@ +# Week 06 ๋งˆ๋ฌด๋ฆฌ + +- ์ž‘์„ฑ์ž: yenachang924 + +## ํ•œ ๊ฒƒ +- HANDOFF.md์™€ ํ”„๋กฌํ”„ํŠธ ํ•œ ์žฅ์œผ๋กœ ์ƒˆ ์„ธ์…˜์„ ์‹œ์ž‘ํ•˜๊ณ , ๊ธฐ๋Šฅ์„ PR ๋‹จ์œ„๋กœ ๋ฐ›์•„ ์ฝ๊ณ  ๋จธ์ง€ํ–ˆ๋‹ค. ์‚ฌ์žฅ๋‹˜ AI ๋น„์„œ, PortOne ์›นํ›…, MCP ์„œ๋ฒ„, ์•Œ๋ฆผ ๊ฒŒ์ดํŠธ์›จ์ด, ๋ณด๋“œ ๋ชจ๋“œ, E2E, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜, HTTP ๊ณ„์•ฝ, Spring ๊ณจ๊ฒฉ, ํด๋” ๋ถ„๋ฆฌ(frontend, backend, docs), ๋””์ž์ธ ์ •๋ฆฌ. +- ์ฝ”๋“œ ๋ฆฌ๋ทฐ์™€ ๋ณด์•ˆ ๋ฆฌ๋ทฐ๋ฅผ ๋…๋ฆฝ ์„ธ์…˜ 2๊ฐœ๋กœ ๋Œ๋ฆฌ๊ณ  ๊ฐ™์€ ๋‚  ๋ฐ˜์˜ํ–ˆ๋‹ค. ์ทจ์†Œ ๊ฒฝ๋กœ์— ์กฐ๊ฑด๋ถ€ ๊ฐฑ์‹ ์ด ์—†๋˜ ๊ฒƒ, ํ™˜๋ถˆ ์‹คํŒจ๊ฐ€ ๋ณด์ด์ง€ ์•Š๋˜ ๊ฒƒ ๋“ฑ. +- ๋ฐฐํฌ ๋’ค ๋А๋ฆฐ ์›์ธ์„ ์ฐพ์•˜๋‹ค. ์„œ๋ฒ„ ํ•จ์ˆ˜๋Š” ๋ฏธ๊ตญ, DB๋Š” ์‹ฑ๊ฐ€ํฌ๋ฅด์˜€๋‹ค. ๋ฆฌ์ „ ์„ค์ • ํ•œ ์ค„๋กœ ํ•ด๊ฒฐ. +- README๋ฅผ "์–ด๋–ค ๊ธฐ์ˆ ์„ ์™œ ์ผ๋‚˜" ํ‘œ๋กœ ๋‹ค์‹œ ์ผ๋‹ค. + +## ๋ง‰ํžŒ ๊ฒƒ +- ์‚ฌ์šฉ์ž๊ฐ€ ์•„์ง ์—†๋‹ค. +- ๋ฐ๋ชจ ๊ณ„์ • ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ต์ฒด, ์‹œํฌ๋ฆฟ ์ •๋ฆฌ๋Š” ์‚ฌ๋žŒ ๋ชซ์œผ๋กœ ๋‚จ์•„ ์žˆ๋‹ค. + +## ๋ฐฐ์šด ๊ฒƒ +- ๋ฌธ์„œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ๊ณผ ๋ฌธ์„œ๋กœ ์ผ์ด ๋œ๋‹ค๋Š” ๊ฒƒ์€ ๋‹ค๋ฅด๋‹ค. HANDOFF๊ฐ€ ์ž‘๋™ํ•˜๋Š”์ง€๋Š” ์ƒˆ ์„ธ์…˜์ด ์‹ค์ œ๋กœ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด์•ผ ์•ˆ๋‹ค. +- ์—์ด์ „ํŠธ์—๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ง€์‹œ๋Š” "์–ด๋–ป๊ฒŒ"๊ฐ€ ์•„๋‹ˆ๋ผ "ํ•˜์ง€ ๋ง ๊ฒƒ"์ด์—ˆ๋‹ค. +- ๊ฐ™์€ ๋ชจ์–‘(๊ฒŒ์ดํŠธ์›จ์ด)์„ ์„ธ ๋ฒˆ ์“ฐ๋‹ˆ ์„ธ ๋ฒˆ์งธ๋ถ€ํ„ฐ๋Š” ๋‚ด๊ฐ€ ๋จผ์ € ๊ตฌ์กฐ๋ฅผ ๋งํ–ˆ๋‹ค. + +## ๋‹ค์Œ +์จ ์ค„ ๊ฐ€๊ฒŒ ํ•œ ๊ณณ ์ฐพ๊ธฐ. Spring approve, cancel์€ ๋‚ด ์†์œผ๋กœ.