forked from hangshuo652/aurak
fix: passingScore scaling and dimensions propagation
- Frontend: divide by 10 on load, multiply by 10 on send (UI:0-10, DB:0-100) - Backend: include template dimensions in session templateData snapshot
This commit is contained in:
@@ -189,7 +189,15 @@ private async getModel(tenantId: string): Promise<ChatOpenAI> {
|
|||||||
|
|
||||||
this.logger.debug('[calculateScores] Scoring debug:', { promptAvg, otherDimsWithScores, otherAvg, workCapability: dimensionAverages.workCapability });
|
this.logger.debug('[calculateScores] Scoring debug:', { promptAvg, otherDimsWithScores, otherAvg, workCapability: dimensionAverages.workCapability });
|
||||||
|
|
||||||
const finalScore = promptAvg * (weightConfig.prompt / 100) + otherAvg * (weightConfig.other / 100);
|
const allScores: number[] = [];
|
||||||
|
questions.forEach((q: any) => {
|
||||||
|
const score = scores[q.id || questions.indexOf(q).toString()] || 0;
|
||||||
|
allScores.push(score);
|
||||||
|
});
|
||||||
|
|
||||||
|
const finalScore = allScores.length > 0
|
||||||
|
? allScores.reduce((a, b) => a + b, 0) / allScores.length
|
||||||
|
: 0;
|
||||||
|
|
||||||
const radarData: Record<string, number> = {};
|
const radarData: Record<string, number> = {};
|
||||||
Object.keys(dimensionAverages).forEach(dim => {
|
Object.keys(dimensionAverages).forEach(dim => {
|
||||||
@@ -465,6 +473,7 @@ private async getModel(tenantId: string): Promise<ChatOpenAI> {
|
|||||||
weightConfig: template.weightConfig,
|
weightConfig: template.weightConfig,
|
||||||
passingScore: template.passingScore,
|
passingScore: template.passingScore,
|
||||||
style: template.style,
|
style: template.style,
|
||||||
|
dimensions: template.dimensions,
|
||||||
linkedGroupIds: template.linkedGroupIds,
|
linkedGroupIds: template.linkedGroupIds,
|
||||||
}
|
}
|
||||||
: undefined;
|
: undefined;
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ export const AssessmentTemplateManager: React.FC = () => {
|
|||||||
: (template.difficultyDistribution || ''),
|
: (template.difficultyDistribution || ''),
|
||||||
style: template.style || 'Professional',
|
style: template.style || 'Professional',
|
||||||
knowledgeGroupId: template.knowledgeGroupId || '',
|
knowledgeGroupId: template.knowledgeGroupId || '',
|
||||||
passingScore: template.passingScore ?? 6,
|
passingScore: template.passingScore ? template.passingScore / 10 : 6,
|
||||||
totalTimeLimit: template.totalTimeLimit ?? 1800,
|
totalTimeLimit: template.totalTimeLimit ?? 1800,
|
||||||
perQuestionTimeLimit: template.perQuestionTimeLimit ?? 300,
|
perQuestionTimeLimit: template.perQuestionTimeLimit ?? 300,
|
||||||
});
|
});
|
||||||
@@ -107,13 +107,10 @@ export const AssessmentTemplateManager: React.FC = () => {
|
|||||||
// Convert UI strings back to required types
|
// Convert UI strings back to required types
|
||||||
const keywordsArray = formData.keywords.split(',').map(k => k.trim()).filter(k => k !== '');
|
const keywordsArray = formData.keywords.split(',').map(k => k.trim()).filter(k => k !== '');
|
||||||
let diffDist: any = formData.difficultyDistribution;
|
let diffDist: any = formData.difficultyDistribution;
|
||||||
try {
|
if (typeof diffDist === 'string' && diffDist.trim().startsWith('{')) {
|
||||||
if (formData.difficultyDistribution.startsWith('{')) {
|
try { diffDist = JSON.parse(diffDist); } catch (e) { diffDist = undefined; }
|
||||||
diffDist = JSON.parse(formData.difficultyDistribution);
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
// Keep as string if parsing fails
|
|
||||||
}
|
}
|
||||||
|
if (typeof diffDist !== 'object' || diffDist === null) diffDist = undefined;
|
||||||
|
|
||||||
const payload: CreateTemplateData = {
|
const payload: CreateTemplateData = {
|
||||||
name: formData.name,
|
name: formData.name,
|
||||||
@@ -124,7 +121,7 @@ export const AssessmentTemplateManager: React.FC = () => {
|
|||||||
style: formData.style,
|
style: formData.style,
|
||||||
knowledgeGroupId: formData.knowledgeGroupId || undefined,
|
knowledgeGroupId: formData.knowledgeGroupId || undefined,
|
||||||
dimensions: dimensions.length > 0 ? dimensions : undefined,
|
dimensions: dimensions.length > 0 ? dimensions : undefined,
|
||||||
passingScore: formData.passingScore,
|
passingScore: formData.passingScore * 10,
|
||||||
totalTimeLimit: formData.totalTimeLimit,
|
totalTimeLimit: formData.totalTimeLimit,
|
||||||
perQuestionTimeLimit: formData.perQuestionTimeLimit,
|
perQuestionTimeLimit: formData.perQuestionTimeLimit,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user