diff --git a/backend/routers/vitals_baseline.py b/backend/routers/vitals_baseline.py index 88b58ff..ca17db9 100644 --- a/backend/routers/vitals_baseline.py +++ b/backend/routers/vitals_baseline.py @@ -307,6 +307,7 @@ async def import_apple_health_baseline( updated = 0 skipped = 0 errors = 0 + error_details = [] # Collect error messages with get_db() as conn: cur = get_cursor(conn) @@ -378,14 +379,15 @@ async def import_apple_health_baseline( except Exception as e: import traceback - error_detail = f"Row error: {str(e)}\nTraceback: {traceback.format_exc()}" - logger.error(error_detail) - print(error_detail) # Force output to Docker logs + error_msg = f"Row {date if 'date' in locals() else 'unknown'}: {str(e)}" + error_details.append(error_msg) + logger.error(f"{error_msg}\n{traceback.format_exc()}") errors += 1 return { "inserted": inserted, "updated": updated, "skipped": skipped, - "errors": errors + "errors": errors, + "error_details": error_details[:10] # Return first 10 errors } diff --git a/frontend/src/pages/VitalsPage.jsx b/frontend/src/pages/VitalsPage.jsx index d6fda55..6e94708 100644 --- a/frontend/src/pages/VitalsPage.jsx +++ b/frontend/src/pages/VitalsPage.jsx @@ -947,10 +947,18 @@ function ImportTab({ onImportComplete }) { {error &&
{error}
} {result && ( -
- Import erfolgreich ({result.type === 'omron' ? 'Omron' : 'Apple Health'}):
+
0 ? '#FCEBEB' : '#E8F7F0', border: `1px solid ${result.errors > 0 ? '#D85A30' : '#1D9E75'}`, borderRadius: 8, fontSize: 13, color: result.errors > 0 ? '#D85A30' : '#085041', marginBottom: 12 }}> + Import {result.errors > 0 ? 'mit Fehlern' : 'erfolgreich'} ({result.type === 'omron' ? 'Omron' : 'Apple Health'}):
{result.inserted} neu · {result.updated} aktualisiert · {result.skipped} übersprungen {result.errors > 0 && <> · {result.errors} Fehler} + {result.error_details && result.error_details.length > 0 && ( +
+ Fehler-Details: + {result.error_details.map((err, i) => ( +
• {err}
+ ))} +
+ )}
)}