๐Ÿ“… ์นด์นด์˜คํ†ก์œผ๋กœ ๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋”๋ฅผ ์ œ์–ดํ•˜๋Š” AI ๋ด‡ ๊ธฐํšํ•˜๊ธฐ

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

์‹œ๋„ํ•˜๊ณ ์ž ํ–ˆ๋˜ ๊ฒƒ๊ณผ ๊ทธ ์ด์œ 

๋งค๋ฒˆ ๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋” ์•ฑ์„ ์—ด์–ด์„œ ์ผ์ •์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒŒ ๋ฒˆ๊ฑฐ๋กœ์› ์Šต๋‹ˆ๋‹ค.

  • "์˜ค๋Š˜ ์ผ์ • ๋ญ์ง€?" โ†’ ์•ฑ ์ผœ๊ธฐ โ†’ ๋กœ๊ทธ์ธ โ†’ ์บ˜๋ฆฐ๋” ํ™•์ธ

  • "๋‚ด์ผ 3์‹œ์— ๋ฏธํŒ… ์ถ”๊ฐ€ํ•ด์•ผ์ง€" โ†’ ์•ฑ ์ผœ๊ธฐ โ†’ ๋‚ ์งœ ์„ ํƒ โ†’ ์‹œ๊ฐ„ ์ž…๋ ฅ...

"์นดํ†ก์œผ๋กœ '์˜ค๋Š˜ ์ผ์ • ๋ณด์—ฌ์ค˜' ํ•œ๋งˆ๋””๋ฉด ๋๋‚˜๋ฉด ์–ผ๋งˆ๋‚˜ ์ข‹์„๊นŒ?"

์ด ์ƒ๊ฐ์—์„œ CaldBot(Calendar Bot) ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์นด์นด์˜คํ†ก์—์„œ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋Œ€ํ™”๋งŒ์œผ๋กœ ์ผ์ •์„ ์กฐํšŒํ•˜๊ณ , ์ถ”๊ฐ€ํ•˜๊ณ , ์ˆ˜์ •ํ•˜๊ณ , ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๋ด‡์„ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ์–ด์š”.

๋ชฉํ‘œ ๋Œ€ํ™” ์˜ˆ์‹œ:

๋‚˜: "์˜ค๋Š˜ ์ผ์ • ๋ญ์•ผ?"
๋ด‡: "๐Ÿ“… 2025๋…„ 11์›” 17์ผ (์›”) ์ผ์ •
     โ€ข 14:00-16:00 AI ์Šคํ„ฐ๋””
     โ€ข 18:00-19:00 ์ €๋… ์•ฝ์†"

๋‚˜: "๋‚ด์ผ ์˜คํ›„ 3์‹œ์— ์น˜๊ณผ ์˜ˆ์•ฝ ์ถ”๊ฐ€ํ•ด์ค˜"
๋ด‡: "โœ… ์ผ์ •์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค."

์ง„ํ–‰ ๋ฐฉ๋ฒ•

1๏ธโƒฃ ์‚ฌ์šฉํ•œ ๋„๊ตฌ

  • Claude Code: ์„ค๊ณ„ ๋ฌธ์„œ ์ž‘์„ฑ, ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„

  • Codex: ์„ค๊ณ„ ๊ฒ€์ฆ, ๋ณด์•ˆ/ํ™•์žฅ์„ฑ ๋ฆฌ๋ทฐ

  • FastAPI: 24/7 ์‹œ๊ฐ„ ๊ตฌ๋™ ๊ฐ€๋Šฅ ์„œ๋ฒ„


2๏ธโƒฃ Claude Code์™€ Codex ๊ต์ฐจ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค

์ด๋ฒˆ ์ฃผ๋Š” ์ฝ”๋“œ ์ž‘์„ฑ์ด ์•„๋‹Œ, ํƒ„ํƒ„ํ•œ ์„ค๊ณ„์„œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์ง‘์ค‘ํ–ˆ์–ด์š”.

