Skip to content

Latest commit

Β 

History

History
95 lines (69 loc) Β· 4.51 KB

File metadata and controls

95 lines (69 loc) Β· 4.51 KB

Speakat Server

AI 기반 μ˜μ–΄ μŠ€ν”Όν‚Ή ν•™μŠ΅ κ²Œμž„μ˜ λ°±μ—”λ“œ μ„œλ²„μž…λ‹ˆλ‹€.
ν”Œλ ˆμ΄μ–΄λŠ” μ‹€μ œ μƒν™œ μ‹œλ‚˜λ¦¬μ˜€(μž₯보기, 카페 μ£Όλ¬Έ λ“±)μ—μ„œ AI NPC와 μ˜μ–΄λ‘œ λŒ€ν™”ν•˜λ©°, λ°œμŒΒ·λ¬Έλ²•Β·λ§₯락 μ μ ˆμ„±μ„ μ‹€μ‹œκ°„μœΌλ‘œ ν‰κ°€λ°›μŠ΅λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ κ°œμš”

ν•­λͺ© λ‚΄μš©
κΈ°κ°„ 2025.03 ~ 2025.06 (ν•™κΈ° ν”„λ‘œμ νŠΈ)
νŒ€ 규λͺ¨ 4인 (μ„œλ²„ 1, ν΄λΌμ΄μ–ΈνŠΈ 2, 기획 1)
ν΄λΌμ΄μ–ΈνŠΈ Unity 3D λͺ¨λ°”일 κ²Œμž„
μ„œλ²„ ASP.NET Core (.NET 10) REST API

핡심 κΈ°λŠ₯

AI λŒ€ν™” 및 평가 μ‹œμŠ€ν…œ
Claude APIλ₯Ό ν™œμš©ν•˜μ—¬ NPCκ°€ μ‹œλ‚˜λ¦¬μ˜€μ— λ§žλŠ” μžμ—°μŠ€λŸ¬μš΄ μ˜μ–΄ λŒ€ν™”λ₯Ό μƒμ„±ν•˜κ³ , ν”Œλ ˆμ΄μ–΄μ˜ 응닡을 발음 정확도, 문법, λ§₯락 μ μ ˆμ„±, 응닡 μ‹œκ°„ λ“± λ‹€μ°¨μ›μœΌλ‘œ ν‰κ°€ν•©λ‹ˆλ‹€.

μŒμ„± 인식 기반 κ²Œμž„ν”Œλ ˆμ΄
Google STTλ₯Ό 톡해 ν”Œλ ˆμ΄μ–΄μ˜ μŒμ„±μ„ ν…μŠ€νŠΈλ‘œ λ³€ν™˜ν•˜κ³ , 이λ₯Ό AI 평가 νŒŒμ΄ν”„λΌμΈμ— μ „λ‹¬ν•©λ‹ˆλ‹€.

ν€˜μŠ€νŠΈ μ§„ν–‰ 및 ν•™μŠ΅ 좔적
μ‹œλ‚˜λ¦¬μ˜€λ³„ λͺ©ν‘œ(quest objectives)의 달성 μ—¬λΆ€λ₯Ό μ„Έμ…˜ λ‹¨μœ„λ‘œ μΆ”μ ν•˜λ©°, 졜고 기둝과 λˆ„μ  ν•™μŠ΅ 데이터λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.

μ–΄νœ˜ ν•™μŠ΅ (ν”Œλž˜μ‹œμΉ΄λ“œ)
κ²Œμž„ 쀑 λ“±μž₯ν•œ 단어λ₯Ό ν”Œλž˜μ‹œμΉ΄λ“œλ‘œ μ €μž₯ν•˜κ³ , 반볡 ν•™μŠ΅ν•  수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

기술 μŠ€νƒ

