import request from '@/utils/request'; type ApiResult = { code: number; msg: string; data: T; }; export type InterviewStartRequest = { candidateId: string; positionCode: string; mode: string; }; export type InterviewQuestionResponse = { questionId: string; seq: number; questionText: string; point: string; scenario: string; sampleAnswer: string; }; export type InterviewStartResponse = { sessionId: string; candidateId: string; candidateName: string; positionCode: string; questions: InterviewQuestionResponse[]; source: string; }; export type InterviewAnswerRequest = { sessionId: string; questionId: string; answerText?: string; answerAudioUrl?: string; }; export type InterviewAnswerResponse = { score: number; dimensions: Record; aiComment: string; }; export type InterviewFinishRequest = { sessionId: string; answers: Record; }; export type InterviewFinishResponse = { totalScore: number; suggestion: string; result: string; aiSummary: string; evidence: string; dimensions: Array<{ label: string; value: number | string; note: string; }>; records: InterviewRecord[]; source: string; }; export type InterviewRecord = { time: string; candidate: string; position: string; score: number; result: string; summary: string; }; export type CandidateMaterialReview = { id: number | string; candidateId: string; candidateName: string; ossId: number | string; fileName: string; materialType: string; fileSize: number; status: string; time: string; }; export function startInterview(data: InterviewStartRequest): Promise> { return request({ url: '/api/recruit/interview/start', method: 'post', data, headers: { repeatSubmit: false } }); } export function submitInterviewAnswer(data: InterviewAnswerRequest): Promise> { return request({ url: '/api/recruit/interview/answer', method: 'post', data, headers: { repeatSubmit: false } }); } export function finishInterview(data: InterviewFinishRequest): Promise> { return request({ url: '/api/recruit/interview/finish', method: 'post', data, headers: { repeatSubmit: false } }); } export function listInterviewRecords(limit = 20): Promise> { return request({ url: '/api/recruit/interview/records', method: 'get', params: { limit } }); } export function listCandidateMaterialsForReview(status = ''): Promise> { return request({ url: '/api/aihr/hr/candidate/materials', method: 'get', params: { status } }); } export function reviewCandidateMaterial(id: number | string, status: string): Promise> { return request({ url: `/api/aihr/hr/candidate/materials/${id}/review`, method: 'post', data: { status }, headers: { repeatSubmit: false } }); }