feat: add region diversity, HTML report, and transfer pricing
Region Diversity: - No region specified → same spec from 3 different regions - Cache key now includes region_preference - Fixed server_id to use ap.id (pricing) instead of ai.id (instance) HTML Report: - New /api/recommend/report endpoint for printable reports - Supports multi-language (en, ko, ja, zh) - Displays bandwidth_info with proper KRW formatting Transfer Pricing: - bandwidth_info includes overage costs from anvil_transfer_pricing - available_regions shows alternative regions with prices Code Quality: - Extracted region-utils.ts for flexible region matching - Cleaned up AI prompt (removed obsolete provider references) - Renamed project to cloud-orchestrator Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -76,6 +76,7 @@ export const USE_CASE_CONFIGS: UseCaseConfig[] = [
|
||||
export const i18n: Record<string, {
|
||||
missingFields: string;
|
||||
invalidFields: string;
|
||||
techStackItemLength: string;
|
||||
schema: Record<string, string>;
|
||||
example: Record<string, any>;
|
||||
aiLanguageInstruction: string;
|
||||
@@ -83,6 +84,7 @@ export const i18n: Record<string, {
|
||||
en: {
|
||||
missingFields: 'Missing required fields',
|
||||
invalidFields: 'Invalid field values',
|
||||
techStackItemLength: 'all items must be strings with max 50 characters',
|
||||
schema: {
|
||||
tech_stack: "(required) string[] - e.g. ['nginx', 'nodejs']",
|
||||
expected_users: "(required) number - expected concurrent users, e.g. 1000",
|
||||
@@ -102,6 +104,7 @@ export const i18n: Record<string, {
|
||||
zh: {
|
||||
missingFields: '缺少必填字段',
|
||||
invalidFields: '字段值无效',
|
||||
techStackItemLength: '所有项目必须是最长50个字符的字符串',
|
||||
schema: {
|
||||
tech_stack: "(必填) string[] - 例如 ['nginx', 'nodejs']",
|
||||
expected_users: "(必填) number - 预计同时在线用户数,例如 1000",
|
||||
@@ -121,6 +124,7 @@ export const i18n: Record<string, {
|
||||
ja: {
|
||||
missingFields: '必須フィールドがありません',
|
||||
invalidFields: 'フィールド値が無効です',
|
||||
techStackItemLength: 'すべての項目は最大50文字の文字列でなければなりません',
|
||||
schema: {
|
||||
tech_stack: "(必須) string[] - 例: ['nginx', 'nodejs']",
|
||||
expected_users: "(必須) number - 予想同時接続ユーザー数、例: 1000",
|
||||
@@ -140,6 +144,7 @@ export const i18n: Record<string, {
|
||||
ko: {
|
||||
missingFields: '필수 필드가 누락되었습니다',
|
||||
invalidFields: '필드 값이 잘못되었습니다',
|
||||
techStackItemLength: '모든 항목은 50자 이하의 문자열이어야 합니다',
|
||||
schema: {
|
||||
tech_stack: "(필수) string[] - 예: ['nginx', 'nodejs']",
|
||||
expected_users: "(필수) number - 예상 동시 접속자 수, 예: 1000",
|
||||
|
||||
Reference in New Issue
Block a user