feat(aihr): switch interview and case flows to real-model-first pipeline

AI 面试 /start 动态出题、/finish 按真实回答结构化评分(未配模型用本地
Rubric 估分);案例沉淀 /upload 改 multipart 真实语音+ASR 转写,
/organize 用真实 transcript 调 chat 模型整理;seed service 重构为
AihrInterviewService/AihrCaseService;前端面试/案例/对练页与移动端、
demo-check、验收文档同步真实链路口径。
This commit is contained in:
2026-07-03 23:45:20 +08:00
parent 4fa23617a4
commit 77aa992872
18 changed files with 1475 additions and 389 deletions
+3 -1
View File
@@ -30,6 +30,7 @@ export type CaseUploadResponse = {
fileName: string;
transcript: string;
tags: CaseTag[];
source: string;
};
export type CaseOrganizeResponse = {
@@ -37,6 +38,7 @@ export type CaseOrganizeResponse = {
summary: CaseSummaryItem[];
tags: CaseTag[];
aiSummary: string;
source: string;
};
export type CaseCurateResponse = {
@@ -45,7 +47,7 @@ export type CaseCurateResponse = {
sampleHint: string;
};
export function uploadCaseAudio(data: { fileName: string; projectExtOrgId: string }): Promise<ApiResult<CaseUploadResponse>> {
export function uploadCaseAudio(data: FormData): Promise<ApiResult<CaseUploadResponse>> {
return request({
url: '/api/knowledge/case/upload',
method: 'post',
+3
View File
@@ -27,6 +27,7 @@ export type InterviewStartResponse = {
candidateName: string;
positionCode: string;
questions: InterviewQuestionResponse[];
source: string;
};
export type InterviewAnswerRequest = {
@@ -44,6 +45,7 @@ export type InterviewAnswerResponse = {
export type InterviewFinishRequest = {
sessionId: string;
answers: Record<string, string>;
};
export type InterviewFinishResponse = {
@@ -65,6 +67,7 @@ export type InterviewFinishResponse = {
result: string;
summary: string;
}>;
source: string;
};
export function startInterview(data: InterviewStartRequest): Promise<ApiResult<InterviewStartResponse>> {