feat(api): add pagination to messages endpoint and improve chat API robustness

- Add pagination support to /api/conversations/[id]/messages with limit and before query params, returning hasMore and cursor for efficient message fetching
- Enhance /api/ollama/chat by adding non-blocking Ollama availability check and conditionally disabling debug logging in production环境下Featured
This commit is contained in:
Evandro Fonseca Junior committed 2025-10-29 17:22:21 -03:00
1 parent 30290ae87a
commit 1545020afe
9 files changed
+114 -38

No files matched your search

+15 -2
View File
@@ -10,6 +10,10 @@ import {
export const dynamic = "force-dynamic";
// Cache leve em memória para reduzir chamadas repetidas em curto intervalo
let __modelsCache: { ts: number; payload: any } | null = null;
const CACHE_TTL_MS = 8000; // 8s
function normalizeModel(model: any): ModelInfo {
const name: string = model?.model || model?.name || "unknown";
const sizeBytes: number = model?.size || 0;
@@ -30,6 +34,11 @@ function normalizeModel(model: any): ModelInfo {
export async function GET() {
try {
// Tentar retorno via cache recente
if (__modelsCache && Date.now() - __modelsCache.ts < CACHE_TTL_MS) {
return NextResponse.json(__modelsCache.payload);
}
let models: any[] = [];
// Tentar garantir disponibilidade rapidamente (não bloquear longamente a UI)
await ensureOllamaAvailable({ timeoutMs: 3000 }).catch(() => {});
@@ -39,8 +48,12 @@ export async function GET() {
models = await listModelsViaHttp();
}
const normalized = models.map((m) => normalizeModel(m));
return NextResponse.json({ offline: false, models: normalized });
const payload = { offline: false, models: normalized };
__modelsCache = { ts: Date.now(), payload };
return NextResponse.json(payload);
} catch (e) {
return NextResponse.json({ offline: true, models: mockModels });
const payload = { offline: true, models: mockModels };
__modelsCache = { ts: Date.now(), payload };
return NextResponse.json(payload);
}
}