import type { AnswerFeedbackVerdict, KnowledgeSearchResponse, KnowledgeSnippet, SummaryCardResponse } from '@/types/api'; import { apiRequest } from './api'; type RawKnowledgeSnippet = KnowledgeSnippet & { title?: string; text?: string; }; const normalizeSnippet = (snippet: RawKnowledgeSnippet): KnowledgeSnippet => ({ ...snippet, docTitle: snippet.docTitle || snippet.title || '', content: snippet.content || snippet.text || '' }); export const searchKnowledge = async (queryText: string) => { const response = await apiRequest({ url: '/api/knowledge/search', method: 'POST', data: { queryText, category: 'sop', limit: 5 }, timeout: 30000 }); return { ...response, snippets: (response.snippets || []).map((item) => normalizeSnippet(item as RawKnowledgeSnippet)) }; }; export const submitAnswerFeedback = (params: { queryText: string; fragmentIds: number[]; verdict: AnswerFeedbackVerdict; }) => apiRequest<{ saved: number }>({ url: '/api/knowledge/answer-feedback', method: 'POST', data: { queryText: params.queryText, fragmentIds: params.fragmentIds, verdict: params.verdict, category: 'sop', position: '生活顾问', source: 'mobile_uni_sop' }, timeout: 15000 }); export const generateSummaryCard = (queryText: string) => apiRequest({ url: '/api/knowledge/summary-card', method: 'POST', data: { queryText, category: 'sop' }, timeout: 45000 });