Step 0: ํ”„๋กœ์ ํŠธ ๊ฐœ์š” ๋ฐ ์ดˆ๊ธฐ ์„ค์ •

  • ์„œ๋ฒ„ ํ™˜๊ฒฝ ๊ตฌ์ถ•

  • FastAPI ๊ธฐ๋ณธ ์„ค์น˜

  • Systemd ์„œ๋น„์Šค ๋“ฑ๋ก

Step 1: ์„ค๊ณ„์„œ ์ดˆ์•ˆ ์ž‘์„ฑ (Claude Code)
๋จผ์ € Claude Code์—๊ฒŒ ํ”„๋กœ์ ํŠธ ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๋„๋ก ํ–ˆ๋‹ต๋‹ˆ๋‹ค.

์‚ฌ์šฉํ•œ ํ”„๋กฌํ”„ํŠธ:

์นด์นด์˜คํ†ก์œผ๋กœ ๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋”๋ฅผ ์ œ์–ดํ•˜๋Š” ์ฑ—๋ด‡์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ ์š”๊ตฌ์‚ฌํ•ญ์„ ํฌํ•จํ•œ ์ƒ์„ธ ์„ค๊ณ„ ๋ฌธ์„œ(design.md)๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”:

1. ํ”„๋กœ์ ํŠธ ๊ฐœ์š” ๋ฐ ๋ชฉํ‘œ
2. ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ (๋ฉ”์‹ ์ €๋ด‡R โ†’ FastAPI โ†’ Google Calendar API)
3. ์ฃผ์š” ๊ธฐ๋Šฅ ๋ช…์„ธ (์ผ์ • ์กฐํšŒ/์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ)
4. ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ํ๋ฆ„ (LLM ํ™œ์šฉ)
5. ๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ
6. Phase๋ณ„ ๊ตฌํ˜„ ๊ณ„ํš

๊ฐ ์„น์…˜๋งˆ๋‹ค ๊ตฌ์ฒด์ ์ธ ๊ธฐ์ˆ ์  ๊ฒฐ์ • ์‚ฌํ•ญ์„ ํฌํ•จํ•ด์ฃผ์„ธ์š”.

๊ฒฐ๊ณผ:

  • design.md ํŒŒ์ผ ์ƒ์„ฑ (์•ฝ 500์ค„ ๋ถ„๋Ÿ‰)

  • ์‹œ์Šคํ…œ ๊ตฌ์กฐ๋„, API ์—”๋“œํฌ์ธํŠธ ์„ค๊ณ„, Phase๋ณ„ ๋กœ๋“œ๋งต๊นŒ์ง€ ํฌํ•จ

  • ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์—ˆ์–ด์š”


๐Ÿ” Step 2: ์„ค๊ณ„ ๊ฒ€์ฆ (Codex์— ๋ฆฌ๋ทฐ ์š”์ฒญ)

Claude Code๊ฐ€ ๋งŒ๋“  ์„ค๊ณ„์„œ๋ฅผ Codex์—๊ฒŒ ๋ฆฌ๋ทฐ์‹œ์ผฐ์–ด์š”.

์‚ฌ์šฉํ•œ ํ”„๋กฌํ”„ํŠธ:

[design.md ๋‚ด์šฉ ์ „์ฒด ์ฒจ๋ถ€]

์œ„ ์„ค๊ณ„์„œ๋ฅผ ๊ผผ๊ผผํžˆ ๊ฒ€ํ† ํ•˜๊ณ  ๋‹ค์Œ ๊ด€์ ์—์„œ ํ”ผ๋“œ๋ฐฑํ•ด์ฃผ์„ธ์š”:

1. ๋ณด์•ˆ ์ทจ์•ฝ์ 
2. ํ™•์žฅ์„ฑ ๋ฌธ์ œ
3. ๋†“์นœ ์—ฃ์ง€์ผ€์ด์Šค
4. ๋” ๋‚˜์€ ์„ค๊ณ„ ๋Œ€์•ˆ

