Files
cloud-orchestrator/REFACTOR_SUMMARY.md
kappa 4bed3237fc fix: address remaining code review issues
- Apply sanitizeForAIPrompt to AI prompt (prevent prompt injection)
- Replace hardcoded provider IDs with name-based filtering
- Remove dead code (queryVPSBenchmarks function)
- Use LIMITS.MAX_REQUEST_BODY_BYTES constant
- Change parseAIResponse parameter from `any` to `unknown`

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 18:15:09 +09:00

98 lines
2.6 KiB
Markdown

# Modularization Summary
## New File Structure
```
src/
├── index.ts # Main worker entry point (clean, ~90 lines)
├── types.ts # All TypeScript interfaces (complete)
├── config.ts # USE_CASE_CONFIGS and i18n messages (complete)
├── utils.ts # Utility functions (~650 lines, complete)
├── handlers/
│ ├── health.ts # GET /api/health (complete)
│ ├── servers.ts # GET /api/servers (complete)
│ └── recommend.ts # POST /api/recommend (~1100 lines)
```
## Functions by Module
### index.ts (NEW)
- Main fetch handler
- Route handling
- CORS setup
- Rate limit checking
### types.ts (COMPLETE)
All interfaces extracted from original index.ts
### config.ts (COMPLETE)
- USE_CASE_CONFIGS
- i18n messages
### utils.ts (COMPLETE)
- jsonResponse()
- hashString()
- sanitizeCacheValue()
- generateCacheKey()
- escapeLikePattern()
- Type guards: isValidServer(), isValidVPSBenchmark(), etc.
- validateRecommendRequest()
- getAllowedOrigin()
- findUseCaseConfig()
- getDauMultiplier()
- getActiveUserRatio()
- estimateBandwidth()
- getProviderBandwidthAllocation()
- calculateBandwidthInfo()
- checkRateLimit()
### handlers/health.ts (COMPLETE)
- handleHealth()
### handlers/servers.ts (COMPLETE)
- handleGetServers()
### handlers/recommend.ts (TO CREATE)
- handleRecommend() - Main handler
- queryCandidateServers() - D1 query for servers
- queryBenchmarkData() - Phoronix benchmarks
- getBenchmarkReference() - Match benchmarks to servers
- queryVPSBenchmarks() - Geekbench data
- queryVPSBenchmarksBatch() - Batch benchmark query
- formatVPSBenchmarkSummary() - Format for AI prompt
- formatBenchmarkSummary() - Format for AI prompt
- queryTechSpecs() - Tech stack specs
- formatTechSpecsForPrompt() - Format for AI prompt
- getAIRecommendations() - OpenAI GPT-4o-mini call
- parseAIResponse() - Parse AI JSON response
## Migration Status
✅ types.ts - DONE
✅ config.ts - DONE
✅ utils.ts - DONE
✅ handlers/health.ts - DONE
✅ handlers/servers.ts - DONE
⏳ handlers/recommend.ts - IN PROGRESS (extracted functions ready)
⏳ index.ts - NEW version created (index.new.ts)
## Next Steps
1. Create handlers/recommend.ts with all extracted functions
2. Backup original index.ts
3. Replace index.ts with index.new.ts
4. Run TypeScript typecheck
5. Test with `npm run dev`
## Size Reduction
Original: index.ts (2381 lines)
New distribution:
- index.ts: ~90 lines (97% reduction)
- types.ts: ~175 lines
- config.ts: ~140 lines
- utils.ts: ~650 lines
- handlers/: ~1300 lines total
Total: ~2355 lines (modular + maintainable)