feat(aihr): complete uni-app role workflows
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
import type {
|
||||
PracticeFinishResponse,
|
||||
PracticePrepCard,
|
||||
PracticeRecord,
|
||||
PracticeStartResponse,
|
||||
PracticeTurnResponse,
|
||||
CompetencyProfile,
|
||||
ReviewAdviceRequest,
|
||||
ReviewDetail,
|
||||
PracticeAssignment,
|
||||
PracticeAssignmentRequest,
|
||||
DailyDrillAnswerResponse,
|
||||
PracticeAlert,
|
||||
PromotionEvidence
|
||||
} from '@/types/api';
|
||||
import { apiRequest } from './api';
|
||||
import { getAuth } from './auth';
|
||||
|
||||
const defaultScenarioId = 'complaint-water';
|
||||
|
||||
const currentExtPartyId = () => {
|
||||
const phone = getAuth().phone.trim();
|
||||
if (!phone) {
|
||||
throw new Error('请先登录后再查看训练数据');
|
||||
}
|
||||
return phone;
|
||||
};
|
||||
|
||||
export const getPracticePrepCard = (scenarioId = defaultScenarioId) =>
|
||||
apiRequest<PracticePrepCard>({
|
||||
url: `/api/train/practice/scenarios/${encodeURIComponent(scenarioId)}/prep-card`,
|
||||
method: 'GET',
|
||||
timeout: 15000
|
||||
});
|
||||
|
||||
export const startPractice = (scenarioId = defaultScenarioId, assignmentId?: number) =>
|
||||
apiRequest<PracticeStartResponse>({
|
||||
url: '/api/train/practice/start',
|
||||
method: 'POST',
|
||||
data: {
|
||||
extPartyId: currentExtPartyId(),
|
||||
scenarioId,
|
||||
mode: 'mobile',
|
||||
assignmentId
|
||||
},
|
||||
timeout: 30000
|
||||
});
|
||||
|
||||
export const submitPracticeTurn = (params: {
|
||||
sessionId: string;
|
||||
roundIndex: number;
|
||||
traineeText: string;
|
||||
regenerate?: boolean;
|
||||
style?: string;
|
||||
}) =>
|
||||
apiRequest<PracticeTurnResponse>({
|
||||
url: '/api/train/practice/turn',
|
||||
method: 'POST',
|
||||
data: params,
|
||||
timeout: 45000
|
||||
});
|
||||
|
||||
export const finishPractice = (sessionId: string, assignmentId?: number) =>
|
||||
apiRequest<PracticeFinishResponse>({
|
||||
url: '/api/train/practice/finish',
|
||||
method: 'POST',
|
||||
data: { sessionId, assignmentId },
|
||||
timeout: 45000
|
||||
});
|
||||
|
||||
export const getPracticeHistory = () => {
|
||||
const extPartyId = encodeURIComponent(currentExtPartyId());
|
||||
return apiRequest<PracticeRecord[]>({
|
||||
url: `/api/aihr/mobile/practice/history?extPartyId=${extPartyId}`,
|
||||
method: 'GET',
|
||||
timeout: 15000
|
||||
});
|
||||
};
|
||||
|
||||
export const getCompetencyProfile = () => {
|
||||
const extPartyId = encodeURIComponent(currentExtPartyId());
|
||||
return apiRequest<CompetencyProfile>({
|
||||
url: `/api/aihr/mobile/profile?extPartyId=${extPartyId}`,
|
||||
method: 'GET',
|
||||
timeout: 15000
|
||||
});
|
||||
};
|
||||
|
||||
export const getPromotionEvidence = () => {
|
||||
const extPartyId = encodeURIComponent(currentExtPartyId());
|
||||
return apiRequest<PromotionEvidence>({
|
||||
url: `/api/aihr/mobile/profile/promotion-evidence?extPartyId=${extPartyId}`,
|
||||
method: 'GET',
|
||||
timeout: 15000
|
||||
});
|
||||
};
|
||||
|
||||
export const getPracticeReviews = () =>
|
||||
apiRequest<PracticeRecord[]>({
|
||||
url: '/api/aihr/mobile/practice/reviews',
|
||||
method: 'GET',
|
||||
timeout: 15000
|
||||
});
|
||||
|
||||
export const getPracticeReviewDetail = (id: number) =>
|
||||
apiRequest<ReviewDetail>({
|
||||
url: `/api/aihr/mobile/practice/reviews/${id}`,
|
||||
method: 'GET',
|
||||
timeout: 15000
|
||||
});
|
||||
|
||||
export const markPracticeReviewed = (id: number, data: ReviewAdviceRequest) =>
|
||||
apiRequest<void>({
|
||||
url: `/api/aihr/mobile/practice/reviews/${id}/reviewed`,
|
||||
method: 'POST',
|
||||
data,
|
||||
timeout: 15000
|
||||
});
|
||||
|
||||
export const getPracticeAssignments = (ownOnly = false) => {
|
||||
const extPartyId = ownOnly ? encodeURIComponent(currentExtPartyId()) : '';
|
||||
return apiRequest<PracticeAssignment[]>({
|
||||
url: `/api/aihr/mobile/practice/assignments${ownOnly ? `?extPartyId=${extPartyId}` : ''}`,
|
||||
method: 'GET',
|
||||
timeout: 15000
|
||||
});
|
||||
};
|
||||
|
||||
export const createPracticeAssignment = (data: PracticeAssignmentRequest) =>
|
||||
apiRequest<PracticeAssignment>({
|
||||
url: '/api/aihr/mobile/practice/assignments',
|
||||
method: 'POST',
|
||||
data: {
|
||||
source: 'manual',
|
||||
scenarioId: 'fee-parking',
|
||||
...data
|
||||
},
|
||||
timeout: 15000
|
||||
});
|
||||
|
||||
export const answerDailyDrill = (id: number, answer: string) =>
|
||||
apiRequest<DailyDrillAnswerResponse>({
|
||||
url: `/api/aihr/mobile/practice/assignments/${id}/answer`,
|
||||
method: 'POST',
|
||||
data: { answer },
|
||||
timeout: 15000
|
||||
});
|
||||
|
||||
export const getPracticeAlerts = () =>
|
||||
apiRequest<PracticeAlert[]>({
|
||||
url: '/api/aihr/mobile/practice/alerts',
|
||||
method: 'GET',
|
||||
timeout: 15000
|
||||
});
|
||||
Reference in New Issue
Block a user