๊ฐ ํ•ญ๋ชฉ๋งˆ๋‹ค ๊ตฌ์ฒด์ ์ธ ์˜ˆ์‹œ์™€ ๊ฐœ์„ ์•ˆ์„ ์ œ์‹œํ•ด์ฃผ์„ธ์š”.

Codex๊ฐ€ ์ง€์ ํ•œ ์ฃผ์š” ์ด์Šˆ:

๐Ÿšจ ๋ณด์•ˆ ์ทจ์•ฝ์ 
1. HTTP/HTTPS ํ˜ผ์šฉ ์œ„ํ—˜
   โ†’ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ HTTP ์“ฐ๋‹ค๊ฐ€ ํ”„๋กœ๋•์…˜์—์„œ๋„ ์‹ค์ˆ˜ํ•  ์ˆ˜ ์žˆ์Œ
   โ†’ HTTPS๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ, HTTP๋Š” ์ฃผ์„ ์ฒ˜๋ฆฌ

2. Webhook Secret ๊ฒ€์ฆ ์—†์Œ
   โ†’ ์•„๋ฌด๋‚˜ ์„œ๋ฒ„์— ๋ฉ”์‹œ์ง€ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ
   โ†’ ํ† ํฐ ๊ฒ€์ฆ ํ•„์ˆ˜

โš ๏ธ ํ™•์žฅ์„ฑ ๋ฌธ์ œ
1. ๋‹ค์ค‘ ๊ณ„์ • ๋งคํ•‘ ์ „๋žต ๋ถ€์žฌ
   โ†’ user1/user2 ํŒŒ์ผ๋งŒ ์žˆ๊ณ , ๋ˆ„๊ฐ€ ์–ด๋–ค ๊ณ„์ • ์“ธ์ง€ ๋งคํ•‘ ์•ˆ ๋จ
   โ†’ UserProfile ํ…Œ์ด๋ธ” ํ•„์š”

2. LLM Fallback ์ „๋žต ์—†์Œ
   โ†’ LLM API ๋‹ค์šด๋˜๋ฉด ๋ด‡ ์ „์ฒด ๋‹ค์šด
   โ†’ Rule-based Fallback ํ•„์ˆ˜

๐Ÿ’ก ๋†“์นœ ์—ฃ์ง€์ผ€์ด์Šค
1. ๋Œ€ํ™” ์ƒํƒœ ๊ด€๋ฆฌ ์—†์Œ
   โ†’ "๊ทธ๋ž˜๋„ ์ถ”๊ฐ€ํ• ๊นŒ์š”?" โ†’ "์‘" (๋งฅ๋ฝ ์œ ์ง€ ์•ˆ ๋จ)
   โ†’ Conversation State ํ•„์š”

2. ์ถฉ๋Œ ์ฒดํฌ ๋กœ์ง ๋ˆ„๋ฝ
   โ†’ ์ด๋ฏธ 3์‹œ์— ์ผ์ • ์žˆ๋Š”๋ฐ ๋˜ ์ถ”๊ฐ€๋จ

๐Ÿ”„ Step 3: ์„ค๊ณ„์„œ ์—…๋ฐ์ดํŠธ ๋ฐ ์ตœ์ข… ๊ฒ€์ฆ

์—ฌ๋Ÿฌ ์ฐจ๋ก€์˜ ๊ต์ฐจ ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ์„ค๊ณ„์„œ ํ’ˆ์งˆ์„ ํฌ๊ฒŒ ๋†’์˜€์–ด์š”!

