๐Ÿ–ฅ๏ธ '๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ์šด์˜'์„ ์œ„ํ•œ ํ•ต์‹ฌ DB ์„ค๊ณ„ ์—ฌ์ •

๐Ÿ“ ์†Œ๊ฐœ

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

130๋ช… ๊ทœ๋ชจ์˜ ์œก์•„ ์ปค๋ฎค๋‹ˆํ‹ฐ "์ด์œ ์ž‡๋‹ค"๋ฅผ 1๋…„ ๋ฐ˜ ์ •๋„ ์šด์˜ํ•˜๋ฉด์„œ ๋งค์ผ 500๊ฐœ ๊ฐ€๊นŒ์ด ์˜ฌ๋ผ์˜ค๋Š” ๋Œ€ํ™” ๋‚ด์—ญ๋“ค์„ ๊ทธ๋ƒฅ ํ˜๋ ค๋ณด๋‚ด๊ธฐ๊ฐ€ ์•„๊นŒ์› ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์ธ์‚ฌ์ดํŠธ์™€ ์œ ์šฉํ•œ ๋ฐ์ดํ„ฐ๋“ค์ด ์Œ“์ด๊ณ  ์žˆ์ง€๋งŒ, ์ œ๋Œ€๋กœ ํ™œ์šฉํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ ์ดˆ๊ธฐ์—” "์š”์ฆ˜ ๋ˆ„๊ฐ€ ํ™œ๋ฐœํ•˜๊ฒŒ ํ™œ๋™ํ•˜๋Š”์ง€", "์–ด๋–ค ๋Œ€ํ™”๊ฐ€ ์˜ค๊ฐ”๋Š”์ง€", "์–ด๋–ค ์ œํ’ˆ๋“ค์ด ๋งŽ์ด ์ถ”์ฒœ๋˜์—ˆ๋Š”์ง€" ๋“ฑ์„ ์ˆ˜์ž‘์—…์œผ๋กœ๋„ ๋ถ„์„ํ•˜๊ธฐ๋„ ํ–ˆ์ง€๋งŒ, ์–ด๋А์ƒˆ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๋ฉด์„œ ๋ถˆ๊ฐ€๋Šฅํ•ด์กŒ์ฃ .

๊ทธ๋ž˜์„œ ์นด์นด์˜คํ†ก ๋Œ€ํ™”๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜์ง‘ํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ์‹œ์Šคํ…œ์˜ ํ•„์š”์„ฑ์„ ์ฒด๊ฐํ–ˆ๊ณ , ์ด๋ฒˆ ๊ธฐ์ˆ˜๋ฅผ ํ†ตํ•ด fastAPI ์„œ๋ฒ„์™€ ์—ฐ๋™๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ์ดˆ ์„ค๊ณ„๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ธฐ์ˆ˜์˜ ๋ชฉํ‘œ๋Š”:

  1. ๐Ÿ“Š ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์šด์˜ ์ž๋™ํ™”: ๊ฐ์ด ์•„๋‹Œ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋กœ ํšจ์œจ์  ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ด€๋ฆฌ ๋ฐ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ ์ œ๊ณต

  2. ๐Ÿ”ฎ ํ™•์žฅ ๊ฐ€๋Šฅ์„ฑ: ์„ค๋ฌธ์กฐ์‚ฌ, AI ์š”์•ฝ, ์ถ”์ฒœ ์‹œ์Šคํ…œ๊นŒ์ง€ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํŠผํŠผํ•œ ๊ธฐ๋ฐ˜

  3. โฑ๏ธ ์‹œ๊ฐ„ ๋‹จ์ถ• ๊ธฐ๋ฐ˜ ๋งˆ๋ จ: 3์‹œ๊ฐ„ ๋ถ„์„ โ†’ 3๋ถ„์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ

๐Ÿ› ๏ธ ์ง„ํ–‰ ๋ฐฉ๋ฒ•

์‚ฌ์šฉํ•œ ๋„๊ตฌ

Claude AI - ์„ค๊ณ„ ํŒŒํŠธ๋„ˆ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ ์„ค๊ณ„

  • ํ™•์žฅ์„ฑ ๊ฒ€ํ† 

  • ๊ธฐ์ˆ ์  ์˜์‚ฌ๊ฒฐ์ • ์ง€์›

