feat: 完善中文心理测评平台

This commit is contained in:
mikemoi
2026-06-22 22:59:01 +02:00
commit 9227c687fc
160 changed files with 16974 additions and 0 deletions
@@ -0,0 +1,40 @@
const reverseItems = new Set([1, 3, 5, 6]);
const perseveranceItems = [2, 4, 7, 8];
const consistencyItems = [1, 3, 5, 6];
function scoreItem(answers: string[], item: number) {
const raw = Number(answers[item - 1] || 1);
return reverseItems.has(item) ? 6 - raw : raw;
}
function average(values: number[]) {
return values.reduce((sum, value) => sum + value, 0) / values.length;
}
export function calculateGritResults(answers: string[]) {
const itemScores = Array.from({ length: 8 }, (_, index) =>
scoreItem(answers, index + 1),
);
const totalAverage = average(itemScores);
const perseveranceAverage = average(
perseveranceItems.map((item) => scoreItem(answers, item)),
);
const consistencyAverage = average(
consistencyItems.map((item) => scoreItem(answers, item)),
);
let level: 'low' | 'moderate' | 'high' = 'moderate';
if (totalAverage < 3) {
level = 'low';
} else if (totalAverage >= 4) {
level = 'high';
}
return {
itemScores,
totalAverage,
perseveranceAverage,
consistencyAverage,
level,
};
}