Activity and nutrition legacy CSV imports enforce tier limits with UsageBadge UI; Universal CSV gets mapping validation on copy/import, format-check parity, and structured error_details. version: 0.9u module: activity 1.2.1, nutrition 1.0.3, csv_import 0.4.0 Co-authored-by: Cursor <cursoragent@cursor.com>
1.2 KiB
1.2 KiB
Umsetzung 2026-07-23 (nach Architektur-Abgleich)
Architektur-Check vor Implementierung
- Phase C (Schreibpfad): laut
ACTIVITY_PRODUCTION_ARCHITECTURE_AND_PHASES.mdbereits erledigt (Sync abgestellt, Orchestrator als SSoT, keine Aufrufer vonsync_column_backed_session_metrics). Keine Doppel-Implementierung. - Feature-ID: Issue-Vorgabe
activity_entries(nicht separatesactivity_import) — konsistent mitcreate_activityund Universal-CSV-Modul-Check incsv_import.py. - Legacy-Endpoint bleibt: Frontend nutzt weiterhin
POST /api/activity/import-csv(ActivityPageApple-Health-Panel); Universal-Pfad ist parallel (ARCH §8.2).
Änderungen
Backend (routers/activity.py):
check_feature_access(pid, "activity_entries")vor Legacy-Import- HTTP 403 bei Limit (wie
nutrition/import-csv) increment_feature_usagepro neu eingefügter Zeile (inserted)
Frontend (ActivityPage.jsx ImportPanel):
UsageBadgeam Import-Titel- Drop-Zone deaktiviert bei Limit
- Usage-Reload nach Import
Tests: tests/test_activity_import_feature_enforcement.py (403 + Increment)
Regression INSERT-SQL: tests/test_activity_insert_sql.py (grün)