MCPcopy Create free account
hub / github.com/Thanas-R/Virdis / fetchAiAnalysis

Function fetchAiAnalysis

src/components/FieldDetailView.tsx:322–352  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

320 }, [field.id]);
321
322 const fetchAiAnalysis = async () => {
323 setAiLoading(true);
324 setShowAnalysis(true);
325 try {
326 const ndviEstimate = ndviStats?.mean_ndvi?.toFixed(2) || "0.55";
327 const { data, error } = await supabase.functions.invoke("analyze-field", {
328 body: {
329 fieldName: field.name, crop: field.crop, area: areaAcres, location: field.location,
330 temperature: weather?.temperature_2m ?? 25, humidity: weather?.relative_humidity_2m ?? 60,
331 windSpeed: weather?.wind_speed_10m ?? 10, soilMoisture: soilMoisture ?? 45, ndviEstimate,
332 isUrban: urban,
333 soilData: soilData ? {
334 type: soilData.classification.soil_class,
335 ph: soilData.metrics.ph,
336 soc: soilData.metrics.soc_g_per_kg,
337 nitrogen: soilData.metrics.nitrogen_g_per_kg,
338 texture: soilData.texture.usda_class,
339 waterRetention: soilData.water_retention,
340 cec: soilData.metrics.cec,
341 } : undefined,
342 aqiData: aqiData ? { pm2_5: aqiData.pm2_5, pm10: aqiData.pm10, aqi: aqiData.european_aqi } : undefined,
343 },
344 });
345 if (error) throw error;
346 setAiAnalysis(data.analysis);
347 setCache(ANALYSIS_CACHE_KEY, field.id, data.analysis);
348 } catch (e) {
349 console.error("AI analysis error:", e);
350 setAiAnalysis("Analysis temporarily unavailable. Please try again.");
351 } finally { setAiLoading(false); }
352 };
353
354 const analysisBlocks = useMemo(() => splitAnalysisBlocks(aiAnalysis), [aiAnalysis]);
355

Callers

nothing calls this directly

Calls 1

setCacheFunction · 0.85

Tested by

no test coverage detected