feat(learning): make practice scoring authoritative
This commit is contained in:
@@ -4,6 +4,7 @@ using System.Text.Json;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Tiku.Application.Assets;
|
||||
using Tiku.Application.Learning;
|
||||
using Tiku.Application.PlatformAdmin;
|
||||
using Tiku.Application.Security;
|
||||
using Tiku.Domain.Common;
|
||||
@@ -620,6 +621,15 @@ internal sealed class PlatformQuestionBankService(
|
||||
var type = string.IsNullOrWhiteSpace(command.Type) ? "choice" : command.Type.Trim();
|
||||
if (!SupportedQuestionTypes.Contains(type)) throw Error("题型不受支持。", "question_type_invalid");
|
||||
if (command.Difficulty is < 1 or > 5) throw Error("难度必须在 1 到 5 之间。", "question_difficulty_invalid");
|
||||
if (ParseQuestionStatus(command.Status) == QuestionStatus.Published &&
|
||||
!QuestionGrader.HasValidAuthoritativeAnswer(
|
||||
type,
|
||||
command.CorrectOptionIndex,
|
||||
command.CorrectOptionIndices,
|
||||
command.AnswerText))
|
||||
{
|
||||
throw Error("发布题目必须提供有效的标准答案。", "question_grading_rule_invalid");
|
||||
}
|
||||
}
|
||||
|
||||
private static void ApplyQuestion(Question question, UpsertPlatformQuestionCommand command, Guid entryId, Guid nodeId)
|
||||
|
||||
Reference in New Issue
Block a user