์ฃผ์š” ๊ฐœ์„ ์‚ฌํ•ญ:

  • โœ… ๋ณด์•ˆ ๊ฐ•ํ™”: HTTPS ๊ธฐ๋ณธ, Webhook Secret, IP ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ

  • โœ… LLM Fallback ์ „๋žต: LLM ์‹คํŒจ ์‹œ Rule-based Parser๋กœ ๋Œ€์ฒด

  • โœ… ๋Œ€ํ™” ์ƒํƒœ ๊ด€๋ฆฌ: Conversation State (In-Memory โ†’ Redis)

  • โœ… ๋‹ค์ค‘ ๊ณ„์ • ๋งคํ•‘: UserProfile ํ…Œ์ด๋ธ”๋กœ sender โ†’ calendar_id ๋งคํ•‘

  • โœ… ๊ฐ์‚ฌ ๋กœ๊ทธ: ๋ˆ„๊ฐ€, ์–ธ์ œ, ๋ฌด์—‡์„ ํ–ˆ๋Š”์ง€ SQLite์— ๊ธฐ๋ก

  • โœ… ๊ตฌ์กฐํ™”๋œ ๋กœ๊น…: JSON ํ˜•์‹์œผ๋กœ ๋””๋ฒ„๊น… ์šฉ์ดํ•˜๊ฒŒ


3๏ธโƒฃ ํ˜„์žฌ๊นŒ์ง€์˜ ๊ฒฐ๊ณผ๋ฌผ

๐Ÿ“„ design.md (์ตœ์ข…๋ณธ)

  • ์ด ์•ฝ 1,700์ค„

  • ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ

  • API ๋ช…์„ธ์„œ

  • ๋ณด์•ˆ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  • Phase๋ณ„ ๊ตฌํ˜„ ๊ณ„ํš (Week 1-5)

  • ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค

  • ์˜ˆ์ƒ ์ด์Šˆ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

๐Ÿ“‹ dev-history.md (๊ฐœ๋ฐœ ํžˆ์Šคํ† ๋ฆฌ)

  • ํ”„๋กœ์ ํŠธ ์‹œ์ž‘๋ถ€ํ„ฐ ํ˜„์žฌ๊นŒ์ง€์˜ ๋ชจ๋“  ์˜์‚ฌ๊ฒฐ์ • ๊ธฐ๋ก

  • ๊ธฐ์ˆ  ์Šคํƒ ํ™•์ • ๊ณผ์ •

  • ์„ค๊ณ„ ๊ฐœ์„  ํžˆ์Šคํ† ๋ฆฌ


๊ฒฐ๊ณผ์™€ ๋ฐฐ์šด ์ 

1๏ธโƒฃ AI ๊ต์ฐจ ๊ฒ€์ฆ์˜ ์ค‘์š”์„ฑ โญโญโญ

๋‹จ ํ•˜๋‚˜์˜ AI Agent๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค.

Claude Code๋งŒ ์‚ฌ์šฉํ–ˆ์„ ๋•,

  • ๋ณด์•ˆ ์ด์Šˆ๋ฅผ ๋†“์นจ (Webhook Secret ๊ฒ€์ฆ ์—†์Œ)

  • ํ™•์žฅ์„ฑ ๊ณ ๋ ค ๋ถ€์กฑ (๋‹ค์ค‘ ๊ณ„์ • ๋งคํ•‘ ์ „๋žต ๋ถ€์žฌ)

  • ์—ฃ์ง€์ผ€์ด์Šค ๋ˆ„๋ฝ (๋Œ€ํ™” ์ƒํƒœ ๊ด€๋ฆฌ, LLM Fallback ์—†์Œ)

์ตœ์†Œ ๋‘ ๊ฐœ์˜ AI๋ฅผ ๋ณ‘ํ–‰ํ•˜๋ฉด์„œ ์„œ๋กœ์˜ ๊ฒฐ๊ณผ๋ฌผ์„ ๋น„๊ต ํ‰๊ฐ€ํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉด์„œ ๊ฒฐ๊ณผ๋ฌผ์˜ ํ€„๋ฆฌํ‹ฐ๋ฅผ ๋†’์ด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ต์ฐจ ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค:

