From af88732a079b0b1cbfdeab1c3c7806dfc594e506 Mon Sep 17 00:00:00 2001 From: biss Date: Fri, 21 Aug 2026 22:02:21 +0800 Subject: [PATCH] patch --- src/Jiaowu.Api/Controllers/EvaluationsController.cs | 9 ++++++--- .../Persistence/DevelopmentSqliteMigrator.cs | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Jiaowu.Api/Controllers/EvaluationsController.cs b/src/Jiaowu.Api/Controllers/EvaluationsController.cs index 7d79ddd..63d72ba 100644 --- a/src/Jiaowu.Api/Controllers/EvaluationsController.cs +++ b/src/Jiaowu.Api/Controllers/EvaluationsController.cs @@ -631,8 +631,10 @@ public sealed class EvaluationsController( { var teacherId = await CurrentTeacherId(cancellationToken); if (!teacherId.HasValue) return ConflictProblem("当前账号未关联教师档案。"); - return Ok(await PlanSummary(db.TeachingImprovementPlans.AsNoTracking().Where(x => x.TeacherId == teacherId.Value)) - .OrderByDescending(x => x.TermStartDate).ToListAsync(cancellationToken)); + return Ok(await PlanSummary(db.TeachingImprovementPlans.AsNoTracking() + .Where(x => x.TeacherId == teacherId.Value) + .OrderByDescending(x => x.AcademicTerm!.StartDate)) + .ToListAsync(cancellationToken)); } [HttpPost("closure/plans")] @@ -676,7 +678,8 @@ public sealed class EvaluationsController( { var plans = db.TeachingImprovementPlans.AsNoTracking().Where(x => currentUserDataScope.Current.RestrictedCollegeId == null || x.TeachingTask!.Course!.CollegeId == currentUserDataScope.Current.RestrictedCollegeId); if (termId.HasValue) plans = plans.Where(x => x.AcademicTermId == termId.Value); - var planRows = await PlanSummary(plans).OrderByDescending(x => x.TermStartDate).ToListAsync(cancellationToken); + var planRows = await PlanSummary(plans.OrderByDescending(x => x.AcademicTerm!.StartDate)) + .ToListAsync(cancellationToken); var observations = db.TeachingObservationEvaluations.AsNoTracking().Where(x => currentUserDataScope.Current.RestrictedCollegeId == null || x.TeachingTask!.Course!.CollegeId == currentUserDataScope.Current.RestrictedCollegeId); if (termId.HasValue) observations = observations.Where(x => x.AcademicTermId == termId.Value); var observationStats = await observations.GroupBy(x => x.Source).Select(g => new { Source = g.Key.ToString(), Count = g.Count(), AverageScore = Math.Round(g.Average(x => (double)x.Score), 1) }).ToListAsync(cancellationToken); diff --git a/src/Jiaowu.Api/Infrastructure/Persistence/DevelopmentSqliteMigrator.cs b/src/Jiaowu.Api/Infrastructure/Persistence/DevelopmentSqliteMigrator.cs index 6423346..bbceb05 100644 --- a/src/Jiaowu.Api/Infrastructure/Persistence/DevelopmentSqliteMigrator.cs +++ b/src/Jiaowu.Api/Infrastructure/Persistence/DevelopmentSqliteMigrator.cs @@ -3462,7 +3462,7 @@ public sealed class DevelopmentSqliteMigrator( """ALTER TABLE "AcademicCalendarEvents" ADD COLUMN "Source" INTEGER NOT NULL DEFAULT 1;""", """ALTER TABLE "AcademicCalendarEvents" ADD COLUMN "SourceYear" INTEGER NULL;""", """ALTER TABLE "AcademicCalendarEvents" ADD COLUMN "IsOffDay" INTEGER NULL;""", - """CREATE INDEX "IX_AcademicCalendarEvents_AcademicTermId_Source_SourceYear_StartsOn" ON "AcademicCalendarEvents" ("AcademicTermId", "Source", "SourceYear", "StartsOn");""" + """CREATE INDEX IF NOT EXISTS "IX_AcademicCalendarEvents_AcademicTermId_Source_SourceYear_StartsOn" ON "AcademicCalendarEvents" ("AcademicTermId", "Source", "SourceYear", "StartsOn");""" ]; private static readonly string[] CourseEquivalencyRulesAndWaitlistAuditStatements =