์คํ๋ ๊ฐ๋ฐ ๋ก๊ทธ
์ด 58๊ฐ ํญ๋ชฉ ยท 19๊ฐ ์๋ฃ ยท 4๊ฐ ์งํ์ค ยท 34๊ฐ ์์
P0 โ ์ด๋ฒ ์ฃผ (์์ฐ)
์์ฑ ๋งํฌ ์ด์ค ์ฌ๋์ ์์
์ธํฐ๋ทฐ์ด ์ด๋ฆ ํฌํจํ๋๋ก ๋ณ๊ฒฝ
6๊ฐ ์๋ด ๋ฌธ๊ตฌ๋ก ์ ๋ฉด ๊ฐํธ
ํธํ์ค ๋ ์์ํ์๋ฉด ๋ฉ๋๋ค๋ก ๊ต์ฒด
๋ น์ทจ ํํฉ ํ์ธํ๊ธฐ๋ก ๋ณ๊ฒฝ
์ฒซ ๋ฉ์์ง ์ ์ก ์์ ๋ถํฐ ์์
์ฐ์๋จ์์ ํ๋จ์ผ๋ก ์ด๋
chat API ์์คํ ํ๋กฌํํธ ์์
๊ฐ ๋ฉ์์ง์ ์๊ฐ ํ์ (์คํ 3:24)
์ด์ผ๊ธฐ ๊ธฐ๋ก ๋ณด๊ธฐ โ /archive ์ฐ๊ฒฐ
๋ น์ โ ์ค๋์ค ๋ฒ๋ธ(์ฌ์/๋ณํ/์ญ์ ) โ ์ ์ก
๋ค์ค ์กฐ๊ฐ(์ค๋์ค+ํ ์คํธ) ๋์ ํ ์ ์ก ๋ฒํผ์ผ๋ก ํธ๋ฆฌ๊ฑฐ
๋ น์ ์ค ํ์ด๋จธ text-2xl๋ก ํ๋
Supabase Storage ์ ๋ก๋ + audio_chunks ํ ์ด๋ธ + Whisper segments ๋งคํ
P1 โ Phase 1 ์ด๋ฒ์ด๋ MVP (5์ 8์ผ)
ํ๋์ฝ๋ฉ โ ์ค์ ์ธํฐ๋ทฐ ๋ฐ์ดํฐ ๋ ๋๋ง
JSON ํ์ผ โ Supabase PostgreSQL
ID/PW ๋ก๊ทธ์ธ ๋ณดํธ
ํผ๋๋ฐฑ ํญ๋ชฉ ์น ์ค์๊ฐ ํ์
์นด์นด์ค SDK ์ฐ๋ ์๋ฃ, ํ ์คํธ ํ์
์นด์นด์ค (๊ตญ๋ด) + Google/Apple (ํด์ธ). NextAuth. F-027 ํตํฉ.
๋น์ฆ๋์ค ์ฑ๋ + ์๋ฆผ ํ ํ๋ฆฟ. ์ง์ฒ ์๋ฆผ, ๋ฆฌ๋ง์ธ๋, ๊ฒฐ๊ณผ ๋์ฐฉ ์๋ฆผ.
์ฌ์ง์ ์ ์ด์ ๋ํ ๋ก๋ + ๋ ์ง ๊ตฌ๋ถ์ + AI ๋งฅ๋ฝ ์ด์ด๋ฐ๊ธฐ. session_end ์ํ. Archive ์ด์ดํ๊ธฐ ๋ฐฐ๋. handleResume + PATCH /api/create-interview.
4๋จ๊ณ ํผ ๋์ ์์ฑ ํ๋ง๋๋ก ํ์ฑ. GPT-4o๊ฐ ๊ด๊ณ/์ด๋ฆ/์ฐ๋ น/์ง๋ฌธ/์ฐ๋ฝ์ฒ ์ถ์ถ. ๊ธฐ์กด ํผ์ ํด๋ฐฑ.
๋งํฌ ์์ฑ ์ ์๋ค์ด ์๋ฒ์ง์๊ฒ ์์ฑ ์ธ์ฌ. ์๋ฒ์ง ์ฒซ ์ง์ ์ AI ์ฒซ ๋ฉ์์ง ์ ์ ์ฌ์. greetingAudioUrl.
๋ํ ์๋ฃ ํ ์นด์นด์ค ์ฐ๊ฒฐ ๊ฐํ๊ฒ ์ ๋. ์ด์ดํ๊ธฐ/์๋ฆผ์ ํ์. ๊ฑด๋๋ฐ๊ธฐ๋ ์๊ณ ์ฐํ๊ฒ.
๋งํฌ ์์ฑ ํ ์นด์นด์ค ์ฐ๊ฒฐ ์ ๋. ๊ฒฐ๊ณผ ๋์ฐฉ ์นดํก ์๋ฆผ์ ํ์.
์ค๋์ ์ฌ๊ธฐ๊น์ง ํ: ์นด์นด์ค ์ฐ๊ฒฐ + ๋งํฌ ์ ์ฅ(๋์๊ฒ ๋ณด๋ด๊ธฐ) + ๊ธฐ๋ก ๋ณด๋ฌ๊ฐ๊ธฐ. session_end ์ํ.
Toss Payments ์ฐ๋ ์๋ฃ. ์๋ ์์ ํ์: 1) developers.tosspayments.com ๊ฐ์ + ํ ์คํธ ์์ ์์ฑ 2) .env.local์ NEXT_PUBLIC_TOSS_CLIENT_KEY=test_ck_xxx, TOSS_SECRET_KEY=test_sk_xxx ์ถ๊ฐ 3) Vercel ํ๊ฒฝ๋ณ์ ์ถ๊ฐ 4) /archive/{id} ํ๋จ ๋ฒํผ ํด๋ฆญ โ /payment/{id} โ ํ ์คํธ ์นด๋ ๊ฒฐ์ โ /payment/success ํ์ธ. ์์ธ: TOSS_PAYMENT_SETUP.md ์ฐธ์กฐ. ์ฝ๋: app/payment/[interviewId]/page.tsx, app/api/payment/confirm/route.ts, payment/success/fail ํ์ด์ง, ArchiveView.tsx CTA ์ถ๊ฐ๋จ. Interview.payment ํ์ ์ถ๊ฐ๋จ.
1์ธ ์ฑ๊ฒฉ ํ๋กํ์ผ. ์์ฃผ ์ฐ๋ ๋จ์ด, ๊ฐ์ ํจํด, ๊ฐ์น๊ด ๋งต, ์ธ์ ํ์๋ผ์ธ. GPT-4o ๋ถ์. 19,000์.
์ธํฐ๋ทฐ ์๋ฃ ์ ์์ฒญ์ ์ด๋ฉ์ผ๋ก archive ๋งํฌ ์ ์ก.
AI๊ฐ ๊ตฌ์ ์ฌ ์๋ฏธ ์ค๋ช + ๊ธฐ๋ณธ์ ๋ณด ์์ง (์๋ ์์ผ, ์ถ์์ง). ์ธ์ฌ ๋ น์ ์ฌ์ ํ, ๋ณธ ๋ํ ์ ์ ์งํ. ๋น์ ์ ๊ธฐ๋ก์ด ์ผ๋ง๋ ์ค์ํ์ง ์๋ฆฌ๊ธฐ.
์ด๋ฒ์ด๋ ์งํ ์ฆ์ ๋์ . ์ ์ ํ๋ ๋ถ์, ํผ๋ ์ถ์ (๋งํฌ ์์ฑ โ ๋ํ ์์ โ 1์ฑํฐ ์์ฃผ). ์ดํ ์ง์ ํ์ . ๋ฌด๋ฃ ํ๋ ์์.
Whisper vs Deepgram ํ๊ตญ์ด ํ์ง ๋น๊ต. ๋ ธ์ธ ๋ฐํ/์ฌํฌ๋ฆฌ ์ ํ๋ ๊ฒ์ฆ. ๋น์ฉ: $2.58 vs $3.60 (10์๊ฐ). ์๋: 2-3๋ฐฐ ๋น ๋ฆ. Nova-2 ๋ชจ๋ธ ํ ์คํธ.
PostHog ๋ฐ์ดํฐ ๊ธฐ๋ฐ. ๊ฐ ๋จ๊ณ๋ณ ์ดํ๋ฅ : ๋งํฌ ์์ โ ํด๋ฆญ โ ๋์ โ ์ฒซ ๋ฉ์์ง โ 5๋ถ โ 1์ฑํฐ ์์ฃผ. ๊ฐ์ ์ฐ์ ์์ ๊ฒฐ์ .
P2 โ Phase 2 ๊ด๊ณ ๋ถ์ (6~7์)
๋น๋ถ๊ฐ /archive/{id}๋ก ์ถฉ๋ถ. ์ธํฐ๋ทฐ 3๊ฑด ์ด์ ์ ํค๋ ๋๋กญ๋ค์ด ๋๋ /my
์๋ค์ด ์ฑํ ๋ฐฉ์ ๋ฉ์์ง ๊ฐ๋ฅ. Message.role์ requester ์ถ๊ฐ. AI๋ ์๋ฒ์ง์ ์ฃผ ๋ํ.
์ ์ฌ๋ณธ ๊ณต๋ ์์
์ค๋น ์ค ํ์ด์ง๋ง ์กด์ฌ
์๋ฒ์ง+์๋ค+AI ๊ฐ์ ์ฑํ ๋ฐฉ. Message.role์ requester ์ถ๊ฐ. 3๋ฒ์งธ ๋ฒ๋ธ ์์. F-023 ๊ตฌํ์ฒด.
์๋ค ์ ๊ทผ ์ ๋๊ธฐ์ค. ์๋ฒ์ง ํ๋ฝ์ผ๋ก ์ ์ฅ. ๋ด๋ณด๋ด๊ธฐ ๊ฐ๋ฅ. participants ์ํ polling.
2์ธ ์ด์ ์ธํฐ๋ทฐ ๋น๊ต. ๊ฐ์ ์ฌ๊ฑด ๋ค๋ฅธ ๊ธฐ์ต, ๊ฐ์ ์จ๋ ์ฐจ์ด, ๋ฐ๋ณต ํจํด. 29,000์.
interviews.messages JSONB โ messages ํ ์ด๋ธ. createMessage/getMessages/getMessageCount CRUD. ํด๋ฐฑ ๋ก์ง. MessageMeta (phase, topic, intensity). /api/messages ์๋ํฌ์ธํธ. Realtime ๊ตฌ๋ ์ Phase 2.
์๋ฒ์ง: ์ด์ดํ๊ธฐ ๋ฆฌ๋ง์ธ๋ (์ต๋ 3ํ). ์๋ค: ์ง์ฒ ์๋ฆผ (์์/์๋ฃ/์ถ๊ฐ). ๋ฐค 9์ ์ดํ ๊ธ์ง.
์ฝ๊ธฐ ์ ์ฉ โ ํธ์ง ๊ฐ๋ฅ. ์ฑํฐ ์ฌ๋ฐฐ์น, ์ ๋ชฉ ์์ , ๊ตฌ๊ฐ ์ญ์ /์ถ๊ฐ. ์ฑ ํธ์ง ์ธํฐํ์ด์ค. F-024์ ์ค์ฒด.
archive์์ '์๋ง๋ ์ด๋ํ๊ธฐ' โ ์ /request ์์ฑ. ๊ธฐ์กด ๊ฐ์กฑ ์ปจํ ์คํธ(์ด๋ฆ, ๊ด๊ณ) ์๋ ๋ฌผ๋ ค๋ฐ๊ธฐ.
AI๊ฐ ์ธ์ ์, ์ด ์๊ฐ, ์ฃผ์ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๋ณด๊ณ '์ฑ ์ผ๋ก ๋ง๋ค ์ ์์ ๋งํผ ์ด์ผ๊ธฐ๊ฐ ๋ชจ์์ต๋๋ค' ์ ์. 10์๊ฐ ๋ชฉํ.
A/B ํ ์คํธ ์๋ฃ ํ. /api/transcribe๋ฅผ Deepgram API๋ก ์ ํ. ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ์ค๋น. ํ์ ์๋ณ ๊ธฐ๋ฅ ํ์ฉ ๊ฐ๋ฅ.
๋จํก๋ฐฉ ๊ธฐ๋ฅ ์ ํ์. ํ์๋ณ ๋ฒ๋ธ ์์ ๊ตฌ๋ถ. ๊ฐ์ ๋ถ์ ๊ธฐ๋ฅ. speaker_label ์๋ ํ๊น .
Human Voice Graph ๊ตฌ์ถ ์์. entities๋ฅผ ๋ฒกํฐํํ์ฌ ์ ์ฅ. ์ ์ฌ ๊ฒฝํ ๋งค์นญ ('์ด๋ฐ ์ด์ผ๊ธฐ๋ฅผ ํ ๋ถ๋ค๋'). ์ฑํฐ ์ถ์ฒ ๊ณ ๋ํ.
P3 โ Phase 3 ๊ตฌ๋ + ์ค์ผ์ผ (8~9์)
์ 9,900์. ๋ฌด์ ํ ๋ํ, ๋ถ์, ์์ฑ ๋ณด๊ด. Toss ์ ๊ธฐ๊ฒฐ์ .
3์ธ ์ด์ ๊ฐ์กฑ ๋ถ์. ๋๊ฐ ์ด๋ค ๊ธฐ์ต์ ์ค์ฌ์ธ์ง, ์ธ๋ ๊ฐ ๊ฐ์น๊ด ๋ณํ ์๊ฐํ.
์์ด/์ผ๋ณธ์ด UI. ๋ํ๋ ํ๊ตญ์ด ์ ์ง. ํด์ธ ๊ตํฌ ์๋ ๊ฐ ํ๊ตญ ๋ถ๋ชจ๋๊ป ๋ณด๋ด๋ ์๋๋ฆฌ์ค.
ํด์ธ ์ฌ์ฉ์ ๋์. ์นด์นด์ค ์๋ ๊ตํฌ/์ธ๊ตญ์ธ ๊ฐ์กฑ. F-010 ํ์ฅ.
ํด์ธ ์์ฅ ์ง์ถ ์. Toss๋ ํ๊ตญ ์์ฅ ์ ์ง. ๊ตฌ๋ ๊ด๋ฆฌ ๊ฐ๋ ฅ. ๋ค๊ตญ์ด ๊ฒฐ์ ํ์ด์ง.
B2B (์์์, ์ข ์นํ, ๊ตํ ๋ฑ). SAML/OIDC SSO. ์กฐ์ง ๋จ์ ๊ด๋ฆฌ.
๋ก๋๋งต โ ๋ฏธ์
์ค์๊ฐ ์ด๋ฒคํธ ์คํธ๋ฆผ
์ ์ฒด ์ธํฐ๋ทฐ ๋งํฌ ๋ชฉ๋ก/์ํ
์ญํ ๋ณ ๊ฐ์ด๋
๋ณ๊ฒฝ ์ด๋ ฅ
3/5
- archive ํ์ด์ง ์ด๊ณ ํธ์ง ๊ธฐ๋ฅ (์ฝ๊ธฐ/ํธ์ง ๋ชจ๋ ์ ํ)
- /api/update-draft PATCH ์๋ํฌ์ธํธ (์ฑํฐ๋ณ ์ด๊ณ ์ ์ฅ)
- ๋์๋ณด๋ ์ค์๊ฐ ๋ฐ์ดํฐ ์ฐ๋ (/api/interviews GET)
- ๋์๋ณด๋ ๊ด๋ฆฌ ๋ฒํผ (์ด๊ณ ์์ฑ, ์ปจํ ์คํธ ์ด๊ธฐํ)
- /api/init-chapter-context POST ์๋ํฌ์ธํธ
- generateDraftPrompt ์์ ์ฌ์์ฑ (์ฐ๋๊ธฐ โ ๊ฐ์ ์ ๊ตฌ์กฐ)
- autobiography_draft ํ์ฑ ๋ฒ๊ทธ ์์ (Next.js ์บ์ ์ด์)
- archive/[id]/page.tsx: export const dynamic = "force-dynamic"
- lib/store.ts: getInterview() autobiography_draft ๋ช ์์ ์ ํ
- design/ ํด๋ ์ ์ฒด ๋๊ธฐํ (01-user-journey, 02-data-model, 03-interview-engine, 06-api, 07-decisions)
- supabase/migrations/20260305_transcript_corrected.sql: transcript_corrected ์ปฌ๋ผ ์์ฝ
2/26
- F-028 ๋ํ ์ด์ดํ๊ธฐ ์๋ฃ: session_end ์ํ, Archive ์ด์ดํ๊ธฐ ๋ฐฐ๋, Interview ์ฌ์ง์ ๋ก์ง
- DateDivider ์ปดํฌ๋ํธ ์ ๊ท (๋ ์ง ๊ตฌ๋ถ์ )
- Interview ํ์ด์ง status ๋ถ๊ธฐ: complete โ archive ๋ฆฌ๋ค์ด๋ ํธ, session_end โ ๊ธฐ์กด ๋ํ ๋ก๋
- /api/messages์์ ์ด์ ์ธ์ ๋ฉ์์ง ๋ก๋, ๋ง์ง๋ง ์ธ์ ๋ ์ง ์ถ์ถ
- handleResume ํจ์: status๋ฅผ active๋ก ๋ณ๊ฒฝ + AI ์ฌ์์
- PATCH /api/create-interview ์๋ํฌ์ธํธ ์ถ๊ฐ
- AI ์ด์ดํ๊ธฐ ํ๋กฌํํธ ๊ฐํ: "์ค์" ํค์๋ + 3๋จ๊ณ ํฌ๋งท (์ธ์ฌ โ ์ง๋ ๋ํ ์ธ๊ธ โ ๋ค์ ์ง๋ฌธ)
- F-040 messages ํ ์ด๋ธ ๋ถ๋ฆฌ ์๋ฃ: interviews.messages JSONB โ messages ํ ์ด๋ธ
- createMessage/getMessages/getMessageCount CRUD ํจ์ ์ถ๊ฐ
- MessageMeta ์ธํฐํ์ด์ค (phase, topic, subtopic, qtype, intensity)
- /api/messages GET ์๋ํฌ์ธํธ ์ ๊ท, ํด๋ฐฑ ๋ก์ง (backward compatibility)
- updateInterview camelCase โ snake_case ๋งคํ ์ถ๊ฐ (sessionCount โ session_count ๋ฑ)
- /api/complete ์๋ฌ ๋ก๊น ์ถ๊ฐ
- supabase-session-upgrade.txt: session + analysis ์ปฌ๋ผ DDL
- CLAUDE.md v0.4.0 ์ ๋ฐ์ดํธ (Messages table + Session management + Resume conversation)
- F-034 ํ ์คํ์ด๋จผ์ธ ๊ฒฐ์ ์ฐ๋ (ํ ์คํธ ๋ชจ๋)
- app/payment/[interviewId]/page.tsx: ๊ฒฐ์ ์์ ฏ ํ์ด์ง ์์ฑ
- app/api/payment/confirm/route.ts: ๊ฒฐ์ ์น์ธ API
- app/payment/success/page.tsx, fail/page.tsx: ๊ฒฐ๊ณผ ํ์ด์ง
- ArchiveView.tsx: "๊ธฐ๋ก ๋ณด๊ดํ๊ธฐ 9,900์" CTA ์ถ๊ฐ
- Interview.payment ํ์ ์ถ๊ฐ (paymentKey, orderId, amount, method, status, approvedAt)
- @tosspayments/tosspayments-sdk ํจํค์ง ์ค์น
- TOSS_PAYMENT_SETUP.md: ํ๊ฒฝ๋ณ์ ์ค์ ๊ฐ์ด๋
- ์๋ ์์ ํ์: developers.tosspayments.com ๊ฐ์ , API ํค ๋ฐ๊ธ, ํ๊ฒฝ๋ณ์ ์ถ๊ฐ, ํ ์คํธ
- FLOW-MAP.md ์ ๋ฐ์ดํธ: ํ ์ฌ์ดํด ์ ์ฒด ๊ทธ๋ฆผ(3-D), ์์นด์ด๋ธ ์์ ๊ณต๊ฐ ์ฌ์ ์(์ฝ๊ธฐ/๋ฃ๊ธฐ/ํธ์ง/ํ์ฅ/๋ถ์/์ถํ/๋ณด๊ด), AI ์ค๋ฆฌ์ํ ์ด์ Phase 0 ์ถ๊ฐ(๊ตฌ์ ์ฌ ์๋ฏธ ์ค๋ช + ๊ธฐ๋ณธ์ ๋ณด ์์ง)
- F-046~F-049 ์ถ๊ฐ: ์ค๋ฆฌ์ํ ์ด์ , archive ํธ์ง ๋ชจ๋, ๊ฐ์กฑ ์ด๋, ์ด์ผ๊ธฐ ์์ฑ๋ ํ๋จ
- Feedback ์ด 49๊ฐ ํญ๋ชฉ์ผ๋ก ํ์ฅ
2/25
- F-016 ํ ๋ ๊ทธ๋จ ์คํ์ผ ์์ฑ UX: ๋ น์ โ ์ค๋์ค ๋ฒ๋ธ(์ฌ์/๋ณํ/์ญ์ ) โ ์ ์ก
- F-017 AI ์๋ต ํ์ด๋ฐ: ๋ค์ค ์กฐ๊ฐ(์ค๋์ค+ํ ์คํธ) ๋์ ํ ์ ์ก ๋ฒํผ์ผ๋ก ํธ๋ฆฌ๊ฑฐ
- AudioBubble, TextChunkBubble ์ปดํฌ๋ํธ ์ ๊ท
- MicButton ์ฝ๋ฐฑ ๋ณ๊ฒฝ: onTranscription โ onRecordingComplete
- Enter ํค ๋์ ๋ณ๊ฒฝ: ์ฆ์ ์ ์ก โ ์กฐ๊ฐ ์ถ๊ฐ
- MediaRecorder ์ค์ : 48kHz mono opus/aac, 32kbps
- pending ์กฐ๊ฐ ์์ญ: ์ ์ก ์ ์กฐ๊ฐ๋ค ์๊ฐ์ ๊ตฌ๋ถ
- ํ ์คํธ ์กฐ๊ฐ: ํญํ์ฌ ์ธ๋ผ์ธ ํธ์ง
- ์ค๋์ค ์กฐ๊ฐ: ์ฌ์/์ผ์์ ์ง, โA ํ ์คํธ ๋ณํ, ์ญ์
- "์ค๋์ ์ฌ๊ธฐ๊น์ง" ๋ฒํผ ์๊ฐ์ ๊ฐํ (48px, ์ ์ฒด ๋๋น, ๋ณด๋)
- ์ฑํ ํ์์คํฌํ์ ๋ ์ง ์ถ๊ฐ (2/25 ์คํ 3:24 ํ์)
- Message์ ๊ณ ์ ID ์ถ๊ฐ (ํฅํ blob ๋จ์ ํธ์ง ๋๋น)
- /request ๊ฒฐ๊ณผ ํ๋ฉด์ ๊ฐ๋ฐ์์ฉ ํ ์คํธ ๋ฒํผ ์ถ๊ฐ
- F-026 ์์ฑ ์๋ณธ ์ ์ฅ: Supabase Storage ์ ๋ก๋ + audio_chunks ํ ์ด๋ธ
- /api/transcribe verbose_json ์ ํ: segments ํ์์คํฌํ ๋งคํ
- /api/upload-audio, /api/save-audio-chunk, /api/audio/[chunkId] ์ ๊ท
- /api/audio-chunks/[interviewId] ์ ๊ท
- lib/store.ts AudioChunk CRUD ์ถ๊ฐ
- ArchiveView ์ค๋์ค ์ฌ์ ์ฐ๋
- FLOW-MAP.md ์์ฑ: ์ ์ ํ๋ก์ฐ, ์์ต ๊ตฌ์กฐ, ๊ฐ์ ์ ์ฑ , ์๋ฆผ ์๋๋ฆฌ์ค ํ์
- ํผ๋๋ฐฑ ํญ๋ชฉ F-029~F-045 ์ถ๊ฐ (ํ๋ก์ฐ ๋งต ๊ธฐ๋ฐ ์ ์ฒด ๋ก๋๋งต)
- CLAUDE.md v0.3.0 ์ ๋ฐ์ดํธ
2/19
- F-009 Supabase ์ ํ ์๋ฃ (JSON โ PostgreSQL)
- F-009 store.ts ํ๋ซ ์ปฌ๋ผ ๋ฐฉ์์ผ๋ก ์ ๋ฉด ๊ต์ฒด + lib/supabase.ts ์ฑ๊ธํค ๋ถ๋ฆฌ
- Race condition ์์ : ์ธํฐ๋ทฐ ์ฒซ ๋ฉ์์ง ๋ฉํ๋ฐ์ดํฐ ๋ก๋ฉ ์์ ๋ณด์ฅ
- "์ค๋์ ์ฌ๊ธฐ๊น์ง" โ /api/complete ํธ์ถ ํ /archive ์ด๋ ์์
- F-007 ์์นด์ด๋ธ ์ค์ ๋ฐ์ดํฐ ์ฐ๋ ์๋ฃ
- F-015 ์ฑํ ๋งํ์ ํ์์คํฌํ ์ถ๊ฐ
- F-019 ๋์๋ณด๋ ์ธ์ฆ (ID/PW) ๊ตฌํ
- F-022 ๊ฐ๋ฐ ๋ก๊ทธ ํ์ด์ง ๊ตฌํ
- F-005 ์นด์นด์คํก ๊ณต์ SDK ์ฐ๋ (๋๋ฉ์ธ ๋ฑ๋ก ์๋ฃ)
- OG ์ด๋ฏธ์ง + favicon ์ถ๊ฐ (128ร128 PNG)
- /vision ์ ๋ฉด ์ ๋ฐ์ดํธ: HOMP, ํฌ๋ ๋ด์ , ์ฐฝ์ ์, ๊ธ๋ก๋ฒ ๋น์ ๋ฑ
- ํค๋: Inspiration โ ์๊ฐ, Vision โ ๋ก๋๋งต, ๊ด๋ฆฌ์ ๋งํฌ ์ถ๊ฐ
- ํธํฐ: ๋ฟ๋ฆฌ๊น์๋๋ฌด ์ฐ๊ตฌ์ ๋งํฌ, ์ฌ์ ์ ์ ๋ณด ์ถ๊ฐ
- ๋ก๊ทธ์ธ ํ๋ฉด: ์ฌ์ฌ์ฉ ID/PW ํํธ ํ์ (bts / arirang2026)
- CLAUDE.md v0.2.0 ์ ๋ฐ์ดํธ
- e2e ํ ์คํธ ํต๊ณผ: request โ ๋ํ โ ์๋ฃ โ archive โ book
2/18
- F-001~F-004, F-002b ์๋ฃ (์นดํผ/UX ์์ )
- F-011, F-012, F-013, F-018 ์๋ฃ (์ธํฐ๋ทฐ UI ๊ฐ์ )
- ๋๋ฉ/inspiration/vision ํ์ด์ง ๋ฐฐํฌ
- Nav + Footer ๊ณตํต ์ปดํฌ๋ํธ ๊ตฌํ
- v0 ๋์์ธ 7๊ฐ ํ์ด์ง ํตํฉ
2/17
- ํ๋ก์ ํธ ์ด๊ธฐ ์ค๊ณ ๋ฐ Claude Code ๋ธ๋ฆฌํ ์์ฑ
- v0.dev ๋ชฉ์ 7๊ฐ ํ์ด์ง ์ ์
- Vercel ์ฒซ ๋ฐฐํฌ