Perplexity - ์„ค๊ณ„ ๊ฒ€ํ†  ๋ฐ ์ž๋ฌธ

๋‹จ๊ณ„๋ณ„ ์ง„ํ–‰ ๊ณผ์ •

Step 1: ๋ฌธ์ œ ์ •์˜์™€ ์š”๊ตฌ์‚ฌํ•ญ ์ •๋ฆฌ

Claude์—๊ฒŒ ๋˜์ง„ ์ฒซ ํ”„๋กฌํ”„ํŠธ:

๋‚˜๋Š” 132๋ช… ์œก์•„ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์šด์˜ํ•˜๋Š”๋ฐ, ์นด์นด์˜คํ†ก ๋Œ€ํ™” ๋ฐ์ดํ„ฐ๋ฅผ 
์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์–ด. 

ํ˜„์žฌ ๋ฌธ์ œ:
- ๋ถ„๊ธฐ๋งˆ๋‹ค 3์‹œ๊ฐ„์”ฉ ์ˆ˜์ž‘์—…์œผ๋กœ ์ฐธ์—ฌ๋„ ๋ถ„์„
- 1.5๋…„์น˜ ๋Œ€ํ™” ๋‚ด์—ญ์ด txt ํŒŒ์ผ๋กœ๋งŒ ์กด์žฌ
- ๋ˆ„๊ฐ€ ์–ธ์ œ ์–ด๋–ค ๋ง์„ ํ–ˆ๋Š”์ง€ ์ฐพ๊ธฐ ์–ด๋ ค์›€

ํ–ฅํ›„ ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ:
- ์‹ ๊ทœ ๋ฉค๋ฒ„ ์˜จ๋ณด๋”ฉ ์„ค๋ฌธ
- 3์ผ์ฐจ ํ”ผ๋“œ๋ฐฑ ์ž๋™ ์ˆ˜์ง‘
- AI ๋Œ€ํ™” ์š”์•ฝ
- ์ถ”์ฒœ ์ œํ’ˆ/๋ ˆ์‹œํ”ผ ๊ฒ€์ƒ‰
- ์›”๊ฐ„ ํ™œ๋™ ์ˆœ์œ„

์ด๋Ÿฐ ๊ธฐ๋Šฅ๋“ค์„ ๋ชจ๋‘ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•ด์ค˜.

Step 2: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ์„ค๊ณ„

Claude์™€ ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ๋Œ€ํ™”๋ฅผ ๊ฑฐ์ณ v2.1 ์Šคํ‚ค๋งˆ๋ฅผ ์™„์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ์„ค๊ณ„ ์›์น™:

  1. ํ™•์žฅ์„ฑ: ๋‚˜์ค‘์— ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ•ด๋„ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ์•ˆ ๋ฐ”๊ฟ”๋„ ๋จ

  2. ์„ฑ๋Šฅ: ์ž์ฃผ ์กฐํšŒํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ

  3. ์œ ์—ฐ์„ฑ: ์˜ˆ์ƒ ๋ชปํ•œ ๋ฐ์ดํ„ฐ๋„ ์ €์žฅ ๊ฐ€๋Šฅํ•˜๋„๋ก

์ตœ์ข… ํ…Œ์ด๋ธ” ๊ตฌ์กฐ (6๊ฐœ):

-- 1๏ธโƒฃ rooms: ์นดํ†ก๋ฐฉ ์ •๋ณด (๋งˆ์น˜ ์•„ํŒŒํŠธ ๋™ํ˜ธ์ˆ˜ ๊ด€๋ฆฌ)
CREATE TABLE rooms (
    room_id TEXT PRIMARY KEY,              -- ๋ฐฉ ๊ณ ์œ ๋ฒˆํ˜ธ (SHA-1 ํ•ด์‹œ)
    room_name TEXT UNIQUE NOT NULL,        -- "19๊ธฐ ์นดํ†ก๋ด‡", "์œ ์ฃผ๋ง˜"
    display_name TEXT,                     -- ํ™”๋ฉด์— ๋ณด์—ฌ์ค„ ๋ณ„๋ช…
    room_type TEXT DEFAULT 'chat',         -- ์ผ๋ฐ˜์ฑ„ํŒ…/๊ณต์ง€๋ฐฉ ๊ตฌ๋ถ„
    meta_data TEXT,                        -- JSON: ๋ฐฉ ์„ค๋ช…, ๊ทœ์น™ ๋“ฑ
    created_at TEXT DEFAULT CURRENT_TIMESTAMP,
    last_activity TEXT,
    message_count INTEGER DEFAULT 0,
    participant_count INTEGER DEFAULT 0
);

