feat(aihr): complete uni-app role workflows
This commit is contained in:
@@ -0,0 +1,380 @@
|
||||
export interface ApiPayload<T> {
|
||||
code?: number;
|
||||
msg?: string;
|
||||
data?: T;
|
||||
}
|
||||
|
||||
export interface LoginResult {
|
||||
access_token: string;
|
||||
client_id: string;
|
||||
}
|
||||
|
||||
export type RoleKey = 'user' | 'supervisor' | 'candidate';
|
||||
|
||||
export interface ToolItem {
|
||||
title: string;
|
||||
desc: string;
|
||||
tone?: string;
|
||||
}
|
||||
|
||||
export interface PrimaryTask {
|
||||
badge: string;
|
||||
title: string;
|
||||
desc: string;
|
||||
progressText: string;
|
||||
progress: number;
|
||||
cta: string;
|
||||
}
|
||||
|
||||
export interface TodoItem extends ToolItem {
|
||||
count: number;
|
||||
}
|
||||
|
||||
export interface ReviewTask {
|
||||
title: string;
|
||||
desc: string;
|
||||
}
|
||||
|
||||
export interface RoleHome {
|
||||
role: RoleKey;
|
||||
roleLabel: string;
|
||||
greeting: string;
|
||||
location: string;
|
||||
toolTitle?: string;
|
||||
recommend?: string;
|
||||
primary?: PrimaryTask;
|
||||
review?: ReviewTask;
|
||||
tools?: ToolItem[];
|
||||
todos?: TodoItem[];
|
||||
}
|
||||
|
||||
export interface KnowledgeSnippet {
|
||||
docTitle: string;
|
||||
content: string;
|
||||
source?: string;
|
||||
fragmentId?: number | null;
|
||||
}
|
||||
|
||||
export interface KnowledgeDoc {
|
||||
title: string;
|
||||
category?: string;
|
||||
score?: number;
|
||||
}
|
||||
|
||||
export interface KnowledgeSearchResponse {
|
||||
queryText: string;
|
||||
category: string;
|
||||
answer: string;
|
||||
reference: string;
|
||||
docs: KnowledgeDoc[];
|
||||
snippets: KnowledgeSnippet[];
|
||||
training: string[];
|
||||
records: unknown[];
|
||||
keyPoints?: string[];
|
||||
cautions?: string[];
|
||||
}
|
||||
|
||||
export type AnswerFeedbackVerdict = 'up' | 'down';
|
||||
|
||||
export interface SummaryCardStep {
|
||||
label: string;
|
||||
desc: string;
|
||||
}
|
||||
|
||||
export interface SummaryCardObjection {
|
||||
concern: string;
|
||||
response: string;
|
||||
}
|
||||
|
||||
export interface SummaryCardResponse {
|
||||
title: string;
|
||||
steps: SummaryCardStep[];
|
||||
objections: SummaryCardObjection[];
|
||||
scripts: string[];
|
||||
reminders: string[];
|
||||
}
|
||||
|
||||
export type PracticeRole = 'customer' | 'trainee' | 'coach';
|
||||
|
||||
export interface PracticeTurn {
|
||||
role: PracticeRole;
|
||||
text: string;
|
||||
}
|
||||
|
||||
export interface PracticeStartResponse {
|
||||
sessionId: string;
|
||||
scenarioId: string;
|
||||
scenarioName: string;
|
||||
trainee: string;
|
||||
customerText: string;
|
||||
emotion?: number;
|
||||
trust?: number;
|
||||
customerAudioUrl?: string;
|
||||
}
|
||||
|
||||
export interface PracticePrepCard {
|
||||
keyPoints: string[];
|
||||
redLines: string[];
|
||||
scripts: string[];
|
||||
promptVersion: string;
|
||||
}
|
||||
|
||||
export interface PracticeTurnResponse {
|
||||
customerText: string;
|
||||
customerAudioUrl?: string;
|
||||
emotion?: number;
|
||||
trust?: number;
|
||||
coachHint?: string;
|
||||
redFlag?: boolean;
|
||||
roundIndex: number;
|
||||
finished: boolean;
|
||||
message?: string;
|
||||
}
|
||||
|
||||
export interface PracticeDimensionScore {
|
||||
name: string;
|
||||
score: number;
|
||||
comment?: string;
|
||||
}
|
||||
|
||||
export interface PracticeFinishResponse {
|
||||
totalScore: number;
|
||||
score?: PracticeDimensionScore[];
|
||||
mentorRewrite: string;
|
||||
aiComment: string;
|
||||
trustCurve?: number[];
|
||||
}
|
||||
|
||||
export interface PracticeRecord {
|
||||
id?: number;
|
||||
sessionId?: string;
|
||||
extPartyId?: string;
|
||||
time: string;
|
||||
trainee: string;
|
||||
scene: string;
|
||||
score: number;
|
||||
status: string;
|
||||
summary: string;
|
||||
}
|
||||
|
||||
export interface ReviewDialogue {
|
||||
role: string;
|
||||
label: string;
|
||||
text: string;
|
||||
audioUrl?: string;
|
||||
}
|
||||
|
||||
export interface ReviewAnnotation {
|
||||
turnIndex: number;
|
||||
sourceText: string;
|
||||
issue: string;
|
||||
rewrite: string;
|
||||
sopPoint: string;
|
||||
}
|
||||
|
||||
export interface ReviewDetail extends PracticeRecord {
|
||||
mentorRewrite: string;
|
||||
aiComment: string;
|
||||
reviewAdvice?: string;
|
||||
incentivePoint?: number;
|
||||
scoreItems: CompetencyDimension[];
|
||||
dialogue: ReviewDialogue[];
|
||||
annotations: ReviewAnnotation[];
|
||||
}
|
||||
|
||||
export interface ReviewAdviceRequest {
|
||||
reviewer?: string;
|
||||
advice?: string;
|
||||
incentivePoint?: number;
|
||||
nextScenarioId?: string;
|
||||
nextReason?: string;
|
||||
}
|
||||
|
||||
export interface PracticeAssignment {
|
||||
id: number;
|
||||
extPartyId: string;
|
||||
traineeName: string;
|
||||
scenarioId: string;
|
||||
scenarioName: string;
|
||||
source: string;
|
||||
reason: string;
|
||||
status: string;
|
||||
createTime: string;
|
||||
question?: string;
|
||||
referenceAnswer?: string;
|
||||
userAnswer?: string;
|
||||
feedback?: string;
|
||||
correct?: boolean | null;
|
||||
}
|
||||
|
||||
export interface PracticeAssignmentRequest {
|
||||
extPartyId: string;
|
||||
traineeName?: string;
|
||||
scenarioId?: string;
|
||||
scenarioName?: string;
|
||||
source?: string;
|
||||
reason?: string;
|
||||
}
|
||||
|
||||
export interface DailyDrillAnswerResponse {
|
||||
id: number;
|
||||
status: string;
|
||||
correct: boolean;
|
||||
score: number;
|
||||
feedback: string;
|
||||
referenceAnswer: string;
|
||||
}
|
||||
|
||||
export interface PracticeAlert {
|
||||
type: string;
|
||||
title: string;
|
||||
desc: string;
|
||||
severity: string;
|
||||
extPartyId?: string;
|
||||
}
|
||||
|
||||
export interface CandidateMaterial {
|
||||
id: number | string;
|
||||
ossId: number | string;
|
||||
fileName: string;
|
||||
materialType: string;
|
||||
fileSize: number;
|
||||
status: string;
|
||||
time: string;
|
||||
}
|
||||
|
||||
export interface CandidateSelectedFile {
|
||||
path: string;
|
||||
name: string;
|
||||
size: number;
|
||||
}
|
||||
|
||||
export interface CaseSelectedFile {
|
||||
path: string;
|
||||
name: string;
|
||||
size: number;
|
||||
}
|
||||
|
||||
export interface CaseTag {
|
||||
text: string;
|
||||
type: string;
|
||||
}
|
||||
|
||||
export interface CaseSummaryItem {
|
||||
label: string;
|
||||
text: string;
|
||||
}
|
||||
|
||||
export interface CaseRecord {
|
||||
title: string;
|
||||
type: string;
|
||||
status: string;
|
||||
time: string;
|
||||
owner: string;
|
||||
summary: string;
|
||||
}
|
||||
|
||||
export interface CaseUploadResponse {
|
||||
caseId: string;
|
||||
fileName: string;
|
||||
transcript: string;
|
||||
tags: CaseTag[];
|
||||
source: string;
|
||||
}
|
||||
|
||||
export interface CaseOrganizeResponse {
|
||||
caseId: string;
|
||||
summary: CaseSummaryItem[];
|
||||
tags: CaseTag[];
|
||||
aiSummary: string;
|
||||
source: string;
|
||||
}
|
||||
|
||||
export interface CaseCurateResponse {
|
||||
selectedCaseIds: string[];
|
||||
records: CaseRecord[];
|
||||
sampleHint: string;
|
||||
}
|
||||
|
||||
export interface InterviewQuestion {
|
||||
questionId: string;
|
||||
seq: number;
|
||||
questionText: string;
|
||||
point: string;
|
||||
scenario: string;
|
||||
sampleAnswer: string;
|
||||
}
|
||||
|
||||
export interface InterviewStartResponse {
|
||||
sessionId: string;
|
||||
candidateId: string;
|
||||
candidateName: string;
|
||||
positionCode: string;
|
||||
questions: InterviewQuestion[];
|
||||
source: string;
|
||||
}
|
||||
|
||||
export interface InterviewDimension {
|
||||
label: string;
|
||||
value: number | string;
|
||||
note: string;
|
||||
}
|
||||
|
||||
export interface InterviewRecord {
|
||||
time: string;
|
||||
candidate: string;
|
||||
position: string;
|
||||
score: number;
|
||||
result: string;
|
||||
summary: string;
|
||||
}
|
||||
|
||||
export interface InterviewFinishResponse {
|
||||
totalScore: number;
|
||||
suggestion: string;
|
||||
result: string;
|
||||
aiSummary: string;
|
||||
evidence: string;
|
||||
dimensions: InterviewDimension[];
|
||||
records: InterviewRecord[];
|
||||
source: string;
|
||||
}
|
||||
|
||||
export interface CompetencyDimension {
|
||||
label: string;
|
||||
value: number | string;
|
||||
note: string;
|
||||
}
|
||||
|
||||
export interface GrowthStage {
|
||||
level: string;
|
||||
progress: number;
|
||||
status: string;
|
||||
evidence: string;
|
||||
}
|
||||
|
||||
export interface CompetencyProfile {
|
||||
score: number;
|
||||
completed: number;
|
||||
pendingReview: number;
|
||||
trainingMinutes?: number;
|
||||
contribution?: number;
|
||||
assessmentScore?: number;
|
||||
aiLevel?: string;
|
||||
dimensions: CompetencyDimension[];
|
||||
growthPath?: GrowthStage[];
|
||||
}
|
||||
|
||||
export interface PromotionEvidence {
|
||||
extPartyId: string;
|
||||
currentLevel: string;
|
||||
assessmentScore: number;
|
||||
trainingMinutes: number;
|
||||
contribution: number;
|
||||
completed: number;
|
||||
pendingReview: number;
|
||||
dimensions: CompetencyDimension[];
|
||||
latestRecords: PracticeRecord[];
|
||||
assignments: PracticeAssignment[];
|
||||
evidenceItems: string[];
|
||||
}
|
||||
Reference in New Issue
Block a user