feat(aihr): persist interview results and candidate material review

面试记录落 aihr_interview_result(GET /records 查询),候选人补充资料
走 OSS + aihr_candidate_material,管理端 AI 面试页可审核通过/驳回;
案例整理服务增强;两张新表纳入 reset 脚本。
This commit is contained in:
2026-07-04 16:05:50 +08:00
parent c47a9bb075
commit 0539adf612
10 changed files with 675 additions and 17 deletions
+47 -8
View File
@@ -59,17 +59,31 @@ export type InterviewFinishResponse = {
value: number | string;
note: string;
}>;
records: Array<{
time: string;
candidate: string;
position: string;
score: number;
result: string;
summary: 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<ApiResult<InterviewStartResponse>> {
return request({
url: '/api/recruit/interview/start',
@@ -96,3 +110,28 @@ export function finishInterview(data: InterviewFinishRequest): Promise<ApiResult
headers: { repeatSubmit: false }
});
}
export function listInterviewRecords(limit = 20): Promise<ApiResult<InterviewRecord[]>> {
return request({
url: '/api/recruit/interview/records',
method: 'get',
params: { limit }
});
}
export function listCandidateMaterialsForReview(status = ''): Promise<ApiResult<CandidateMaterialReview[]>> {
return request({
url: '/api/aihr/hr/candidate/materials',
method: 'get',
params: { status }
});
}
export function reviewCandidateMaterial(id: number | string, status: string): Promise<ApiResult<CandidateMaterialReview>> {
return request({
url: `/api/aihr/hr/candidate/materials/${id}/review`,
method: 'post',
data: { status },
headers: { repeatSubmit: false }
});
}