μ˜μ—­ 기술 선택 κ·Όκ±°
Framework ASP.NET Core (.NET 10) κ³ μ„±λŠ₯ Kestrel μ„œλ²„, λ‚΄μž₯ DI μ»¨ν…Œμ΄λ„ˆ, κ°•νƒ€μž… μ‹œμŠ€ν…œμœΌλ‘œ API μ•ˆμ •μ„± 확보
ORM EF Core (Pomelo MySQL Provider) Code-First λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μœΌλ‘œ μŠ€ν‚€λ§ˆ 버전 관리, LINQ 기반 νƒ€μž… μ•ˆμ „ 쿼리
Database MySQL 8.0 κ³ μ • μŠ€ν‚€λ§ˆ 기반 데이터 λͺ¨λΈμ— 적합 β€” JSONBκ°€ λΆˆν•„μš”ν•œ κ΅¬μ‘°μ—μ„œ PostgreSQL λŒ€μ‹  선택
Cache Redis 7 μ„Έμ…˜ 캐싱 및 AI 응닡 캐싱을 ν†΅ν•œ API 호좜 λΉ„μš© 절감
AI Claude API NPC λŒ€ν™” 생성 + 닀차원 평가λ₯Ό 단일 API둜 처리, κ΅¬μ‘°ν™”λœ JSON 좜λ ₯ 지원
Voice Google STT μ‹€μ‹œκ°„ μŒμ„±-ν…μŠ€νŠΈ λ³€ν™˜, λ‹€κ΅­μ–΄ 발음 평가 지원
Auth JWT + Google/Kakao OAuth μ†Œμ…œ 둜그인 μ „μš© β€” 자체 νšŒμ›κ°€μž… 없이 μ˜¨λ³΄λ”© 마찰 μ΅œμ†Œν™”
Infra AWS EC2, ALB, ACM, Route 53 ALB + ACM으둜 SSL μ’…λ£Œ 처리, Let's Encrypt λŒ€λΉ„ μΈμ¦μ„œ μžλ™ κ°±μ‹ μœΌλ‘œ 운영 λΆ€λ‹΄ 제거

μ•„ν‚€ν…μ²˜

Clean Architecture (4-Layer)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  Api                     β”‚  ← Controllers, Middleware, DI μ„€μ •
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚              Application                 β”‚  ← Use Cases, DTOs, Interfaces
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                Domain                    β”‚  ← Entities, Enums, Value Objects
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚            Infrastructure                β”‚  ← EF Core, Redis, Claude API, Google STT
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

μ˜μ‘΄μ„± λ°©ν–₯은 μ•ˆμͺ½(Domain)으둜만 ν–₯ν•©λ‹ˆλ‹€. Infrastructure의 μ™ΈλΆ€ μ„œλΉ„μŠ€ κ΅¬ν˜„μ²΄λŠ” Application κ³„μΈ΅μ˜ μΈν„°νŽ˜μ΄μŠ€μ— μ˜μ‘΄ν•˜λ―€λ‘œ, AI 제곡자 ꡐ체(Claude β†’ OpenAI λ“±)λ‚˜ DB ꡐ체 μ‹œ Infrastructure만 μˆ˜μ •ν•˜λ©΄ λ©λ‹ˆλ‹€.

둜컬 개발 ν™˜κ²½

사전 μš”κ΅¬μ‚¬ν•­

  • .NET 10 SDK
  • Docker & Docker Compose

μ‹€ν–‰

# 1. 인프라 μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ (MySQL, Redis)
docker compose up -d

# 2. ν™˜κ²½ λ³€μˆ˜ μ„€μ •
cp appsettings.Development.example.json appsettings.Development.json
# Claude API Key, Google OAuth λ“± μ„€μ •

# 3. DB λ§ˆμ΄κ·Έλ ˆμ΄μ…˜
dotnet ef database update --project src/Infrastructure

# 4. μ„œλ²„ μ‹€ν–‰
dotnet run --project src/Api

브랜치 및 컀밋 μ»¨λ²€μ…˜

브랜치 넀이밍: feature/#[issue번호]-μ„€λͺ… (예: feature/#12-quest-api)

컀밋 λ©”μ‹œμ§€:

✨ feat: ν€˜μŠ€νŠΈ λͺ©λ‘ 쑰회 API κ΅¬ν˜„ (#12)
πŸ› fix: JWT 만료 μ‹œ κ°±μ‹  둜직 μˆ˜μ • (#15)
♻️ refactor: μ„Έμ…˜ μ„œλΉ„μŠ€ μΈν„°νŽ˜μ΄μŠ€ 뢄리 (#18)

브랜치 보호: main λΈŒλžœμΉ˜λŠ” PR 리뷰 ν•„μˆ˜μ΄λ©°, CI 톡과 ν›„ λ¨Έμ§€λ©λ‹ˆλ‹€.