import { apiPost } from "@/lib/api"; export type FaqItem = { id: string; question: string; answer: string; }; function pickString(record: Record, keys: string[]): string { for (const key of keys) { const value = record[key]; if (typeof value === "string" && value.trim()) return value.trim(); } return ""; } function pickList(raw: unknown): unknown[] { if (!raw || typeof raw !== "object") return []; const o = raw as Record; const inner = o.data ?? o.list ?? o.rows ?? o.records; if (Array.isArray(inner)) return inner; if (inner && typeof inner === "object") { const x = inner as Record; if (Array.isArray(x.list)) return x.list; if (Array.isArray(x.records)) return x.records; if (Array.isArray(x.rows)) return x.rows; } return []; } function normalizeFaqRow(row: unknown, index: number): FaqItem | null { if (!row || typeof row !== "object") return null; const r = row as Record; const question = pickString(r, [ "title", "question", "questionTitle", "name", "q", "subject", ]); const answer = pickString(r, [ "content", "answer", "reply", "description", "a", "questionContent", "detail", "remark", ]); if (!question && !answer) return null; const id = String(r.id ?? r.questionId ?? index).trim() || String(index); return { id, question: question || answer.slice(0, 80) || "—", answer: answer || "—", }; } export async function fetchCommonQuestions( page: { current: number; row: number } = { current: 1, row: 100 }, ): Promise<{ items: FaqItem[]; failed: boolean }> { const current = Number.isFinite(page.current) ? Math.max(1, page.current) : 1; const row = Number.isFinite(page.row) ? Math.max(1, Math.min(200, page.row)) : 100; try { const payload = await apiPost( "/common/question/search/list", { page: { current, row } }, ); const list = pickList(payload); const items: FaqItem[] = []; list.forEach((item, i) => { const n = normalizeFaqRow(item, i); if (n) items.push(n); }); return { items, failed: false }; } catch { return { items: [], failed: true }; } }