From 7f300b90678e344933d1842c432cb58d877c577e Mon Sep 17 00:00:00 2001 From: fish Date: Sat, 4 Jul 2026 12:14:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=A4=B1=E8=B4=A5=E6=97=B6?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF=E5=B9=B6?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=90=8E=E7=AB=AF=E7=8A=B6=E6=80=81=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/services/stock_sync.go | 7 +++++++ frontend/src/components/StockOverview.tsx | 3 +++ 2 files changed, 10 insertions(+) diff --git a/backend/internal/services/stock_sync.go b/backend/internal/services/stock_sync.go index ef62cc6..b6ddb47 100644 --- a/backend/internal/services/stock_sync.go +++ b/backend/internal/services/stock_sync.go @@ -123,6 +123,13 @@ func (s *StockSyncService) finishJob(ctx context.Context, jobID string, recordsC } if err := s.db.WithContext(ctx).Model(&models.StockSyncJob{}).Where("id = ?", jobID).Updates(updates).Error; err != nil { log.Printf("[stock sync] update job %s failed: %v", jobID, err) + return + } + + var job models.StockSyncJob + if err := s.db.WithContext(ctx).Where("id = ?", jobID).First(&job).Error; err == nil { + log.Printf("[stock sync] job %s final state: status=%s, started_at=%v, finished_at=%v", + jobID, job.Status, job.StartedAt, job.FinishedAt) } } diff --git a/frontend/src/components/StockOverview.tsx b/frontend/src/components/StockOverview.tsx index 2672106..991bdd8 100644 --- a/frontend/src/components/StockOverview.tsx +++ b/frontend/src/components/StockOverview.tsx @@ -275,5 +275,8 @@ function formatSyncStatus(job: SyncJob): string { } } const statusText = job.status === 'success' ? '成功' : '失败' + if (job.status === 'failed' && job.error_message) { + return `${statusText} · ${timeStr} · ${job.error_message}` + } return `${statusText} · ${timeStr}` }