feat(practice): complete five-position training operations
This commit is contained in:
@@ -30,6 +30,9 @@ export type PracticeScenarioResponse = {
|
||||
strategy: string;
|
||||
goal: string;
|
||||
enabled: boolean;
|
||||
rounds: PracticeScenarioRound[];
|
||||
contentVersion: string;
|
||||
contentHash: string;
|
||||
rubric?: {
|
||||
code: string;
|
||||
name: string;
|
||||
@@ -38,6 +41,13 @@ export type PracticeScenarioResponse = {
|
||||
};
|
||||
};
|
||||
|
||||
export type PracticeScenarioRound = {
|
||||
customer: string;
|
||||
coachHint: string;
|
||||
emotion: number;
|
||||
trust: number;
|
||||
};
|
||||
|
||||
export type PracticeScenarioEnabledRequest = {
|
||||
enabled: boolean;
|
||||
};
|
||||
@@ -60,6 +70,7 @@ export type PracticeScenarioSaveRequest = {
|
||||
strategy: string;
|
||||
goal: string;
|
||||
enabled: boolean;
|
||||
rounds: PracticeScenarioRound[];
|
||||
};
|
||||
|
||||
export type PracticeRubricDimension = {
|
||||
@@ -82,6 +93,56 @@ export type PracticeRubricAdmin = {
|
||||
|
||||
export type PracticeRubricSaveRequest = Omit<PracticeRubricAdmin, 'scenarioName'>;
|
||||
|
||||
export type PracticeQuestion = {
|
||||
code: string;
|
||||
scenarioCode: string;
|
||||
scenarioName: string;
|
||||
positionCode: string;
|
||||
type: 'daily' | 'special';
|
||||
question: string;
|
||||
referenceAnswer: string;
|
||||
contentVersion: string;
|
||||
contentHash: string;
|
||||
enabled: boolean;
|
||||
sortOrder: number;
|
||||
};
|
||||
|
||||
export type PracticeQuestionSaveRequest = Omit<PracticeQuestion, 'scenarioName' | 'contentVersion' | 'contentHash'>;
|
||||
|
||||
export type ManagedPracticeAssignment = {
|
||||
id: number;
|
||||
extPartyId: string;
|
||||
traineeName: string;
|
||||
scenarioId: string;
|
||||
scenarioName: string;
|
||||
source: string;
|
||||
reason: string;
|
||||
status: string;
|
||||
createTime: string;
|
||||
dueDate?: string;
|
||||
contentVersion?: string;
|
||||
contentHash?: string;
|
||||
question?: string;
|
||||
referenceAnswer?: string;
|
||||
};
|
||||
|
||||
export type ManagedPracticeAssignmentBatchRequest = {
|
||||
requestId: string;
|
||||
targets: Array<{ extPartyId: string; traineeName?: string }>;
|
||||
scenarioId: string;
|
||||
reason: string;
|
||||
dueDate: string;
|
||||
};
|
||||
|
||||
export type ManagedPracticeAssignmentBatchResponse = {
|
||||
requestId: string;
|
||||
total: number;
|
||||
created: number;
|
||||
duplicate: number;
|
||||
failed: number;
|
||||
results: Array<{ extPartyId: string; traineeName: string; status: string; message: string }>;
|
||||
};
|
||||
|
||||
export type PracticePrepCardResponse = {
|
||||
keyPoints: string[];
|
||||
redLines: string[];
|
||||
@@ -200,7 +261,7 @@ export type PromptTemplateRequest = {
|
||||
description: string;
|
||||
};
|
||||
|
||||
export function listPracticeScenarios(params?: { position?: string; scenarioType?: string }): Promise<ApiResult<PracticeScenarioResponse[]>> {
|
||||
export function listPracticeScenarios(params?: { position?: string; scenarioType?: string; includeDisabled?: boolean }): Promise<ApiResult<PracticeScenarioResponse[]>> {
|
||||
return request({
|
||||
url: '/api/train/practice/scenarios',
|
||||
method: 'get',
|
||||
@@ -208,6 +269,18 @@ export function listPracticeScenarios(params?: { position?: string; scenarioType
|
||||
});
|
||||
}
|
||||
|
||||
export function listPracticeQuestions(params?: { position?: string; type?: 'daily' | 'special'; includeDisabled?: boolean }): Promise<ApiResult<PracticeQuestion[]>> {
|
||||
return request({ url: '/api/train/practice/questions', method: 'get', params });
|
||||
}
|
||||
|
||||
export function savePracticeQuestion(data: PracticeQuestionSaveRequest): Promise<ApiResult<PracticeQuestion>> {
|
||||
return request({ url: '/api/train/practice/questions', method: 'post', data });
|
||||
}
|
||||
|
||||
export function updatePracticeQuestionEnabled(code: string, enabled: boolean): Promise<ApiResult<null>> {
|
||||
return request({ url: `/api/train/practice/questions/${encodeURIComponent(code)}/enabled`, method: 'patch', data: { enabled } });
|
||||
}
|
||||
|
||||
export function updatePracticeScenarioEnabled(id: string, data: PracticeScenarioEnabledRequest): Promise<ApiResult<null>> {
|
||||
return request({
|
||||
url: `/api/train/practice/scenarios/${id}/enabled`,
|
||||
@@ -240,6 +313,18 @@ export function updatePracticeRubricEnabled(code: string, enabled: boolean): Pro
|
||||
});
|
||||
}
|
||||
|
||||
export function listManagedPracticeAssignments(params?: { position?: string; status?: string; source?: string; keyword?: string; limit?: number }): Promise<ApiResult<ManagedPracticeAssignment[]>> {
|
||||
return request({ url: '/api/train/practice/assignments/manage', method: 'get', params });
|
||||
}
|
||||
|
||||
export function createManagedPracticeAssignments(data: ManagedPracticeAssignmentBatchRequest): Promise<ApiResult<ManagedPracticeAssignmentBatchResponse>> {
|
||||
return request({ url: '/api/train/practice/assignments/manage/batch', method: 'post', data, headers: { repeatSubmit: false } });
|
||||
}
|
||||
|
||||
export function cancelManagedPracticeAssignment(id: number, reason?: string): Promise<ApiResult<null>> {
|
||||
return request({ url: `/api/train/practice/assignments/manage/${id}/cancel`, method: 'patch', data: { reason }, headers: { repeatSubmit: false } });
|
||||
}
|
||||
|
||||
export function getPracticePrepCard(id: string): Promise<ApiResult<PracticePrepCardResponse>> {
|
||||
return request({
|
||||
url: `/api/train/practice/scenarios/${id}/prep-card`,
|
||||
|
||||
Reference in New Issue
Block a user