Spaces:
Running
Running
File size: 2,177 Bytes
8a6248c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | import { generateAIContent } from '../utils/aiHelper.js';
import { extractLanguage, getLanguageName } from '../utils/aiOrchestrator.js';
import dotenv from "dotenv";
export const cropRotationRecommendations = async (req, res) => {
dotenv.config();
const { previousCrop, npkDepletion, waterAvailability, soilType, region } =
req.body;
if (
!previousCrop ||
!npkDepletion ||
!waterAvailability ||
!soilType ||
!region
) {
return res.status(400).json({
error: "Missing required inputs: previousCrop, npkDepletion, waterAvailability, soilType, region",
});
}
const lang = extractLanguage(req);
const langName = getLanguageName(lang);
const langInstruction = lang !== 'en' ? `\n\nRespond STRICTLY in ${langName} language. Translate all fields and values.` : '';
try {
const prompt = `
You are an expert agricultural crop rotation scientist.
Based on the following:
- Previous Crop: ${previousCrop}
- NPK Depletion (major nutrient lost): ${npkDepletion}
- Water Availability: ${waterAvailability}
- Soil Type: ${soilType}
- Region: ${region}
Suggest the best crop to plant next to:
- Restore depleted nutrients naturally
- Increase soil fertility long-term
- Improve economic profitability
Provide the answer ONLY in this strict JSON format:
{
"recommended_crop": "",
"reasons": ["", "", ""],
"nutrient_restoration_benefit": "",
"expected_profitability": "",
"note": ""
}${langInstruction}
`;
const recommendation = await generateAIContent(prompt.trim());
const formattedRecommendation = recommendation
.replace("```json", "")
.replace("```", "")
.trim();
res.status(200).json({
recommendation: formattedRecommendation,
});
} catch (err) {
console.error("Error fetching recommendations: ", err);
res.status(500).json({ error: "Failed to fetch recommendations" });
}
};
|