1. Claude Code โ†’ ์ดˆ์•ˆ ์ž‘์„ฑ
2. Codex โ†’ ๋น„ํŒ์  ๋ฆฌ๋ทฐ
3. Claude Code โ†’ ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜
4. Codex โ†’ ์žฌ๊ฒ€์ฆ
(ํ•„์š”์‹œ ๋ฐ˜๋ณต)

์ด๋ ‡๊ฒŒ ํ•˜๋‹ˆ๊นŒ ์ข‹์•˜๋˜ ์ :

  • ํ•œ AI๊ฐ€ ๋†“์นœ ๋ถ€๋ถ„์„ ๋‹ค๋ฅธ AI๊ฐ€ ์žก์•„๋ƒ„

  • ์„œ๋กœ ๋‹ค๋ฅธ ๊ด€์ ์—์„œ ์„ค๊ณ„๋ฅผ ๋ฐ”๋ผ๋ด„

    • Claude Code: ๊ตฌ์กฐ์ , ์ฒด๊ณ„์  ์„ค๊ณ„ - ์ž‘์„ฑ์ž, ์„ค๊ณ„์ž, ์‹ค๋ฌด์ž ์—ญํ• 

    • Codex: ์‹ค์šฉ์ , ๋น„ํŒ์  ๊ฒ€์ฆ - ๊ฐ๋… ๋ฐ ์ƒ์‚ฌ ์—ญํ• 

  • ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ์˜ ์™„์„ฑ๋„๊ฐ€ 2๋ฐฐ ์ด์ƒ ๋†’์•„์ง

์—ญํ•  ๋ถ„๋‹ด:

  • Claude Code: ์ž‘์„ฑ์ž (์ดˆ์•ˆ ์ž‘์„ฑ, ๊ตฌ์กฐ ์„ค๊ณ„)

  • Codex: ๊ฒ€์ฆ์ž (๋น„ํŒ, ๋ณด์™„์  ์ œ์‹œ)

  • ์ด๋ ‡๊ฒŒ ์—ญํ• ์„ ๋‚˜๋ˆ„๋‹ˆ๊นŒ ํ›จ์”ฌ ํšจ์œจ์ ! ๐Ÿ‘

โ†’ ํ•ต์‹ฌ ๊ฟ€ํŒ: ์ง€์†์ ์ธ ๊ต์ฐจ ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฑฐ์ณ ์„ค๊ณ„ ํ’ˆ์งˆ์„ ๋†’์—ฌ์•ผ ํ–ฅํ›„ ๋ถˆํ•„์š”ํ•œ ๋””๋ฒ„๊น…์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!


2๏ธโƒฃ ๊ธฐํš์„œ ๋‹จ๊ณ„๊ฐ€ 80%๋‹ค

์ด๋ฒˆ ์ฃผ๋Š” ์ฝ”๋“œ ํ•œ ์ค„ ์•ˆ ์งฐ๋Š”๋ฐ, ์˜คํžˆ๋ ค ์ด๊ฒŒ ์ œ์ผ ์ค‘์š”ํ•œ ์‹œ๊ฐ„์ด์—ˆ์–ด์š”.

์ž˜๋ชป๋œ ์ ‘๊ทผ (๊ณผ๊ฑฐ์˜ ๋‚˜):

"์ผ๋‹จ ์ฝ”๋“œ๋ถ€ํ„ฐ ์งœ๊ณ  ๋ณด์ž!"
โ†’ ๋‚˜์ค‘์— ๊ตฌ์กฐ ์ „์ฒด๋ฅผ ๊ฐˆ์•„์—Ž๊ฒŒ ๋จ
โ†’ 3์ผ์น˜ ์ž‘์—…์ด ๋‚ ์•„๊ฐ

์˜ฌ๋ฐ”๋ฅธ ์ ‘๊ทผ (ํ˜„์žฌ):

1์ฃผ์ฐจ: design.md ์™„์„ฑ (๊ต์ฐจ ๊ฒ€์ฆ ํฌํ•จ)
2์ฃผ์ฐจ ์ดํ›„: ๋‹จ๊ณ„๋ณ„ ๊ตฌํ˜„

