import React, { useState, useEffect } from 'react'; import { useAstroContext } from '../context/AstroContext'; import ModelSelector from './ModelSelector'; import { ArrowRight, Loader2, Copy, Check, ArrowLeft, Sparkles, ShieldCheck } from 'lucide-react'; import ReactMarkdown from 'react-markdown'; import { motion } from 'motion/react'; import { VEDIC_KNOWLEDGE_BASE } from '../services/astroWorkflow'; import { getLifeAreaById } from '../services/vargaMapping'; import { summarizeVargaData, extractErrorMessage } from '../services/geminiService'; export default function Screen4VargaOutput() { const { state, setScreen, setModelPreference, setStepError } = useAstroContext(); const [loading, setLoading] = useState(true); const [vargaResults, setVargaResults] = useState>({}); const [vargaModels, setVargaModels] = useState>({}); const [copied, setCopied] = useState(false); const selectedModel = state.modelPreferences['screen4'] || 'gemini-2.5-flash'; const currentError = state.lastError['screen4']; const currentArea = state.selectedLifeArea ? getLifeAreaById(state.selectedLifeArea) : null; // We process all vargas INCLUDING D1 if it's in the list, but D1 comes from Step 1 data usually. // Actually, to satisfy the "Comparison with D1" logic, we need to pass D1 data into every Varga prompt. const allVargas = currentArea ? currentArea.vargas : []; const vargasToProcess = allVargas.filter(v => v !== 'D1'); const processVargas = async (retryModel?: string) => { if (!currentArea) { setLoading(false); return; } setLoading(true); setStepError('screen4', null); const results: Record = { ...vargaResults }; const models: Record = { ...vargaModels }; const targetModel = retryModel || selectedModel; try { // Special case: Get technical summary for D1 if not already present results['D1'] = state.step1_2_Data?.summary || 'No D1 summary available.'; // Process other vargas in parallel await Promise.all(vargasToProcess.map(async (varga) => { const rawData = state.step3_Data[varga]; if (!rawData || rawData.trim() === '') { results[varga] = `*No raw data provided for ${varga}.*`; return; } const result = await summarizeVargaData( varga, rawData, state.step1_2_Data?.rasiChartText || '', targetModel ); results[varga] = result.text; models[varga] = result.model; })); setVargaResults(results); setVargaModels(models); } catch (err: any) { console.error(err); setStepError('screen4', extractErrorMessage(err)); } finally { setLoading(false); } }; useEffect(() => { if (loading || currentError || Object.keys(vargaResults).length > 1) return; processVargas(); }, [state.selectedLifeArea, state.step3_Data]); const handleModelChange = (modelId: string) => { setModelPreference('screen4', modelId); if (currentError) { processVargas(modelId); } }; const handleCopySynthesis = () => { if (!currentArea) return; let compiledTechData = `--- D1 (RASHI) FOUNDATION ---\n${state.step1_2_Data?.summary || 'No summary available.'}\n`; vargasToProcess.forEach(varga => { compiledTechData += `\n--- ${varga} MICRO-LENS DATA ---\n${vargaResults[varga] || 'No data generated.'}\n`; }); const prompt = `You are the Vedic Astrology Interpretation by Nhi Vo. I want to ask about a specific Life Area/Concern. MY SPECIFIC CONCERN: ${currentArea.label.toUpperCase()} FOLLOWING THE CONTEXT OF STEP 3 (VARGA VERIFICATION): ${VEDIC_KNOWLEDGE_BASE.step3} ${currentArea.promptGuidance} TECHNICAL DATA FOR ANALYSIS (D1 + VARGAS): ${compiledTechData} Please synthesize the structural foundation of the D1 with the specific micro-lens data provided above to give me a definitive reading on my concern. `; navigator.clipboard.writeText(prompt); setCopied(true); setTimeout(() => setCopied(false), 2000); }; if (!currentArea) { return (

Error: No life area selected. Please go back to Step 3.

); } if (loading) { return (

Aligning the Micro-Lenses...

Generating Varga Audit (Screen 4)

); } if (currentError) { return (

Varga Lenses Obscured...

{currentError}

One or more micro-lenses failed to align. Try switching models and retrying:

); } return (

Synthesis Audit

Step 3 • Life Area Integration

AI Intelligence Engine

{currentArea.label}

The technical data for {vargasToProcess.join(' and ')} has been successfully extracted. Click the button below to generate a master prompt for Vedic Astrology Interpretation by Nhi Vo that synthesizes these micro-lenses deeply with your foundational D1 chart.

Technical Extraction Preview

{allVargas.map(varga => (
{varga} Chart
{vargaResults[varga] || 'No data extracted.'}
{vargaModels[varga] && (

Generated by: {vargaModels[varga]}

)}
))}
); }