AI์ ํจ๊ป ๋ฐฐ์ฐ๊ณ ์์ํ๋ KBO ์ ๋ฌธ ๋์ฐ๋ฏธ ์๋น์ค
์ผ๊ตฌ๋ ๊ท์น, ์ฉ์ด, ์์ ๋ฌธํ, ๊ตฌ๋จ ์ ๋ณด ๋ฑ ๋ค์ํ ์ง์ ์ฅ๋ฒฝ์ด ์กด์ฌํฉ๋๋ค.
์ผ๊ตฌ ๋ณผ๋๋ AI ์บ๋ฆญํฐ ๊ธฐ๋ฐ์ ์ผ๊ตฌ ์ ๋ฌธ ๋์ฐ๋ฏธ ์๋น์ค๋ก, ์ฌ์ฉ์๊ฐ ์ฝ๊ณ ์ฌ๋ฏธ์๊ฒ ์ผ๊ตฌ๋ฅผ ๋ฐฐ์ฐ๊ณ ์์ํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
- ์ผ๊ตฌ ๊ท์น๊ณผ ์ฉ์ด๊ฐ ์ด๋ ต๋ค.
- ์์ํ ๊ตฌ๋จ์ ์ ํํ๊ธฐ ์ด๋ ต๋ค.
- ์ง๊ด ์ ๋ณด๋ฅผ ์ฐพ๊ธฐ ์ด๋ ต๋ค.
- ํฌ๋ค๊ณผ ์ํตํ ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ค.
- AI ์ผ๊ตฌ ์ค๋ช ์ฑ๋ด ์ ๊ณต
- ๊ตฌ๋จ๋ณ ํ ์ฑํ ๋ฐฉ ์ ๊ณต
- ์ง๊ด ๋ฐ ๊ฒฝ๊ธฐ ๊ธฐ๋ก ๊ธฐ๋ฅ ์ ๊ณต
- ๊ตฌ์ฅ ์ ๋ณด ํตํฉ ์ ๊ณต
| ๐ค AI ์ผ๊ตฌ ๋์ฐ๋ฏธ | ๐ฌ ํ ์ฑํ ๋ฐฉ | ๐ ๋๋ง์ ๊ธฐ๋ก |
|---|---|---|
| ์ผ๊ตฌ ๊ท์น ์ค๋ช
์ผ๊ตฌ ์ฉ์ด ์ค๋ช ๊ฒฝ๊ธฐ ์ํฉ ํด์ค ์ด๋ณด์ ๋ง์ถค ๋ต๋ณ |
๊ตฌ๋จ๋ณ ์ฑํ
๋ฐฉ ์ค์๊ฐ ์์ ํฌ ์ปค๋ฎค๋ํฐ |
์ฐ์ ๊ธฐ๋ก ๋์ ์ง๊ด ๊ธฐ๋ก ์บ๋ฆฐ๋ ๊ฒฝ๊ธฐ ๊ธฐ๋ก ์กฐํ |
| ๐ง ์ผ๊ตฌ์ง๊ฟ | ๐๏ธ ๊ตฌ์ฅ์ ๋ณด | โ๏ธ ํ๊ฒฝ์ค์ |
|---|---|---|
| ์ฑ๋ณ ์ค์ ๋๋ค์ ์ค์ ์ถ์ ์ฒดํฌ ๊พธ๋ฏธ๊ธฐ ์์ํ๊ธฐ ํด์ฆ ํ๊ธฐ |
๊ตฌ์ฅ ์๋ด ๋จน๊ฑฐ๋ฆฌ ์ ๋ณด ์ง์ญ ์ ๋ณด ๊ตํต ์ ๋ณด |
๋ด ์ ๋ณด ๊ด๋ฆฌ ์์๊ตฌ๋จ ๋ณ๊ฒฝ ์๋ฆผ ์ค์ |
| Category | Stack |
|---|---|
| ๐จ Frontend | React 19, TypeScript, Vite 6, Capacitor 8 โ ์นยท์๋(frontend) / iOS(frontend-ios) ๋ถ๋ฆฌ |
| ๐ง 3D ยท ์บ๋ฆญํฐ | three.js (3D ์ฑ๋ด ์บ๋ฆญํฐ), Live2D Cubism (ํ ์ ํ Live 2D), sql.js (๋ก์ปฌ SQLite) |
| โ๏ธ Backend | FastAPI, Python, Cloud Run (asia-northeast3) |
| ๐ค AI ยท ์์ฑ | Gemini 3.1 Flash-Lite (Vertex AI), ElevenLabs (๊ตฌ๋จ ๋ณด์ด์ค + ๊ธ์ ํ์์คํฌํ), Azure Speech (TTS ยท viseme) |
| ๐๏ธ Database | PostgreSQL + pgvector (Supabase), MongoDB Atlas, sql.js (ํด๋ผ์ด์ธํธ) |
| ๐บ๏ธ Maps ยท Push | ์นด์นด์ค๋งต (๊ตฌ์ฅ์ ๋ณด), FCM / APNs (ํธ์ ์๋ฆผ) |
| ๐ Authentication | JWT, Google ยท Kakao ยท Naver OAuth |
| โ๏ธ Deploy ยท CI | Firebase Hosting (FE), Cloud Run (BE), GitHub Actions, Cloud Scheduler (ํฌ๋กค) |
| ๐ Version Control | Git, GitHub |
๋ก์ปฌ์์ ๋ฐฑ์๋ ยท ํ๋ก ํธ ยท (์ ํ) ํฌ๋กค๋ฌ๋ฅผ ํจ๊ป ๋์ฐ๋ ์์์ ๋๋ค. ๊ฐ ๋ชจ๋ ์์ธ๋ ํ๋จ ๋ฌธ์ ๋งํฌ ์ฐธ๊ณ .
-
Python 3.11+, Node.js 20+
-
ํ๊ฒฝ๋ณ์ ํ์ผ 2๊ฐ (๋ ๋ค git ์ ์ธ โ ๊ฐ์ ํ ๋น๊ณต๊ฐ ์ฑ๋๋ก ๊ณต์ )
๋ฃจํธ
.env(๋ฐฑ์๋ ยท ํฌ๋กค๋ฌ ๊ณต์ฉ)MONGO_URI=... # MongoDB Atlas (๋์ ๊ธฐ๋ก) MONGO_DB=kbo DATABASE_URL=... # PostgreSQL (Supabase) JWT_SECRET=... # ๋ก๊ทธ์ธ ํ ํฐ ์๋ช ELEVENLABS_KEY=... # ๊ตฌ๋จ ๋ณด์ด์ค TTS AZURE_SPEECH_KEY=... # TTS ยท viseme (ํด๋ฐฑ) AZURE_SPEECH_REGION=... KMA_API_KEY=... # ๊ตฌ์ฅ ๋ ์จ(๊ธฐ์์ฒญ) # Gemini/Vertex๋ GCP ์๋น์ค๊ณ์ (ADC) ๋๋ ํค๋ก ์ธ์ฆfrontend/.env(ํ๋ก ํธ ๋น๋ ๋ณ์)VITE_KAKAO_MAP_KEY=... # ์นด์นด์ค๋งต(๊ตฌ์ฅ์ ๋ณด) VITE_GOOGLE_CLIENT_ID=... # ๊ตฌ๊ธ ๋ก๊ทธ์ธ
pip install -r services/api/requirements.txt
python services/api/setup_db.py # PostgreSQL ํ
์ด๋ธ 1ํ ์์ฑ
uvicorn main:app --app-dir services/api --port 8000โ http://127.0.0.1:8000/docs (Swagger์์ ๋ฐ๋ก ํ ์คํธ)
cd frontend
npm install
npm run devโ http://127.0.0.1:5000 (๋ฐฑ์๋๋ก ํ๋ก์)
pip install -r services/crawler/requirements.txt
python services/crawler/kbo_crawler.py # ํฌ๋กค โ data/crawling/<๊ธฐ์ค์ผ>/*.json
python services/crawler/ingest_mongo.py # โ MongoDB ์ ์ฌ(upsert)
python services/crawler/crawl_profiles.py # ์ ์ ํ๋กํ(์ ๊ท๋ง)์ด์ ํ๊ฒฝ์ Cloud Scheduler๊ฐ ๋งค์ผ 09:00 ์๋ ์์ง. ์ ์ ์ ๋ณด(teams ยท glossary ยท persona ๋ฑ)๋ DB ์ ์ฌ ์ ์ ๋น ์๋ต์ ๋๋ค.
Capacitor ๊ธฐ๋ฐ. ๋น๋ ยท ์คํ ์์ธ๋ frontend/README.md ์ฐธ๊ณ .
| ๋ชจ๋ | ์์ธ ๋ฌธ์ |
|---|---|
| ๋ฐฑ์๋ API | services/api/README.md |
| ํ๋ก ํธ์๋ | frontend/README.md |
| ๋ฐ์ดํฐ ํฌ๋กค๋ฌ | services/crawler/README.md |
| ์บ๋ฆญํฐ ๋ชจ๋ธ | model/README.md |
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ํด๋ผ์ด์ธํธ ยท React 19 + Vite + Capacitor โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ยท ์นยท์๋: frontend ยท iOS: frontend-ios (ํด๋ ๋ถ๋ฆฌ) โ
โ ยท ์ฑ ยท ์์ฑ์ฌ์ ยท 3D ์ฑ๋ด(three.js) ยท ํ ์ ํ Live2D โ
โ ยท ๊ตฌ์ฅ์ ๋ณด(์นด์นด์ค๋งต) ยท ๋ก์ปฌ SQLite(sql.js ยท IndexedDB) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ Firebase Hosting (์ ์ + rewrite)
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Cloud Run ยท FastAPI โ kbo-api (asia-northeast3) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ยท RAG ๊ฒ์ + ์๋ฒ ๋ฉ ยท ํ๋ฅด์๋ ยท ์๋ฃ์จ ๊ณ์ธก โ
โ ยท /chat /tts /auth /quiz /board /attendance /weather โฆ โ
โ ยท dev push ์ ์๋ ๋ฐฐํฌ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ (๋ฐฑ์๋ ์์กด์ฑ)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ์๋ฒ ์ ์ฅ์ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ยท Supabase PostgreSQL + pgvector โ
โ ยท MongoDB (KBO ๊ธฐ๋ก) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ์ธ๋ถ AI ยท ์์ฑ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ยท Gemini 3.1 Flash-Lite (Vertex AI) ยท ElevenLabs (๊ตฌ๋จ ๋ณด์ด์ค) โ
โ ยท Azure Speech โ TTS ยท viseme (ํด๋ฐฑ) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ์ธ๋ถ ์ฐ๋ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ยท OAuth : Google ยท Kakao ยท Naver ยท ์นด์นด์ค๋งต (๊ตฌ์ฅ์ ๋ณด) โ
โ ยท ๊ธฐ์์ฒญ ๋ ์จ ยท FCM / APNs ํธ์ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ํฌ๋กค ํ์ดํ๋ผ์ธ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ยท Cloud Scheduler (๋งค์ผ 09:00) โ ํฌ๋กค๋ฌ โ MongoDB โ
โ ยท KBO ๊ฒ์์ผํฐ : ์์ยท์ ์๊ธฐ๋กยท์ผ์ ยท๋ผ์ธ์
ยท๋ฐ์ค์ค์ฝ์ด โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฆ project
โโ ๐ frontend # ์น ยท ์๋ โ React 19 + Vite + Capacitor
โ โโ ๐ public # 3D ๋ชจ๋ธ(.glb) ยท Live2D(/live2d/ball.model3.json)
โ โโ ๐ android # Capacitor ์๋ ํ๋ก์ ํธ
โ โโ ๐ src
โ โโ ๐ components # MainViewV2 ยท Character3D ยท LatudiCharacter ยท Stadium* โฆ
โ โโ ๐ data ยท hooks ยท types
โ โโ ๐ App.tsx ยท main.tsx ยท api.ts ยท appSettings.ts
โ โโ ๐ db.ts(๋ก์ปฌ SQLiteยทsql.js) ยท lipSync.ts ยท push.ts
โ โโ ๐ theme.css
โโ ๐ frontend-ios # iOS ์ ์ฉ ํ๋ก ํธ (ํด๋ ๋ถ๋ฆฌ)
โโ ๐ services
โ โโ ๐ api # FastAPI ๋ฐฑ์๋ (Cloud Run)
โ โ ยท main ยท auth ยท chat ยท tts ยท quiz ยท board ยท attendance ยท my_records
โ โ ยท visits ยท tamagotchi ยท push ยท weather ยท info ยท internal
โ โ ยท llm ยท embeddings ยท embed_chunks ยท pcache ยท personalization ยท session_metrics ยท fcm
โ โ ยท db.py / db_pg.py ยท schema.sql ยท board/push_schema.sql ยท setup_db.py
โ โโ ๐ crawler # KBO ๋ฐ์ผ๋ฆฌ ํฌ๋กค๋ฌ
โ ยท kbo_crawler ยท ingest_mongo ยท crawl_profiles ยท crawl_schedule ยท crawl_lineup ยท notify_games
โโ ๐ data
โ โโ ๐ crawling # ์ผ๋ณ ํฌ๋กค ๋คํ (์๋ณธ=MongoDB ยท git ์ ์ธ)
โ โโ ๐ knowledge-base # KBO ๋ฌธํยท์์ ์ฒญํฌ ์ ์ฌ SQL
โโ ๐ scripts # ์ด์ ์ ํธ SQL/py (๊ตฌ์ฅ์ ๋ณด ยท ๋ค๋ง๊ณ ์น ๋ฑ)
โโ ๐ model # ์บ๋ฆญํฐ 3D ๋ชจ๋ธ ์๋ด
โโ ๐ docs # ํ๊ฐ ๋ฆฌํฌํธ ยท ์ํคํ
์ฒ ยท ํ๋ฅด์๋ ์นด๋ ยท ๊ฐ์ด๋
โโ ๐ .github/workflows # CI/CD โ deploy ยท ios-build ยท ios-testflight
โโ ๐ apps ยท infra ยท integrations # ์ด๊ธฐ ๋ชจ๋
ธ๋ ํฌ ์ค์บํด๋ (placeholder)
โโ ๐ requirements.txt ยท Procfile ยท package-lock.json
โโ ๐ README.md
โโ ๐ .env # git ์ ์ธ (๊ฐ์ ํ ์ฑ๋ ๊ณต์ )


















