feat: 도메인 관리 기능 추가 (Domain Agent 연동)

- manage_domain Function Calling 도구 추가
- OpenAI Assistants API 기반 Domain Agent 연동
- Namecheap API 호출 (도메인 목록, 네임서버 관리 등)
- user_domains 테이블로 사용자별 도메인 권한 관리
- 타임스탬프 검증 비활성화 (WEBHOOK_SECRET으로 충분)
- CLAUDE.md 프로젝트 문서 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
kappa
2026-01-16 08:50:16 +09:00
parent 2694531076
commit 8b2ccf05b5
9 changed files with 403 additions and 23 deletions

View File

@@ -20,8 +20,9 @@
- **OpenAI GPT-4o-mini**: 고품질 AI 응답 및 Function Calling 지원
- **사용자 프로필**: 대화에서 사용자의 관심사, 목표, 맥락을 추출하여 프로필 구축
- **Function Calling**: 날씨, 검색, 시간, 계산, **문서 조회** 등 AI가 자동으로 도구 호출
- **Function Calling**: 날씨, 검색, 시간, 계산, **문서 조회**, **도메인 관리** 등 AI가 자동으로 도구 호출
- **Context7 연동**: 프로그래밍 라이브러리 공식 문서 실시간 조회
- **Domain Agent**: OpenAI Assistants API 기반 도메인 관리 에이전트 연동
- **무한 컨텍스트**: 슬라이딩 윈도우(3개)로 프로필 유지, 무제한 대화 기억
- **개인화 응답**: 프로필 기반으로 맞춤형 AI 응답 제공
- **폴백 지원**: OpenAI 미설정 시 Workers AI(Llama)로 자동 전환
@@ -34,6 +35,8 @@
| **D1** | SQLite 데이터베이스 |
| **OpenAI** | GPT-4o-mini + Function Calling |
| **Context7** | 라이브러리 문서 조회 API |
| **Domain Agent** | 도메인 관리 (OpenAI Assistants) |
| **Namecheap API** | 도메인 조회/관리 백엔드 |
| **Workers AI** | 폴백용 (Llama 3.1 8B) |
---
@@ -57,12 +60,14 @@
│ (Function Call) │ 도구 호출 자동 판단
└──────────────────┘
┌───┴───┬───────┬───────┬───────┐
▼ ▼ ▼ ▼ ▼
[날씨] [검색] [시간] [계산] [문서] → 외부 API
│ │ │ │ │
│ │ │ │ └── Context7 API
└───┬───┴───────┴───────┴───────┘
┌───┴───┬───────┬───────┬───────┬───────
▼ ▼ ▼ ▼ ▼
[날씨] [검색] [시간] [계산] [문서] [도메인] → 외부 API
│ │ │ │ │
│ │ │ │ │ └── Domain Agent (Assistants API)
│ │ │ │ │ ↓
│ │ │ │ └── Context7 API Namecheap API
└───┬───┴───────┴───────┴───────┴───────────────────┘
┌──────────────────┐
│ 최종 응답 생성 │
@@ -120,6 +125,7 @@ OpenAI Function Calling을 통해 AI가 자동으로 필요한 도구를 호출
| **시간** | "지금 몇 시야", "뉴욕 시간" | 내장 |
| **계산** | "123 * 456", "100의 20%" | 내장 |
| **문서** | "React hooks 사용법", "OpenAI API 예제" | Context7 |
| **도메인** | "도메인 목록", "anvil.it.com 네임서버" | Domain Agent (소유자 전용) |
### 동작 방식
@@ -297,6 +303,8 @@ binding = "AI"
SUMMARY_THRESHOLD = "20"
MAX_SUMMARIES_PER_USER = "3"
N8N_WEBHOOK_URL = "https://n8n.anvil.it.com"
DOMAIN_AGENT_ID = "asst_MzPFKoqt7V4w6bc0UwcXU4ob"
DOMAIN_OWNER_ID = "821596605"
[[d1_databases]]
binding = "DB"