File: //var/www/igsms.viitorcloud.co/igsmsportal/services/geminiService.ts
import { GoogleGenAI, Type } from "@google/genai";
const ai = new GoogleGenAI({ apiKey: process.env.API_KEY });
export const autoCategorizeGrievance = async (description: string) => {
try {
const response = await ai.models.generateContent({
model: "gemini-3-flash-preview",
contents: `Analyze the following public grievance and suggest the most appropriate Government Department and Category.
Description: "${description}"`,
config: {
responseMimeType: "application/json",
responseSchema: {
type: Type.OBJECT,
properties: {
department: { type: Type.STRING, description: "Name of the government department (e.g., Water Supply, Revenue, Health, Education, Urban Development)" },
category: { type: Type.STRING, description: "Specific category of grievance within that department" },
priority: { type: Type.STRING, enum: ["LOW", "MEDIUM", "HIGH", "URGENT"] }
},
required: ["department", "category", "priority"]
}
}
});
return JSON.parse(response.text || "{}");
} catch (error) {
console.error("AI Categorization failed", error);
return null;
}
};
export const summarizeGrievance = async (description: string) => {
try {
const response = await ai.models.generateContent({
model: "gemini-3-flash-preview",
contents: `Summarize this public grievance in 2-3 concise bullet points for a government officer to review quickly:
"${description}"`,
config: {
systemInstruction: "You are a professional administrative assistant for the Government of Gujarat. Provide concise, objective summaries."
}
});
return response.text;
} catch (error) {
console.error("AI Summarization failed", error);
return "Summary unavailable.";
}
};