feat(aihr): complete uni-app role workflows

This commit is contained in:
2026-07-09 10:42:20 +08:00
parent e4070c8b8c
commit 678543e8a5
73 changed files with 15696 additions and 134 deletions
+65
View File
@@ -0,0 +1,65 @@
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<KnowledgeSearchResponse>({
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<SummaryCardResponse>({
url: '/api/knowledge/summary-card',
method: 'POST',
data: {
queryText,
category: 'sop'
},
timeout: 45000
});