๊ธฐํš์„œ๋ฅผ ํƒ„ํƒ„ํ•˜๊ฒŒ ๋งŒ๋“ค๋ฉด:

  • ์ฝ”๋“œ ์ž‘์„ฑ์ด ์˜คํžˆ๋ ค ๋น ๋ฆ„ (์„ค๊ณ„์„œ ๋ณด๊ณ  ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„)

  • ๋ฒ„๊ทธ๊ฐ€ ์ ์Œ (์—ฃ์ง€์ผ€์ด์Šค๋ฅผ ๋ฏธ๋ฆฌ ๊ณ ๋ ค)

  • ํ˜ผ์ž ๊ฐœ๋ฐœํ•ด๋„ ๊ธธ์„ ์žƒ์ง€ ์•Š์Œ

โ†’ ๊ฟ€ํŒ: ์ฝ”๋“œ ์งœ๊ธฐ ์ „์— AIํ•œํ…Œ "์ƒ์„ธ ์„ค๊ณ„ ๋ฌธ์„œ ์ž‘์„ฑํ•ด์ค˜"๋ถ€ํ„ฐ ์‹œํ‚ค์„ธ์š”! ๊ทธ๋ฆฌ๊ณ  ๋ฐ˜๋“œ์‹œ ๋‹ค๋ฅธ AI๋กœ ๊ฒ€์ฆํ•˜์„ธ์š”!


3๏ธโƒฃ ๋ณด์•ˆ์€ ๋‚˜์ค‘์ด ์•„๋‹ˆ๋ผ ์ง€๊ธˆ!

์ฒ˜์Œ์—” "์ผ๋‹จ ์ž‘๋™๋งŒ ํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ , ๋ณด์•ˆ์€ ๋‚˜์ค‘์—..." ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, Codex๊ฐ€ ๊ฒฝ๊ณ ํ–ˆ์–ด์š”:

Codex์˜ ๊ฒฝ๊ณ :

"๊ฐœ์ธ ์บ˜๋ฆฐ๋” ๋ฐ์ดํ„ฐ๋Š” ๋ฏผ๊ฐ ์ •๋ณด์ž…๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋ณด์•ˆ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์ฝ”๋“œ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ์งœ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ์„ค๊ณ„์— ํฌํ•จํ•˜์„ธ์š”."

design.md์— ํฌํ•จ๋œ ๋ณด์•ˆ ์ฒดํฌ๋ฆฌ์ŠคํŠธ:

  • โœ… HTTPS ์ ์šฉ (ํ”„๋กœ๋•์…˜ ํ•„์ˆ˜)

  • โœ… Webhook Secret ํ† ํฐ ๊ฒ€์ฆ

  • โœ… IP ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ (์„ ํƒ)

  • โœ… OAuth ํ† ํฐ ์•ˆ์ „ ์ €์žฅ (ํ™˜๊ฒฝ๋ณ€์ˆ˜)

  • โœ… ๋กœ๊ทธ์— ๋ฏผ๊ฐ์ •๋ณด ์ œ์™ธ (ํ† ํฐ ๋งˆ์Šคํ‚น)

โ†’ ๊ฟ€ํŒ: ๊ฐœ์ธ์ •๋ณด ๋‹ค๋ฃจ๋Š” ํ”„๋กœ์ ํŠธ๋Š” ์„ค๊ณ„ ๋‹จ๊ณ„๋ถ€ํ„ฐ ๋ณด์•ˆ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ํ•„์ˆ˜!


4๏ธโƒฃ Phase๋ณ„ ๊ตฌํ˜„ ์ „๋žต

๋ชจ๋“  ๊ธฐ๋Šฅ์„ ํ•œ๋ฒˆ์— ๋งŒ๋“ค๋ ค๊ณ  ํ•˜๋ฉด ์••๋„๋‹นํ•ฉ๋‹ˆ๋‹ค.