-- 2๏ธโƒฃ participants: ์ฐธ์—ฌ์ž ์ •๋ณด (๊ฐ ๋ฐฉ์˜ ๋ฉค๋ฒ„ ๋ช…๋‹จ)
CREATE TABLE participants (
    participant_id TEXT PRIMARY KEY,        -- ์ฐธ์—ฌ์ž ๊ณ ์œ ๋ฒˆํ˜ธ
    room_id TEXT NOT NULL,                 -- ์–ด๋А ๋ฐฉ ์†Œ์†์ธ์ง€
    user_name TEXT NOT NULL,               -- "์ง€๋‹ˆK"
    user_identifier TEXT,                  -- ์นด์นด์˜คํ†ก ๋‚ด๋ถ€ ID
    kakao_id TEXT,
    role TEXT DEFAULT 'member',            -- ๋ฉค๋ฒ„/๊ด€๋ฆฌ์ž ๊ตฌ๋ถ„
    meta_data TEXT,                        -- JSON: ์˜จ๋ณด๋”ฉ ์„ค๋ฌธ ๋‹ต๋ณ€ ๋“ฑ
    joined_at TEXT DEFAULT CURRENT_TIMESTAMP,
    last_seen_at TEXT,
    message_count INTEGER DEFAULT 0,
    FOREIGN KEY (room_id) REFERENCES rooms(room_id)
);

-- 3๏ธโƒฃ messages: ์‹ค์ œ ๋Œ€ํ™” ๋‚ด์šฉ
CREATE TABLE messages (
    message_id INTEGER PRIMARY KEY AUTOINCREMENT,
    room_id TEXT NOT NULL,
    participant_id TEXT NOT NULL,
    content TEXT NOT NULL,
    message_type TEXT DEFAULT 'text',      -- ํ…์ŠคํŠธ/์ด๋ฏธ์ง€/๋งํฌ ๊ตฌ๋ถ„
    meta_data TEXT,                        -- JSON: ๋‹ต๊ธ€, ๋ฐ˜์‘ ๋“ฑ
    sent_at TEXT DEFAULT CURRENT_TIMESTAMP,
    is_deleted INTEGER DEFAULT 0,
    FOREIGN KEY (room_id) REFERENCES rooms(room_id),
    FOREIGN KEY (participant_id) REFERENCES participants(participant_id)
);

-- 4๏ธโƒฃ bot_actions: ๋ด‡์ด ํ•œ ํ–‰๋™ ๊ธฐ๋ก (์„ค๋ฌธ, ์•Œ๋ฆผ ๋“ฑ)
CREATE TABLE bot_actions (
    action_id INTEGER PRIMARY KEY AUTOINCREMENT,
    room_id TEXT NOT NULL,
    participant_id TEXT,                   -- ๋ˆ„๊ตฌ์—๊ฒŒ ๋ณด๋ƒˆ๋Š”์ง€
    action_type TEXT NOT NULL,             -- survey/reminder/summary
    action_data TEXT,                      -- JSON: ์„ค๋ฌธ ์งˆ๋ฌธ, ์•Œ๋ฆผ ๋‚ด์šฉ
    status TEXT DEFAULT 'pending',         -- ๋Œ€๊ธฐ์ค‘/์™„๋ฃŒ/์‹คํŒจ
    created_at TEXT DEFAULT CURRENT_TIMESTAMP,
    completed_at TEXT,
    FOREIGN KEY (room_id) REFERENCES rooms(room_id),
    FOREIGN KEY (participant_id) REFERENCES participants(participant_id)
);

