import type { PracticeFinishResponse, PracticePrepCard, PracticeRecord, PracticeStartResponse, PracticeTurnResponse, CompetencyProfile, ReviewAdviceRequest, ReviewDetail, PracticeAssignment, PracticeAssignmentRequest, DailyDrillAnswerResponse, PracticeAlert, PromotionEvidence } from '@/types/api'; import { apiRequest } from './api'; import { getAuth } from './auth'; const defaultScenarioId = 'complaint-water'; const currentExtPartyId = () => { const phone = getAuth().phone.trim(); if (!phone) { throw new Error('请先登录后再查看训练数据'); } return phone; }; export const getPracticePrepCard = (scenarioId = defaultScenarioId) => apiRequest({ url: `/api/train/practice/scenarios/${encodeURIComponent(scenarioId)}/prep-card`, method: 'GET', timeout: 15000 }); export const startPractice = (scenarioId = defaultScenarioId, assignmentId?: number) => apiRequest({ url: '/api/train/practice/start', method: 'POST', data: { extPartyId: currentExtPartyId(), scenarioId, mode: 'mobile', assignmentId }, timeout: 30000 }); export const submitPracticeTurn = (params: { sessionId: string; roundIndex: number; traineeText: string; regenerate?: boolean; style?: string; }) => apiRequest({ url: '/api/train/practice/turn', method: 'POST', data: params, timeout: 45000 }); export const finishPractice = (sessionId: string, assignmentId?: number) => apiRequest({ url: '/api/train/practice/finish', method: 'POST', data: { sessionId, assignmentId }, timeout: 45000 }); export const getPracticeHistory = () => { const extPartyId = encodeURIComponent(currentExtPartyId()); return apiRequest({ url: `/api/aihr/mobile/practice/history?extPartyId=${extPartyId}`, method: 'GET', timeout: 15000 }); }; export const getCompetencyProfile = () => { const extPartyId = encodeURIComponent(currentExtPartyId()); return apiRequest({ url: `/api/aihr/mobile/profile?extPartyId=${extPartyId}`, method: 'GET', timeout: 15000 }); }; export const getPromotionEvidence = () => { const extPartyId = encodeURIComponent(currentExtPartyId()); return apiRequest({ url: `/api/aihr/mobile/profile/promotion-evidence?extPartyId=${extPartyId}`, method: 'GET', timeout: 15000 }); }; export const getPracticeReviews = () => apiRequest({ url: '/api/aihr/mobile/practice/reviews', method: 'GET', timeout: 15000 }); export const getPracticeReviewDetail = (id: number) => apiRequest({ url: `/api/aihr/mobile/practice/reviews/${id}`, method: 'GET', timeout: 15000 }); export const markPracticeReviewed = (id: number, data: ReviewAdviceRequest) => apiRequest({ url: `/api/aihr/mobile/practice/reviews/${id}/reviewed`, method: 'POST', data, timeout: 15000 }); export const getPracticeAssignments = (ownOnly = false) => { const extPartyId = ownOnly ? encodeURIComponent(currentExtPartyId()) : ''; return apiRequest({ url: `/api/aihr/mobile/practice/assignments${ownOnly ? `?extPartyId=${extPartyId}` : ''}`, method: 'GET', timeout: 15000 }); }; export const createPracticeAssignment = (data: PracticeAssignmentRequest) => apiRequest({ url: '/api/aihr/mobile/practice/assignments', method: 'POST', data: { source: 'manual', scenarioId: 'fee-parking', ...data }, timeout: 15000 }); export const answerDailyDrill = (id: number, answer: string) => apiRequest({ url: `/api/aihr/mobile/practice/assignments/${id}/answer`, method: 'POST', data: { answer }, timeout: 15000 }); export const getPracticeAlerts = () => apiRequest({ url: '/api/aihr/mobile/practice/alerts', method: 'GET', timeout: 15000 });