feat(aihr): close functional checklist gaps
This commit is contained in:
@@ -152,9 +152,32 @@ export type PracticeQuestion = {
|
||||
contentHash: string;
|
||||
enabled: boolean;
|
||||
sortOrder: number;
|
||||
examFormat?: 'single' | 'multiple' | 'judge' | 'short' | '';
|
||||
examOptions?: string[];
|
||||
examAnswers?: string[];
|
||||
examExplanation?: string;
|
||||
examEnabled?: boolean;
|
||||
reviewStatus?: 'DRAFT' | 'APPROVED' | 'REJECTED';
|
||||
reviewedBy?: string;
|
||||
reviewedTime?: string;
|
||||
};
|
||||
|
||||
export type PracticeQuestionSaveRequest = Omit<PracticeQuestion, 'scenarioName' | 'contentVersion' | 'contentHash'>;
|
||||
export type PracticeQuestionSaveRequest = Pick<
|
||||
PracticeQuestion,
|
||||
| 'code'
|
||||
| 'scenarioCode'
|
||||
| 'positionCode'
|
||||
| 'type'
|
||||
| 'question'
|
||||
| 'referenceAnswer'
|
||||
| 'enabled'
|
||||
| 'sortOrder'
|
||||
| 'examFormat'
|
||||
| 'examOptions'
|
||||
| 'examAnswers'
|
||||
| 'examExplanation'
|
||||
| 'examEnabled'
|
||||
>;
|
||||
|
||||
export type ManagedPracticeAssignment = {
|
||||
id: number;
|
||||
@@ -190,6 +213,70 @@ export type ManagedPracticeAssignmentBatchResponse = {
|
||||
results: Array<{ extPartyId: string; traineeName: string; status: string; message: string }>;
|
||||
};
|
||||
|
||||
export type ManagedLearningTask = {
|
||||
id: number;
|
||||
extPartyId: string;
|
||||
traineeName: string;
|
||||
projectCode: string;
|
||||
positionCode: string;
|
||||
taskType: string;
|
||||
status: string;
|
||||
materialType: 'DOCUMENT' | 'VIDEO' | 'COURSE' | 'SOP';
|
||||
materialAttachmentId: number;
|
||||
materialTitle: string;
|
||||
materialVersion: string;
|
||||
progressPercent: number;
|
||||
completionRule: 'MANUAL_CONFIRM' | 'EXAM_PASS';
|
||||
examId?: number | null;
|
||||
examTitle?: string | null;
|
||||
recurrenceType: 'ONCE' | 'DAILY' | 'WEEKLY' | 'MONTHLY';
|
||||
assignedTime: string;
|
||||
dueTime: string;
|
||||
completedTime?: string;
|
||||
assignBy: string;
|
||||
};
|
||||
|
||||
export type LearningMaterialOption = {
|
||||
attachmentId: number;
|
||||
title: string;
|
||||
fileType: string;
|
||||
materialVersion: string;
|
||||
updatedTime: string;
|
||||
};
|
||||
|
||||
export type LearningExamOption = {
|
||||
examId: number;
|
||||
title: string;
|
||||
projectCode: string;
|
||||
positionCode: string;
|
||||
dueDate: string;
|
||||
targetCount: number;
|
||||
};
|
||||
|
||||
export type ManagedLearningTaskBatchRequest = {
|
||||
requestId: string;
|
||||
targets: Array<{ extPartyId: string; traineeName?: string }>;
|
||||
projectCode: string;
|
||||
positionCode: string;
|
||||
taskType: string;
|
||||
materialType: ManagedLearningTask['materialType'];
|
||||
materialAttachmentId: number;
|
||||
completionRule: ManagedLearningTask['completionRule'];
|
||||
examId?: number | null;
|
||||
recurrenceType: ManagedLearningTask['recurrenceType'];
|
||||
startTime: string;
|
||||
dueTime: string;
|
||||
};
|
||||
|
||||
export type ManagedLearningTaskBatchResponse = {
|
||||
requestId: string;
|
||||
total: number;
|
||||
created: number;
|
||||
duplicate: number;
|
||||
failed: number;
|
||||
items: Array<{ extPartyId: string; traineeName: string; status: string; message: string }>;
|
||||
};
|
||||
|
||||
export type PracticePrepCardResponse = {
|
||||
keyPoints: string[];
|
||||
redLines: string[];
|
||||
@@ -328,6 +415,30 @@ export function updatePracticeQuestionEnabled(code: string, enabled: boolean): P
|
||||
return request({ url: `/api/train/practice/questions/${encodeURIComponent(code)}/enabled`, method: 'patch', data: { enabled } });
|
||||
}
|
||||
|
||||
export function reviewPracticeQuestion(code: string, decision: 'APPROVE' | 'REJECT', note = ''): Promise<ApiResult<PracticeQuestion>> {
|
||||
return request({
|
||||
url: `/api/train/practice/questions/${encodeURIComponent(code)}/review`,
|
||||
method: 'patch',
|
||||
data: { decision, note }
|
||||
});
|
||||
}
|
||||
|
||||
export function listManagedLearningTasks(params?: { status?: string; keyword?: string; limit?: number }): Promise<ApiResult<ManagedLearningTask[]>> {
|
||||
return request({ url: '/api/train/practice/onboard-tasks/manage', method: 'get', params });
|
||||
}
|
||||
|
||||
export function listLearningMaterials(): Promise<ApiResult<LearningMaterialOption[]>> {
|
||||
return request({ url: '/api/train/practice/onboard-tasks/manage/materials', method: 'get' });
|
||||
}
|
||||
|
||||
export function listLearningExams(): Promise<ApiResult<LearningExamOption[]>> {
|
||||
return request({ url: '/api/train/practice/onboard-tasks/manage/exams', method: 'get' });
|
||||
}
|
||||
|
||||
export function createManagedLearningTasks(data: ManagedLearningTaskBatchRequest): Promise<ApiResult<ManagedLearningTaskBatchResponse>> {
|
||||
return request({ url: '/api/train/practice/onboard-tasks/manage/batch', method: 'post', data, headers: { repeatSubmit: false } });
|
||||
}
|
||||
|
||||
export function updatePracticeScenarioEnabled(id: string, data: PracticeScenarioEnabledRequest): Promise<ApiResult<null>> {
|
||||
return request({
|
||||
url: `/api/train/practice/scenarios/${id}/enabled`,
|
||||
|
||||
Reference in New Issue
Block a user