vibe-cli-tool
Version:
VibeCLI v1.9 - 模板商店生态,智能部署生成,多语言支持,交互式学习系统,企业级Web全栈应用CLI工具
111 lines • 4.01 kB
JavaScript
export class AIDecisionEngine {
async analyzeProject(input) {
// 基于输入分析项目类型
const projectType = this.detectProjectType(input.description, input.requirements);
// 推荐技术栈
const recommendedStack = this.recommendTechStack(projectType, input.constraints);
// 计算复杂度分数
const complexity = this.calculateComplexity(input.requirements, input.constraints);
// 估算时间
const estimatedTime = this.estimateTime(complexity, input.constraints.team_size);
return {
projectType,
recommendedStack,
complexity,
estimatedTime
};
}
detectProjectType(description, requirements) {
const desc = description.toLowerCase();
const reqs = requirements.join(' ').toLowerCase();
if (desc.includes('电商') || desc.includes('ecommerce') || desc.includes('商城') ||
reqs.includes('支付') || reqs.includes('购物车') || reqs.includes('商品')) {
return 'ecommerce';
}
if (desc.includes('saas') || desc.includes('平台') ||
reqs.includes('多租户') || reqs.includes('订阅') || reqs.includes('billing')) {
return 'saas';
}
if (desc.includes('博客') || desc.includes('blog') || desc.includes('内容管理')) {
return 'blog';
}
if (desc.includes('作品集') || desc.includes('portfolio') || desc.includes('个人网站')) {
return 'portfolio';
}
if (desc.includes('仪表板') || desc.includes('dashboard') || desc.includes('管理后台')) {
return 'dashboard';
}
// 默认返回 blog
return 'blog';
}
recommendTechStack(projectType, constraints) {
const baseStack = {
database: 'postgresql',
uiFramework: 'tailwind-radix',
features: ['auth']
};
switch (projectType) {
case 'ecommerce':
return {
...baseStack,
features: ['auth', 'payment', 'admin', 'upload', 'email']
};
case 'saas':
return {
...baseStack,
features: ['auth', 'billing', 'admin', 'api', 'analytics']
};
case 'dashboard':
return {
...baseStack,
features: ['auth', 'admin', 'analytics', 'charts']
};
case 'blog':
return {
...baseStack,
features: ['auth', 'cms', 'upload']
};
case 'portfolio':
return {
...baseStack,
features: ['upload', 'cms']
};
default:
return baseStack;
}
}
calculateComplexity(requirements, constraints) {
let complexity = 3; // 基础复杂度
// 根据需求数量增加复杂度
complexity += requirements.length * 0.5;
// 根据约束条件调整
if (constraints.complexity === 'complex') {
complexity += 3;
}
else if (constraints.complexity === 'medium') {
complexity += 1;
}
// 根据预算调整
if (constraints.budget === 'high') {
complexity += 1;
}
return Math.min(Math.max(complexity, 1), 10);
}
estimateTime(complexity, teamSize) {
const baseWeeks = complexity * 0.5;
const adjustedWeeks = baseWeeks / Math.sqrt(teamSize);
if (adjustedWeeks < 2) {
return '1-2周';
}
else if (adjustedWeeks < 4) {
return '2-3周';
}
else if (adjustedWeeks < 8) {
return '1-2个月';
}
else {
return '2-3个月';
}
}
}
//# sourceMappingURL=ai-decision-engine.js.map