feat: add server ordering system with session-based flow

- Add server recommendation integration (SERVER_RECOMMEND worker)
- Implement KV-based session management for multi-step ordering
- Add Linode/Vultr API clients for server provisioning
- Add server-tool for Function Calling support

refactor: major code reorganization (Phase 1-3)

- Remove 443 lines of deprecated callback handlers
- Extract handlers to separate files (message-handler, callback-handler)
- Extract cloud-spec-service, server-recommend-service
- Centralize constants (OS_IMAGES, REGION_FLAGS, NUM_EMOJIS)
- webhook.ts reduced from 1,951 to 30 lines

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
kappa
2026-01-24 21:01:38 +09:00
parent dab279c765
commit 6563ee0650
14 changed files with 4019 additions and 241 deletions

View File

@@ -6,7 +6,7 @@ compatibility_date = "2024-01-01"
binding = "AI"
[vars]
ENVIRONMENT = "production" # 환경 설정 (production | development)
ENVIRONMENT = "development" # 로컬: development, 배포 시 secrets로 production 설정
SUMMARY_THRESHOLD = "20" # 프로필 업데이트 주기 (메시지 수)
MAX_SUMMARIES_PER_USER = "3" # 유지할 프로필 버전 수 (슬라이딩 윈도우)
N8N_WEBHOOK_URL = "https://n8n.anvil.it.com" # n8n 연동 (선택)
@@ -21,14 +21,36 @@ BRAVE_API_BASE = "https://api.search.brave.com/res/v1"
WTTR_IN_URL = "https://wttr.in"
HOSTING_SITE_URL = "https://hosting.anvil.it.com"
# VPS Provider API Endpoints
LINODE_API_BASE = "https://api.linode.com/v4"
VULTR_API_BASE = "https://api.vultr.com/v2"
DEFAULT_SERVER_REGION = "ap-northeast" # 오사카 (Linode: ap-northeast, Vultr: nrt)
SERVER_RECOMMEND_API_URL = "https://server-recommend.kappa-d8e.workers.dev/api/recommend" # 외부 AI 추천 API (선택)
[[d1_databases]]
binding = "DB"
database_name = "telegram-conversations"
database_id = "c285bb5b-888b-405d-b36f-475ae5aed20e"
[[d1_databases]]
binding = "CLOUD_DB"
database_name = "cloud-instances-db"
database_id = "bbcb472d-b25e-4e48-b6ea-112f9fffb4a8"
[[kv_namespaces]]
binding = "RATE_LIMIT_KV"
id = "15bcdcbde94046fe936c89b2e7d85b64"
preview_id = "0d3af750739e40d4a0324889564d74a7"
[[kv_namespaces]]
binding = "SESSION_KV"
id = "24ee962396cc4e9ab1fb47ceacf62c7d"
preview_id = "302ad556567447cbac49c20bded4eb7e"
# Service Binding: Worker-to-Worker 호출용 (Cloudflare Error 1042 방지)
[[services]]
binding = "SERVER_RECOMMEND"
service = "server-recommend"
# Email Worker 설정 (SMS → 메일 수신)
# Cloudflare Dashboard에서 Email Routing 설정 필요:
@@ -49,3 +71,6 @@ crons = ["0 15 * * *"] # UTC 15:00 = KST 00:00
# - DEPOSIT_API_SECRET: Deposit API 인증 키 (namecheap-api 연동)
# - DOMAIN_OWNER_ID: 도메인 관리 권한 Telegram ID (보안상 secrets 권장)
# - DEPOSIT_ADMIN_ID: 예치금 관리 권한 Telegram ID (보안상 secrets 권장)
# - LINODE_API_KEY: Linode Personal Access Token
# - VULTR_API_KEY: Vultr API Key
# - SERVER_ADMIN_ID: 서버 관리 알림 수신자 Telegram ID