frontend changes

This commit is contained in:
Chandini 2025-09-19 15:49:23 +05:30
parent 2cc7cdbf00
commit 983624b12d

View File

@ -5,6 +5,8 @@ export interface AIAnalysisResponse {
logicRules: string[] logicRules: string[]
} }
import { BACKEND_URL } from "@/config/backend"
export async function analyzeFeatureWithAI( export async function analyzeFeatureWithAI(
featureName: string, featureName: string,
description: string, description: string,
@ -13,17 +15,50 @@ export async function analyzeFeatureWithAI(
userSelectedComplexity?: Complexity userSelectedComplexity?: Complexity
): Promise<AIAnalysisResponse> { ): Promise<AIAnalysisResponse> {
try { try {
const res = await fetch('/api/ai/analyze', { // Prefer dedicated analysis endpoint if available in requirements service
const primaryUrl = `${BACKEND_URL}/api/requirements/analyze-feature`
let res = await fetch(primaryUrl, {
method: 'POST', method: 'POST',
headers: { 'Content-Type': 'application/json' }, headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ featureName, description, requirements, projectType, complexity: userSelectedComplexity }), body: JSON.stringify({ featureName, description, requirements, projectType, complexity: userSelectedComplexity }),
}) })
const json = await res.json()
if (!res.ok || !json.success) { // If primary endpoint not found, fall back to mockup service to at least return deterministic hints
throw new Error(json.message || `AI request failed (${res.status})`) if (res.status === 404) {
const fallbackUrl = `${BACKEND_URL}/api/mockup/generate-wireframe`
res = await fetch(fallbackUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
prompt: `${featureName}: ${description}. Requirements: ${requirements.join('; ')}`,
device: 'desktop',
}),
})
}
const text = await res.text()
let json: any = {}
try { json = text ? JSON.parse(text) : {} } catch { /* non-json */ }
if (!res.ok) {
throw new Error(json?.message || `AI request failed (${res.status})`)
}
// Map various backend shapes to AIAnalysisResponse
if (json?.success && json?.data?.complexity && json?.data?.logicRules) {
return { complexity: json.data.complexity as Complexity, logicRules: json.data.logicRules as string[] }
}
if (json?.complexity && json?.logicRules) {
return { complexity: json.complexity as Complexity, logicRules: json.logicRules as string[] }
}
// If mockup returns something else, provide sensible defaults
return {
complexity: userSelectedComplexity || 'medium',
logicRules: [
'Generated via fallback path; refine requirements for better analysis',
'Consider validation rules for key fields',
],
} }
const data = json.data as AIAnalysisResponse
return { complexity: data.complexity, logicRules: data.logicRules }
} catch (error) { } catch (error) {
// Fallback if the server route fails // Fallback if the server route fails
return { return {