fix: use static rotating greeting list instead of AI-generated login greeting
This commit is contained in:
@@ -1,61 +1,27 @@
|
|||||||
import express, { Request, Response } from "express";
|
import express, { Request, Response } from "express";
|
||||||
import { prisma as db } from "@repo/db/client";
|
|
||||||
import { resolveAiProvider, getLlm } from "../ai/llm-factory";
|
|
||||||
|
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
|
|
||||||
const FALLBACK_GREETINGS = [
|
const GREETINGS = [
|
||||||
"How can I help you today?",
|
"How can I help you today?",
|
||||||
"What can I do for you today?",
|
"What can I do for you today?",
|
||||||
"Ready when you are.",
|
"Ready when you are.",
|
||||||
"What's on your mind today?",
|
"What's on your mind today?",
|
||||||
"Let's get started.",
|
"Let's get started.",
|
||||||
|
"What would you like to work on?",
|
||||||
|
"How can I assist you?",
|
||||||
|
"What are we tackling today?",
|
||||||
|
"Where should we begin?",
|
||||||
|
"Let me know what you need.",
|
||||||
|
"What brings you here today?",
|
||||||
|
"How can I make your day easier?",
|
||||||
|
"What's next on the list?",
|
||||||
|
"I'm here whenever you're ready.",
|
||||||
];
|
];
|
||||||
|
|
||||||
let cachedGreeting: { text: string; date: string } | null = null;
|
|
||||||
|
|
||||||
function todayKey() {
|
|
||||||
return new Date().toISOString().slice(0, 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
router.get("/", async (_req: Request, res: Response): Promise<any> => {
|
router.get("/", async (_req: Request, res: Response): Promise<any> => {
|
||||||
try {
|
const greeting = GREETINGS[Math.floor(Math.random() * GREETINGS.length)];
|
||||||
const today = todayKey();
|
|
||||||
|
|
||||||
if (cachedGreeting && cachedGreeting.date === today) {
|
|
||||||
return res.status(200).json({ greeting: cachedGreeting.text });
|
|
||||||
}
|
|
||||||
|
|
||||||
const aiSettings = await db.aiSettings.findFirst();
|
|
||||||
const activeAi = aiSettings ? resolveAiProvider(aiSettings) : null;
|
|
||||||
|
|
||||||
if (!activeAi) {
|
|
||||||
const fallback = FALLBACK_GREETINGS[Math.floor(Math.random() * FALLBACK_GREETINGS.length)];
|
|
||||||
return res.status(200).json({ greeting: fallback });
|
|
||||||
}
|
|
||||||
|
|
||||||
const llm = getLlm(activeAi.provider, activeAi.key, activeAi.model);
|
|
||||||
const result = await llm.invoke([
|
|
||||||
{
|
|
||||||
role: "system",
|
|
||||||
content: "Generate a single short AI greeting, similar to how ChatGPT or Claude greets users. Keep it to one short sentence. Examples of the style: 'How can I help you today?', 'What's on your mind?', 'Ready when you are.', 'What can I do for you today?'. Be warm but concise. Do not use emojis. Do not mention names. Vary each greeting.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
role: "user",
|
|
||||||
content: "Generate a short greeting.",
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
|
|
||||||
const greeting = typeof result.content === "string"
|
|
||||||
? result.content.trim()
|
|
||||||
: FALLBACK_GREETINGS[0]!;
|
|
||||||
|
|
||||||
cachedGreeting = { text: greeting, date: today };
|
|
||||||
return res.status(200).json({ greeting });
|
return res.status(200).json({ greeting });
|
||||||
} catch {
|
|
||||||
const fallback = FALLBACK_GREETINGS[Math.floor(Math.random() * FALLBACK_GREETINGS.length)];
|
|
||||||
return res.status(200).json({ greeting: fallback });
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
export default router;
|
export default router;
|
||||||
|
|||||||
Reference in New Issue
Block a user