|
|
@@ -23,7 +23,7 @@ class BackfillExamAnalysisResultsCommand extends Command
|
|
|
{--since= : papers.completed_at >= 该时间(默认今天 00:00:00)}
|
|
|
{--paper= : 仅处理指定 paper_id}
|
|
|
{--student= : 仅处理指定 student_id}
|
|
|
- {--limit=100 : 最多处理多少条候选试卷}
|
|
|
+ {--limit=100 : 最多处理多少条待回填目标}
|
|
|
{--force-analysis : 允许重算已有但无效的分析数据(默认不覆盖)}
|
|
|
{--stats-only : 只统计缺失情况,不投递队列、不修改数据、不受 limit 限制}
|
|
|
{--dry-run : 只打印待回填列表,不执行回填}';
|
|
|
@@ -58,10 +58,6 @@ class BackfillExamAnalysisResultsCommand extends Command
|
|
|
->when($studentFilter, fn ($q) => $q->where('student_id', $studentFilter))
|
|
|
->orderBy('completed_at');
|
|
|
|
|
|
- if (! $statsOnly) {
|
|
|
- $paperQuery->limit($limit);
|
|
|
- }
|
|
|
-
|
|
|
$paperRows = $paperQuery->get(['paper_id', 'student_id', 'completed_at']);
|
|
|
|
|
|
$targets = [];
|
|
|
@@ -113,14 +109,16 @@ class BackfillExamAnalysisResultsCommand extends Command
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- $targets[] = (object) [
|
|
|
- 'paper_id' => (string) $paper->paper_id,
|
|
|
- 'student_id' => (string) $paper->student_id,
|
|
|
- 'completed_at' => (string) $paper->completed_at,
|
|
|
- 'action' => $action,
|
|
|
- 'analysis_id' => $latest->id ?? null,
|
|
|
- 'student_report_pdf_url' => $studentReportPdfUrl,
|
|
|
- ];
|
|
|
+ if ($statsOnly || count($targets) < $limit) {
|
|
|
+ $targets[] = (object) [
|
|
|
+ 'paper_id' => (string) $paper->paper_id,
|
|
|
+ 'student_id' => (string) $paper->student_id,
|
|
|
+ 'completed_at' => (string) $paper->completed_at,
|
|
|
+ 'action' => $action,
|
|
|
+ 'analysis_id' => $latest->id ?? null,
|
|
|
+ 'student_report_pdf_url' => $studentReportPdfUrl,
|
|
|
+ ];
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
$pendingCount = $counts[self::ACTION_ANALYSIS]
|
|
|
@@ -129,9 +127,10 @@ class BackfillExamAnalysisResultsCommand extends Command
|
|
|
+ $counts[self::ACTION_NEEDS_REVIEW];
|
|
|
|
|
|
$this->info(sprintf(
|
|
|
- '扫描完成:试卷 %d 条,待处理 %d 条;需补分析 %d 条,仅补PDF %d 条,同步PDF URL %d 条,需人工确认 %d 条,已完成跳过 %d 条(since=%s%s)',
|
|
|
+ '扫描完成:试卷 %d 条,待处理 %d 条,本次目标 %d 条;需补分析 %d 条,仅补PDF %d 条,同步PDF URL %d 条,需人工确认 %d 条,已完成跳过 %d 条(since=%s%s)',
|
|
|
$paperRows->count(),
|
|
|
$pendingCount,
|
|
|
+ count($targets),
|
|
|
$counts[self::ACTION_ANALYSIS],
|
|
|
$counts[self::ACTION_PDF_ONLY],
|
|
|
$counts[self::ACTION_SYNC_PDF_URL],
|