fix(image-service): resolve next.js build crash and strict TS lint warnings for ci deploy

This commit is contained in:
2026-02-22 22:14:35 +01:00
parent 5f7a254fcb
commit c00f4e5ea5
5 changed files with 65 additions and 44 deletions

View File

@@ -1,7 +1,7 @@
import OpenAI from "openai";
import { DataCommonsClient } from "./clients/data-commons";
import { TrendsClient } from "./clients/trends";
import { SerperClient, type SerperVideoResult } from "./clients/serper";
import { SerperClient } from "./clients/serper";
export interface Fact {
statement: string;
@@ -54,7 +54,6 @@ export class ResearchAgent {
if (data.length > 0) {
// Analyze trend
const latest = data[data.length - 1];
const max = Math.max(...data.map((d) => d.value));
facts.push({
statement: `Interest in "${kw}" is currently at ${latest.value}% of peak popularity.`,
source: "Google Trends",
@@ -246,7 +245,7 @@ Return a JSON object with a single string field "query". Example: {"query": "cor
const evalPrompt = `You are a strict technical evaluator. You must select the MOST RELEVANT educational tech video from the list below based on this core article context: "${topic.slice(0, 800)}..."
Videos:
${ytVideos.map((v, i) => `[ID: ${i}] Title: "${v.title}" | Channel: "${v.channel}" | Snippet: "${v.snippet || 'none'}"`).join("\n")}
${ytVideos.map((v, i) => `[ID: ${i}] Title: "${v.title}" | Channel: "${v.channel}" | Snippet: "${v.snippet || "none"}"`).join("\n")}
RULES:
1. The video MUST be highly relevant to the EXACT technical topic of the context.
@@ -268,7 +267,7 @@ Return ONLY a JSON object: {"bestVideoId": number}`;
evalResponse.choices[0].message.content || '{"bestVideoId": -1}',
);
bestIdx = evalParsed.bestVideoId;
} catch (e) {
} catch {
console.warn("Failed to parse video evaluation response");
}
@@ -343,7 +342,7 @@ CRITICAL: Do NOT provide more than 2 trendsKeywords. Keep it extremely focused.`
try {
let parsed = JSON.parse(
response.choices[0].message.content ||
'{"trendsKeywords": [], "dcVariables": []}',
'{"trendsKeywords": [], "dcVariables": []}',
);
if (Array.isArray(parsed)) {
parsed = parsed[0] || { trendsKeywords: [], dcVariables: [] };

View File

@@ -123,7 +123,7 @@ IMPORTANT: Return ONLY the JSON object. No markdown wrappers.`,
let result;
try {
result = JSON.parse(body);
} catch (e) {
} catch {
console.error("Failed to parse AI response", body);
return [];
}