feat: restore learning feedback and knowledge capabilities
This commit is contained in:
@@ -13,10 +13,14 @@ import type {
|
||||
OnboardTask,
|
||||
QualificationSummary,
|
||||
PracticeAssignmentRequest,
|
||||
PracticeAssignmentBatchRequest,
|
||||
PracticeAssignmentBatchResponse,
|
||||
DailyDrillAnswerResponse,
|
||||
PracticeAlert,
|
||||
PromotionEvidence,
|
||||
PracticeScenarioOption
|
||||
PracticeScenarioOption,
|
||||
PracticeDifficulty,
|
||||
PracticeQuestionFeedback
|
||||
} from '@/types/api';
|
||||
import { apiRequest } from './api';
|
||||
import { getAuth, getSelectedPosition } from './auth';
|
||||
@@ -206,6 +210,14 @@ export const createPracticeAssignment = (data: PracticeAssignmentRequest) =>
|
||||
timeout: 15000
|
||||
});
|
||||
|
||||
export const createPracticeAssignmentsBatch = (data: PracticeAssignmentBatchRequest) =>
|
||||
apiRequest<PracticeAssignmentBatchResponse>({
|
||||
url: '/api/aihr/mobile/practice/assignments/batch',
|
||||
method: 'POST',
|
||||
data,
|
||||
timeout: 30000
|
||||
});
|
||||
|
||||
export const answerDailyDrill = (id: number, answer: string, audioUrl?: string, audioOssId?: number) =>
|
||||
apiRequest<DailyDrillAnswerResponse>({
|
||||
url: `/api/aihr/mobile/practice/assignments/${id}/answer`,
|
||||
@@ -220,3 +232,53 @@ export const getPracticeAlerts = () =>
|
||||
method: 'GET',
|
||||
timeout: 15000
|
||||
});
|
||||
|
||||
export const submitPracticeQuestionFeedback = (
|
||||
assignmentId: number,
|
||||
verdict: PracticeQuestionFeedback['verdict'],
|
||||
comment = ''
|
||||
) =>
|
||||
apiRequest<PracticeQuestionFeedback>({
|
||||
url: `/api/aihr/mobile/practice/assignments/${assignmentId}/feedback`,
|
||||
method: 'POST',
|
||||
data: { verdict, comment },
|
||||
timeout: 15000
|
||||
});
|
||||
|
||||
export const getPracticeDifficulties = async (windowDays = 30, position = ''): Promise<PracticeDifficulty[]> => {
|
||||
const rows = await apiRequest<Array<{
|
||||
scenarioId: string;
|
||||
scenarioName: string;
|
||||
position?: string;
|
||||
attempts: number;
|
||||
mistakeCount: number;
|
||||
affectedPeople: number;
|
||||
averageScore: number;
|
||||
difficultyScore: number;
|
||||
latestTime: string;
|
||||
}>>({
|
||||
url: `/api/aihr/mobile/practice/difficulties?windowDays=${windowDays}${position ? `&position=${encodeURIComponent(position)}` : ''}`,
|
||||
method: 'GET',
|
||||
timeout: 15000
|
||||
});
|
||||
return rows.map((item) => ({
|
||||
...item,
|
||||
cause: item.mistakeCount >= Math.max(2, Math.ceil(item.attempts / 2)) ? '高频错题或低分' : '近期低分记录',
|
||||
count: item.mistakeCount
|
||||
}));
|
||||
};
|
||||
|
||||
export const assignPracticeDifficulty = (data: {
|
||||
scenarioId: string;
|
||||
cause: string;
|
||||
dueDate: string;
|
||||
requestId: string;
|
||||
windowDays: number;
|
||||
position?: string;
|
||||
}) =>
|
||||
apiRequest<PracticeAssignmentBatchResponse>({
|
||||
url: '/api/aihr/mobile/practice/difficulties/assign',
|
||||
method: 'POST',
|
||||
data,
|
||||
timeout: 30000
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user