Files
opic/frontend/bindings/opiccoach/models.ts
T

130 lines
3.1 KiB
TypeScript
Raw Normal View History

2026-06-26 00:06:07 +09:00
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore: Unused imports
import * as time$0 from "../time/models.js";
export interface AnswerEvaluation {
"score": number;
"keywords": string[] | null;
"strengths": string[] | null;
"improvements": string[] | null;
"feedback": string;
}
export interface AnswerRecord {
"question": Question;
"transcript": string;
"durationSec": number;
"evaluation": AnswerEvaluation;
"answeredAt": time$0.Time;
"audioPresent": boolean;
}
export interface AppSettings {
2026-06-26 00:47:31 +09:00
"provider": string;
2026-06-26 00:06:07 +09:00
"hasApiKey": boolean;
2026-06-26 00:47:31 +09:00
"hasOpenAIKey": boolean;
"hasGeminiKey": boolean;
2026-06-26 00:06:07 +09:00
"demoMode": boolean;
"evaluationModel": string;
"transcribeModel": string;
"realtimeModel": string;
2026-06-26 00:47:31 +09:00
"speechModel": string;
"speechVoice": string;
"geminiEvaluationModels": string[] | null;
"geminiTranscriptionModels": string[] | null;
"geminiSpeechModels": string[] | null;
"geminiSpeechVoice": string;
2026-06-26 00:06:07 +09:00
}
export interface ConfigureRequest {
2026-06-26 00:47:31 +09:00
"provider": string;
2026-06-26 00:06:07 +09:00
"apiKey": string;
2026-06-26 00:47:31 +09:00
"geminiApiKey": string;
2026-06-26 00:06:07 +09:00
"demoMode": boolean;
"evaluationModel": string;
"transcribeModel": string;
"realtimeModel": string;
2026-06-26 00:47:31 +09:00
"speechModel": string;
"speechVoice": string;
"geminiEvaluationModels": string[] | null;
"geminiTranscriptionModels": string[] | null;
"geminiSpeechModels": string[] | null;
"geminiSpeechVoice": string;
2026-06-26 00:06:07 +09:00
}
export interface ExamConfig {
"difficulty": string;
"topics": string[] | null;
"language": string;
}
export interface ExamReport {
"sessionId": string;
"config": ExamConfig;
"overall": OverallReport;
"answers": AnswerRecord[] | null;
2026-06-26 00:47:31 +09:00
"answeredCount": number;
"totalCount": number;
"partial": boolean;
2026-06-26 00:06:07 +09:00
"generatedAt": time$0.Time;
}
2026-06-26 00:47:31 +09:00
export interface GradePrediction {
"grade": string;
"probability": number;
"status": string;
"description": string;
}
2026-06-26 00:06:07 +09:00
export interface OverallReport {
"score": number;
"estimatedBand": string;
"summary": string;
"strengths": string[] | null;
2026-06-26 00:47:31 +09:00
"weaknesses": string[] | null;
2026-06-26 00:06:07 +09:00
"priorities": string[] | null;
2026-06-26 00:47:31 +09:00
"targetGrade": string;
"targetStatus": string;
"targetProbability": number;
"gradePredictions": GradePrediction[] | null;
2026-06-26 00:06:07 +09:00
}
export interface Question {
"index": number;
"category": string;
"topic": string;
"text": string;
"intent": string;
}
2026-06-26 00:47:31 +09:00
export interface SpeechResponse {
"audioBase64": string;
"mimeType": string;
}
2026-06-26 00:06:07 +09:00
export interface StartSessionResponse {
"sessionId": string;
"question": Question;
"totalCount": number;
}
export interface SubmitAnswerRequest {
"sessionId": string;
"questionIdx": number;
"audioBase64": string;
"audioMime": string;
"transcript": string;
"durationSec": number;
}
export interface SubmitAnswerResponse {
"transcript": string;
"evaluation": AnswerEvaluation;
"next"?: Question | null;
"completed": boolean;
"progress": number;
}