feat: 대역폭 추정 및 DAU 표시 기능 추가

- 동시접속자 기반 월간 대역폭 자동 추정
- DAU(일일활성사용자) 추정치 표시 (동접 × 10-14)
- 대역폭 기반 Linode/Vultr 자동 선택 로직
- 비용 분석에 대역폭 비용 포함
- 지역 미선택시 서울/도쿄/오사카/싱가포르 기본 표시
- 지역별 서버 분리 표시 (GROUP BY instance + region)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
kappa
2026-01-25 09:40:36 +09:00
commit 4cb9da06dc
3337 changed files with 1048645 additions and 0 deletions

132
SETUP.md Normal file
View File

@@ -0,0 +1,132 @@
# Server Recommendation System - Setup Guide
## 1. Create Cloudflare Resources
### Create D1 Database
```bash
# Create D1 database
npx wrangler d1 create server-recommend-db
# Copy the database_id from output and update wrangler.toml
```
### Create KV Namespace
```bash
# Create KV namespace for caching
npx wrangler kv:namespace create CACHE
# Copy the id from output and update wrangler.toml
```
## 2. Initialize Database Schema
```bash
# Execute schema.sql against your D1 database
npx wrangler d1 execute server-recommend-db --file=schema.sql
```
## 3. Seed Sample Data (Optional)
Create a file `seed.sql` with sample server data and run:
```bash
npx wrangler d1 execute server-recommend-db --file=seed.sql
```
## 4. Development
```bash
# Start local development server
npm run dev
# Type checking
npm run typecheck
```
## 5. Deployment
```bash
# Deploy to Cloudflare Workers
npm run deploy
```
## API Endpoints
### Health Check
```bash
curl https://your-worker.workers.dev/api/health
```
### Get Servers
```bash
curl "https://your-worker.workers.dev/api/servers?minCpu=4&minMemory=8"
```
### Request Recommendations
```bash
curl -X POST https://your-worker.workers.dev/api/recommend \
-H "Content-Type: application/json" \
-d '{
"cpu_cores": 4,
"memory_gb": 8,
"storage_gb": 100,
"network_bandwidth_mbps": 1000,
"sla_requirement": 99.9,
"budget_monthly": 200,
"regions": ["us-east-1", "us-west-2"]
}'
```
## Environment Variables
No environment variables needed - all bindings are configured in `wrangler.toml`:
- `AI`: Workers AI binding (automatic)
- `DB`: D1 Database binding
- `CACHE`: KV namespace binding
## Testing Workers AI Integration
The worker uses `@cf/meta/llama-3.1-8b-instruct` model. Test with:
```bash
# Local development automatically uses Workers AI
npm run dev
# Make test request
curl -X POST http://localhost:8787/api/recommend \
-H "Content-Type: application/json" \
-d '{
"cpu_cores": 2,
"memory_gb": 4,
"storage_gb": 50
}'
```
## Cache Strategy
Recommendations are cached in KV for 1 hour based on request parameters:
- Cache key format: `recommend:cpu:X|mem:Y|stor:Z|...`
- TTL: 3600 seconds (1 hour)
- Cache hit/miss logged in console
## Error Handling
All endpoints return proper HTTP status codes:
- `200`: Success
- `400`: Invalid request (validation error)
- `404`: Endpoint not found
- `500`: Internal server error
CORS is enabled for all origins (`Access-Control-Allow-Origin: *`).
## Monitoring
Enable observability in `wrangler.toml`:
```toml
[observability]
enabled = true
```
View logs:
```bash
npx wrangler tail
```