-- 5๏ธโƒฃ statistics_cache: ํ†ต๊ณ„ ์บ์‹œ (๋น ๋ฅธ ์กฐํšŒ์šฉ)
CREATE TABLE statistics_cache (
    cache_id INTEGER PRIMARY KEY AUTOINCREMENT,
    room_id TEXT,
    participant_id TEXT,
    metric_type TEXT NOT NULL,             -- daily/weekly/monthly
    metric_name TEXT NOT NULL,             -- message_count/active_days
    metric_value REAL NOT NULL,
    period_start TEXT NOT NULL,
    period_end TEXT NOT NULL,
    calculated_at TEXT DEFAULT CURRENT_TIMESTAMP,
    UNIQUE(room_id, participant_id, metric_type, metric_name, period_start)
);

-- 6๏ธโƒฃ keyword_trends: ํ‚ค์›Œ๋“œ ํŠธ๋ Œ๋“œ (ํ™”์ œ ์ถ”์ )
CREATE TABLE keyword_trends (
    trend_id INTEGER PRIMARY KEY AUTOINCREMENT,
    room_id TEXT NOT NULL,
    keyword TEXT NOT NULL,
    frequency INTEGER DEFAULT 1,
    first_seen TEXT DEFAULT CURRENT_TIMESTAMP,
    last_seen TEXT DEFAULT CURRENT_TIMESTAMP,
    period TEXT NOT NULL,                  -- daily/weekly/monthly
    UNIQUE(room_id, keyword, period, DATE(last_seen))
);

์ธ๋ฑ์Šค ์„ค๊ณ„ (๊ฒ€์ƒ‰ ์†๋„ ํ–ฅ์ƒ):

-- ์ž์ฃผ ์กฐํšŒํ•˜๋Š” ํŒจํ„ด์— ๋งž์ถฐ ์ธ๋ฑ์Šค ์ƒ์„ฑ
CREATE INDEX idx_messages_room_sent ON messages(room_id, sent_at DESC);
CREATE INDEX idx_messages_participant_sent ON messages(participant_id, sent_at DESC);
CREATE INDEX idx_participants_room ON participants(room_id);
CREATE INDEX idx_bot_actions_status ON bot_actions(status, created_at);

๐Ÿ’ก ๋น„๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๋น„์œ :

  • ํ…Œ์ด๋ธ” = ์—‘์…€ ์‹œํŠธ: ๊ฐ๊ฐ์˜ ์ฃผ์ œ๋ณ„๋กœ ์‹œํŠธ๋ฅผ ๋‚˜๋ˆˆ ๊ฒƒ

  • PRIMARY KEY = ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ: ์ ˆ๋Œ€ ์ค‘๋ณต ์•ˆ ๋˜๋Š” ๊ณ ์œ  ๋ฒˆํ˜ธ

  • FOREIGN KEY = ์—ฐ๊ฒฐ๊ณ ๋ฆฌ: "์ด ๋ฉค๋ฒ„๋Š” ์ € ๋ฐฉ์— ์†ํ•ด์žˆ๋‹ค" ๊ฐ™์€ ๊ด€๊ณ„ ํ‘œ์‹œ

  • INDEX = ์ฑ… ๋’ค์˜ ์ƒ‰์ธ: ์›ํ•˜๋Š” ๋‚ด์šฉ์„ ๋นจ๋ฆฌ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ์ง€๋ฆ„๊ธธ

  • meta_data (JSON) = ํ™•์žฅ ํฌ์ผ“: ๋‚˜์ค‘์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„


Step 3: ์™ธ๋ถ€ ๊ฒ€์ฆ

์„ค๊ณ„๊ฐ€ ์™„์„ฑ๋œ ํ›„, ๊ธฐ์ˆ ์ ์œผ๋กœ ์ œ๋Œ€๋กœ ๋œ ๊ฑด์ง€ ๋ถˆ์•ˆํ•œ ๋งˆ์Œ์— ๋‹ค๋ฅธ AI ์‹œ์Šคํ…œ(Perplexity)์—๊ฒŒ ๊ฒ€์ฆ์„ ์š”์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฒ€์ฆ ํ”„๋กฌํ”„ํŠธ:

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ „๋ฌธ๊ฐ€ ๊ด€์ ์—์„œ ์ด ์Šคํ‚ค๋งˆ๋ฅผ ํ‰๊ฐ€ํ•ด์ค˜:
- ์ •๊ทœํ™”๊ฐ€ ์ ์ ˆํ•œ๊ฐ€?
- ์„ฑ๋Šฅ ๋ฌธ์ œ๋Š” ์—†๋Š”๊ฐ€?
- ํ™•์žฅ์„ฑ์€ ์ถฉ๋ถ„ํ•œ๊ฐ€?
- ๊ฐœ์„ ํ•  ์ ์€?

