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}` }