按 examId 延迟加载成绩工作区,未选择考试时不执行排名计算

单条及批量成绩草稿、发布
特长分单条及批量维护
成绩复议多级审批、终审改分、归档锁定
排名、等级、单科达线和考试汇总
成绩台账 Excel 导出
管理范围、超级管理员写权限及事务审计
独立开关 ADMIN_NATIVE_RESULTS_ENABLED
This commit is contained in:
2026-07-23 12:16:01 +08:00 Unverified
parent 8f83adbc1e
commit d47c614b53
15 changed files with 1523 additions and 15 deletions
@@ -164,6 +164,44 @@ public static class NativeAdminReadEndpoints
(HttpContext context, string registrationId, IAdminArrangementService service, CancellationToken cancellationToken) =>
Execute(context, service.RetiredSingleAsync(Token(context), cancellationToken)));
}
if (options.NativeResultsEnabled)
{
endpoints.MapGet("/api/admin/results",
(HttpContext context, IAdminResultService service, CancellationToken cancellationToken) =>
Execute(
context,
service.GetAsync(
Token(context),
context.Request.Query["examId"].ToString(),
cancellationToken)));
endpoints.MapPost("/api/admin/results",
(HttpContext context, JsonObject body, IAdminResultService service, CancellationToken cancellationToken) =>
Execute(context, service.SaveAsync(Token(context), body, cancellationToken)));
endpoints.MapPost("/api/admin/results/bulk",
(HttpContext context, JsonObject body, IAdminResultService service, CancellationToken cancellationToken) =>
Execute(context, service.SaveBulkAsync(Token(context), body, cancellationToken)));
endpoints.MapPost("/api/admin/feature-scores/bulk",
(HttpContext context, JsonObject body, IAdminResultService service, CancellationToken cancellationToken) =>
Execute(context, service.SaveFeatureBulkAsync(Token(context), body, cancellationToken)));
endpoints.MapPatch("/api/admin/registrations/{registrationId}/feature-score",
(HttpContext context, string registrationId, JsonObject body, IAdminResultService service, CancellationToken cancellationToken) =>
Execute(context, service.SaveFeatureAsync(Token(context), registrationId, body, cancellationToken)));
endpoints.MapPatch("/api/admin/score-appeals/{resultId}",
(HttpContext context, string resultId, JsonObject body, IAdminResultService service, CancellationToken cancellationToken) =>
Execute(context, service.ReviewAppealAsync(Token(context), resultId, body, cancellationToken)));
endpoints.MapPost("/api/admin/results/cache/refresh",
(HttpContext context, IAdminResultService service, CancellationToken cancellationToken) =>
Execute(context, service.RefreshCacheAsync(Token(context), cancellationToken)));
endpoints.MapGet("/api/admin/excel/results",
(HttpContext context, IAdminResultService service, CancellationToken cancellationToken) =>
ExecuteDocument(
context,
service.ExportAsync(
Token(context),
context.Request.Query["examId"].ToString(),
cancellationToken)));
}
return endpoints;
}