๊ฒ€์ฆ ๊ฒฐ๊ณผ: โœ… ๊ฐ•์ 

  • ์ •๊ทœํ™” ์ˆ˜์ค€ ์ ์ ˆ (3NF ์ˆ˜์ค€)

  • ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ ‘๊ทผ๋ฒ•(์ปฌ๋Ÿผ + JSON) ์šฐ์ˆ˜

  • ์ธ๋ฑ์Šค ์ „๋žต ํšจ๊ณผ์ 

  • SQLite โ†’ PostgreSQL ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์šฉ์ด

โš ๏ธ ๊ฐœ์„  ์ œ์•ˆ

  • meta_data JSON ํ•„๋“œ ํ™œ์šฉ ์˜ˆ์‹œ ๋ฌธ์„œํ™” ํ•„์š”

  • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์‹œ ํŒŒํ‹ฐ์…”๋‹ ๊ณ ๋ ค

  • ํ†ต๊ณ„ ์บ์‹œ ๊ฐฑ์‹  ์ „๋žต ๋ช…ํ™•ํ™”

โ†’ ๊ฒฐ๋ก : ์—…๊ณ„ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ์ค€์ˆ˜, ์‹ค์ „ ํˆฌ์ž… ๊ฐ€๋Šฅ!


Step 4: ๊ตฌํ˜„ ๊ณ„ํš ์ˆ˜๋ฆฝ

Claude์™€ ํ•จ๊ป˜ ๋‹จ๊ณ„์  ๊ตฌํ˜„ ๋กœ๋“œ๋งต์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

Phase 1 (12์›”): ์•ˆ์ •์ ์ธ ์‹ค์‹œ๊ฐ„ ์ˆ˜์ง‘

  • ๋ฉ”์‹ ์ €๋ด‡์œผ๋กœ ์‹ค์‹œ๊ฐ„ ๋Œ€ํ™” ์ˆ˜์ง‘

  • FastAPI ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 

  • ๊ธฐ๋ณธ ์กฐํšŒ ๊ธฐ๋Šฅ

Phase 2 (2025๋…„ 1์›” ์ดํ›„): ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

  • ์‹ ๊ทœ ๋ฉค๋ฒ„ ์˜จ๋ณด๋”ฉ ์„ค๋ฌธ

  • 3์ผ์ฐจ ํ”ผ๋“œ๋ฐฑ ์ž๋™ ์ˆ˜์ง‘

  • ์ถ”์ฒœ ์ œํ’ˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • ๋ ˆ์‹œํ”ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • ์›”๊ฐ„ ํ™œ๋™ ์ˆœ์œ„

๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜:

  • 1.5๋…„์น˜ txt ํŒŒ์ผ โ†’ 1์›” ์ค‘ ํŒŒ์‹ฑํ•ด์„œ DB ์ž…๋ ฅ

  • ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ ์•ˆ์ •ํ™” ํ›„ ์ง„ํ–‰


๐ŸŽ“ ๊ฒฐ๊ณผ์™€ ๋ฐฐ์šด ์ 

โœจ ํ˜„์žฌ๊นŒ์ง€์˜ ์„ฑ๊ณผ

๐Ÿ“ ์„ค๊ณ„ ์™„๋ฃŒ

  • 6๊ฐœ ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ v2.1 ํ™•์ •

  • ๊ตฌํ˜„ ๋กœ๋“œ๋งต ์ˆ˜๋ฆฝ

    ๐Ÿ’ก ํ•ต์‹ฌ ์ธ์‚ฌ์ดํŠธ

1. "์ง‘์€ ์„ค๊ณ„๊ฐ€ 80%๋‹ค"