Phase ๊ตฌ๋ถ„ ์ „๋žต:

  • Week 1: ๊ธฐํš ๋ฐ ์„ค๊ณ„ (โ† ํ˜„์žฌ)

  • Week 2: ์ผ์ • ์กฐํšŒ๋งŒ (MVP)

  • Week 3: ์ผ์ • ์ถ”๊ฐ€ (LLM ํŒŒ์‹ฑ)

  • Week 4: ์ผ์ • ์ˆ˜์ •/์‚ญ์ œ

  • Week 5: ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ (๊ฐ์‚ฌ ๋กœ๊ทธ, ๊ตฌ์กฐํ™”๋œ ๋กœ๊น…)

๊ฐ Phase๋งˆ๋‹ค:

  • ์ž‘๋™ํ•˜๋Š” ์ƒํƒœ๋กœ ์™„์„ฑ

  • ๋ฐ”๋กœ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ

  • ๋‹ค์Œ Phase๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ™•์žฅ

โ†’ ๊ฟ€ํŒ: ๊ธฐํš์„œ๋Š” ํƒ„ํƒ„ํ•˜๊ฒŒ, ๊ตฌํ˜„์€ ๋‹จ๊ณ„๋ณ„๋กœ!


๐ŸŽฏ ๋‹ค์Œ์— ํ•  ์ผ

Week 2 ๊ณ„ํš: Phase 1 ๊ตฌํ˜„ (์ผ์ • ์กฐํšŒ)

  • Google Calendar API ์—ฐ๋™

  • ๋ฉ”์‹ ์ €๋ด‡R ์—ฐ๊ฒฐ

  • "์˜ค๋Š˜ ์ผ์ • ๋ณด์—ฌ์ค˜" ์ž‘๋™ ํ™•์ธ

Week 3 ์ดํ›„:

  • ์ผ์ • ์ถ”๊ฐ€ ๊ธฐ๋Šฅ (์ž์—ฐ์–ด ํŒŒ์‹ฑ)

  • ์ถฉ๋Œ ์ฒดํฌ

  • ์ผ์ • ์ˆ˜์ •/์‚ญ์ œ

  • ๊ฐ์‚ฌ ๋กœ๊ทธ ๋ฐ ๊ตฌ์กฐํ™”๋œ ๋กœ๊น…

๋งˆ์น˜๋ฉฐ...

ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€:

  1. AI ๊ต์ฐจ ๊ฒ€์ฆ์€ ํ•„์ˆ˜! ์ตœ์†Œ 2๊ฐœ ์ด์ƒ์˜ AI๋กœ ์„œ๋กœ ๊ฒ€์ฆํ•˜์„ธ์š”.

  2. ๊ธฐํš์ด 80% ์ฝ”๋“œ ์งœ๊ธฐ ์ „์— ํƒ„ํƒ„ํ•œ ์„ค๊ณ„์„œ๋ถ€ํ„ฐ!

  3. ๋ณด์•ˆ์€ ์ง€๊ธˆ! ๋‚˜์ค‘์œผ๋กœ ๋ฏธ๋ฃจ์ง€ ๋งˆ์„ธ์š”.

  4. Phase๋ณ„๋กœ ๊ตฌํ˜„ ํ•œ๋ฒˆ์— ๋‹ค ํ•˜๋ ค๊ณ  ํ•˜์ง€ ๋งˆ์„ธ์š”.

๊ธด ๊ธ€ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!


#FastAPI #GoogleCalendarAPI #๋ฉ”์‹ ์ €๋ด‡R #ClaudeCode #Codex #AI๊ต์ฐจ๊ฒ€์ฆ

4
5๊ฐœ์˜ ๋‹ต๊ธ€

๋‰ด์Šค๋ ˆํ„ฐ ๋ฌด๋ฃŒ ๊ตฌ๋…

๐Ÿ‘‰ ์ด ๊ฒŒ์‹œ๊ธ€๋„ ์ฝ์–ด๋ณด์„ธ์š”