41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
export type Complexity = 'low' | 'medium' | 'high'
|
|
|
|
export interface AIAnalysisResponse {
|
|
complexity: Complexity
|
|
logicRules: string[]
|
|
}
|
|
|
|
export async function analyzeFeatureWithAI(
|
|
featureName: string,
|
|
description: string,
|
|
requirements: string[],
|
|
projectType?: string,
|
|
userSelectedComplexity?: Complexity
|
|
): Promise<AIAnalysisResponse> {
|
|
try {
|
|
const res = await fetch('/api/ai/analyze', {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({ featureName, description, requirements, projectType, complexity: userSelectedComplexity }),
|
|
})
|
|
const json = await res.json()
|
|
if (!res.ok || !json.success) {
|
|
throw new Error(json.message || `AI request failed (${res.status})`)
|
|
}
|
|
const data = json.data as AIAnalysisResponse
|
|
return { complexity: data.complexity, logicRules: data.logicRules }
|
|
} catch (error) {
|
|
// Fallback if the server route fails
|
|
return {
|
|
complexity: 'medium',
|
|
logicRules: [
|
|
'Unable to determine specific business rules due to insufficient requirements information',
|
|
'Generic logic implementation may be required',
|
|
'Basic validation rules should be considered',
|
|
],
|
|
}
|
|
}
|
|
}
|
|
|
|
|