์Šคํ„ฐ๋””์žฅ๋‹˜๊ป˜์„œ ์„ค๊ณ„์— ๊ณต์„ ๋“ค์ด๋ผ๊ณ  ํ•˜์…จ๋˜ ๋ง์„ ๊ณฑ์”น์œผ๋ฉฐ, ์ตœ๋Œ€ํ•œ ์ฝ”๋”ฉ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š๊ณ  Perplexity๊ฐ€ OKํ•  ๋•Œ๊นŒ์ง€ ์„ค๊ณ„ ๋ฌธ์„œ๋ฅผ ๋‹ค๋“ฌ๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํˆฌ์žํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๋ฒ„์ „(v1.0 โ†’ v2.0 โ†’ v2.1)์„ ๊ฑฐ์น˜๋ฉฐ "๋‚˜์ค‘์— ์ด๋Ÿฐ ๊ธฐ๋Šฅ๋„ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์€๋ฐ..." ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค ๋•Œ๋งˆ๋‹ค ๊ตฌ์กฐ๋ฅผ ์กฐ๊ธˆ์”ฉ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

2. ์™ธ๋ถ€ ๊ฒ€์ฆ์˜ ํž˜

Claude์™€ ๋Œ€ํ™”๋กœ ์„ค๊ณ„ ์ดˆ์•ˆ์„ ์™„์„ฑํ–ˆ์ง€๋งŒ, "์ •๋ง ์ด๊ฒŒ ๋งž๋‚˜? ๋‚˜์ค‘์— ๋ฌธ์ œ ์—†์„๊นŒ?" ํ•˜๋Š” ๋ถˆ์•ˆ๊ฐ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜, Perplexity์™€ ๋‹ค๋ฅธ AI๋“ค์—๊ฒŒ ํ•œ๋ฒˆ์”ฉ ๊ฒ€์ฆ๋ฐ›๊ณ  ๋‚˜๋‹ˆ:

  • โœ… ์ž์‹ ๊ฐ ์ƒ๊น€ ("๋‚ด๊ฐ€ ์ œ๋Œ€๋กœ ํ•˜๊ณ  ์žˆ๊ตฌ๋‚˜!")

  • โœ… ๋†“์นœ ๋ถ€๋ถ„ ๋ฐœ๊ฒฌ (๋ฌธ์„œํ™” ํ•„์š”์„ฑ)

  • โœ… ๋‹ค์Œ ๋‹จ๊ณ„ ์ง„ํ–‰ ๋™๋ ฅ

    3. ๋‹จ๊ณ„์  ์ ‘๊ทผ์˜ ์ค‘์š”์„ฑ

์ฒ˜์Œ์—” "ํ•œ๋ฒˆ์— ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๋‹ค ๋„ฃ๊ณ  ์‹ถ๋‹ค!"๋Š” ์š•์‹ฌ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Claude์˜ ์กฐ์–ธ:

"Phase 1์—์„œ๋Š” ์•ˆ์ •์ ์ธ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๋งŒ ๋ชฉํ‘œ๋กœ ํ•˜์„ธ์š”.
๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์€ ๊ธฐ๋ฐ˜์ด ํŠผํŠผํ•ด์ง„ ํ›„์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒŒ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค."

๋•๋ถ„์— ํ˜„์‹ค์ ์ธ ๋ชฉํ‘œ๋ฅผ ์„ธ์šธ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿšง ๊ณผ์ • ์ค‘ ์–ด๋ ค์› ๋˜ ์ 

1. ๊ธฐ์ˆ  ์šฉ์–ด์˜ ๋ฒฝ

  • "์ •๊ทœํ™”", "์™ธ๋ž˜ํ‚ค", "์ธ๋ฑ์Šค" ๊ฐ™์€ ์šฉ์–ด๋“ค์ด ์ฒ˜์Œ์—” ๋„ˆ๋ฌด ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค

  • โ†’ Claude์—๊ฒŒ "๋น„๊ฐœ๋ฐœ์ž๋„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋น„์œ ๋กœ ์„ค๋ช…ํ•ด์ค˜"๋ผ๊ณ  ์š”์ฒญ

  • โ†’ ๋„์„œ๊ด€, ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ, ์—‘์…€ ์‹œํŠธ ๋“ฑ์˜ ๋น„์œ ๋กœ ์ดํ•ด ์„ฑ๊ณต!

2. "์™„๋ฒฝํ•œ ์„ค๊ณ„" ๊ฐ•๋ฐ•

  • ์ž๊พธ "ํ˜น์‹œ ์ด๊ฒƒ๋„ ํ•„์š”ํ•˜๋ฉด?" ํ•˜๋ฉฐ ํ…Œ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค

  • โ†’ Claude: "์ง€๊ธˆ ํ™•์‹คํžˆ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๋„ฃ์œผ์„ธ์š”. meta_data JSON ํ•„๋“œ๋กœ ๋‚˜์ค‘์— ํ™•์žฅ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค"

  • โ†’ ๋ฏธ๋‹ˆ๋ฉ€ํ•œ ์„ค๊ณ„ + ํ™•์žฅ์„ฑ ํ™•๋ณด๋กœ ๋ฐฉํ–ฅ ์ „ํ™˜

3. ๊ฒ€์ฆ์— ๋Œ€ํ•œ ๋ถˆ์•ˆ

  • "๋‚ด๊ฐ€ AI๋ž‘๋งŒ ๋Œ€ํ™”ํ•ด์„œ ๋งŒ๋“  ๊ฑด๋ฐ, ์‹ค์ œ๋กœ ์“ธ ์ˆ˜ ์žˆ์„๊นŒ?"

  • โ†’ ์™ธ๋ถ€ AI์—๊ฒŒ ๊ฒ€์ฆ ์š”์ฒญํ•ด์„œ ๋ถˆ์•ˆ๊ฐ ํ•ด์†Œ

  • โ†’ ๋‹ค์Œ์—” ์‚ฌ๋žŒ ๊ฐœ๋ฐœ์ž/๋ฐ์ดํ„ฐ ๋ถ„์„๊ฐ€์—๊ฒŒ๋„ ๋ฆฌ๋ทฐ ๋ฐ›์•„๋ณผ ์˜ˆ์ •


๐Ÿ”ฎ ๋‹ค์Œ ๋‹จ๊ณ„ ๊ณ„ํš

11์›” ์ค‘:

Claude Code /Codex์™€ ํ•จ๊ป˜

  • FastAPI ์„œ๋ฒ„ ์—ฐ๋™

  • ๋ฉ”์‹ ์ €๋ด‡ JavaScript ์ฝ”๋“œ ์ž‘์„ฑ

  • ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํ…Œ์ŠคํŠธ

  • !์ฑ„ํŒ…๋ฐ์ดํ„ฐ ์กฐํšŒ ๋ช…๋ น์–ด ๊ตฌํ˜„

12์›”:

  • 1.5๋…„์น˜ ๊ณผ๊ฑฐ ๋Œ€ํ™” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

  • ์‹ ๊ทœ ๋ฉค๋ฒ„ ์˜จ๋ณด๋”ฉ ์„ค๋ฌธ ์‹œ์Šคํ…œ

  • 3์ผ์ฐจ ์ž๋™ ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ง‘

  • ์ œํ’ˆ ์ถ”์ฒœ ๊ธฐ๋Šฅ ๋“ฑ (๊ฐ€๋Šฅํ•˜๋ฉด)

๊ถ๊ทน์  ๋ชฉํ‘œ:

  • ๐Ÿ“Š ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ์šด์˜

  • ๐Ÿค– AI ์š”์•ฝ, ์ถ”์ฒœ ์‹œ์Šคํ…œ ๋“ฑ ๊ณ ๋„ํ™”

  • โฑ๏ธ ๋ถ„๊ธฐ ๋ถ„์„ ์‹œ๊ฐ„: 3์‹œ๊ฐ„ โ†’ 3๋ถ„


๐Ÿ“š ๋„์›€ ๋ฐ›์€ ๊ธ€

  • ์Šคํ„ฐ๋””์žฅ๋‹˜์˜ '์นดํ†ก๋ด‡_๋ฐ์ดํ„ฐ_์ˆ˜์ง‘_ํ†ตํ•ฉ๊ณผ์ œ.md'


ํ˜„์žฌ ์ƒํƒœ: ์„ค๊ณ„ ์™„๋ฃŒ, 12์›” ๊ตฌํ˜„ ์˜ˆ์ •
ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„: 2024๋…„ 11์›” ์„ค๊ณ„ ์‹œ์ž‘

๋‹ค์Œ ์‚ฌ๋ก€๊ธ€์€ ์‹ค์ œ ๊ตฌํ˜„ ๊ฒฐ๊ณผ๋กœ ์ฐพ์•„๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค! ๐Ÿš€

1
3๊ฐœ์˜ ๋‹ต๊ธ€

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

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