- Added the Universal CSV Import module, including the `UNIVERSAL_CSV_IMPORT_AGENT_GUIDE.md` for guidelines on new import modules, executors, and templates. - Updated relevant rules in `ARCHITECTURE.md` and `CODING_RULES.md` to include references to the new import module and its requirements. - Revised the Gitea Issues Index to reflect the latest updates and added context for ongoing issues related to the CSV import functionality. - Enhanced the README files to provide clearer navigation and documentation for the Universal CSV Import features.
4.2 KiB
4.2 KiB
Universal CSV Import – Agent-Leitfaden
Stand: 2026-04-09 · Kontext: Issue #21 (Universeller CSV-Parser), Prod-Migrationen u. a. 051–053.
Dieses Dokument ist normativ für Agenten, die ein neues Import-Zielmodul anlegen oder bestehende Import-Pfade (Executor, Vorlagen, DB) ändern.
1. Architektur (Kurz)
| Komponente | Pfad / Rolle |
|---|---|
| Modul-Definitionen | backend/csv_parser/module_registry.py (MODULE_DEFINITIONS) |
| Typ-/Einheiten-Konvertierung | backend/csv_parser/type_converter.py, field_units.py |
| Zeilen-Aggregation (z. B. Ernährung pro Tag) | backend/csv_parser/import_row_processing.py |
| Import-Ausführung | backend/csv_parser/executor.py |
| Fehlertexte / Transaktions-Hinweise | backend/csv_parser/import_errors.py (enrich_row_error) |
| Admin-Systemvorlagen | backend/routers/admin_csv_templates.py |
| Nutzer-Import (Profil-Mappings) | backend/routers/csv_import.py |
| Vorlagen-Validierung (strukturell + Sample) | backend/csv_parser/template_validator.py (validate_csv_template) |
Single Source of Truth für erlaubte Zielfelder, Typen und Duplikat-Keys ist module_registry.py. Keine parallele Feldliste in Routern duplizieren.
2. Checkliste: Neues Zielmodul
MODULE_DEFINITIONSum Eintrag erweitern:table,fields(Typendate/datetime/float/int/string),duplicate_key,duplicate_strategy, ggf.derive_date_from_datetime_field,import_mode(Spezialpfade wie Schlaf).- DB: Migration nur nach Projektregel (
backend/migrations/NNN_*.sql). Spaltenbreiten/Typen so wählen, dass importierte Werte (z. B. kJ→kcal, große Energiebeträge) keinen NUMERIC-Overflow verursachen. source/ CHECK-Constraints: Wenn die Zieltabellesourcehat, muss der Wertcsv(oder der vereinbarte Import-Tag) in der DB erlaubt sein (Migration anpassen, nicht nur App-Code).- Executor: Einfügen/Aktualisieren in
executor.pynur über bestehende Muster (ein Cursor, kein verschachteltesget_db()im gleichen Request). Bei mehreren Zeilen pro Transaktion: bei Zeilenfehlern SAVEPOINT pro Zeile nutzen (siehe Activity-Pattern), damit die Transaktion nicht dauerhaft abgebrochen ist. - Trainingstyp / FK-Auflösung: DB-Zugriffe für abhängige Entitäten (z. B.
get_training_type_for_activity_with_cursor) mit dem gleichen Cursor wie der Import – keine zweite Connection aus dem Importpfad. - Vorlagen: System-Templates in Migration/Seed pflegen (
csv_field_mappings,is_system=true).type_conversionsundsource_unitdort setzen, wo Einheiten aus Exporten abweichen (z. B. Apple kJ). - Validierung: Neue/angepasste Admin-Vorlagen müssen
validate_csv_templatepassieren (Create/Update liefert bei Fehlern 422 mitvalidation). Tests für Randfälle ergänzen (tests/test_template_validator.pyo. ä.). - API / Frontend: Neue Admin-Endpunkte in
main.pyregistrieren; Frontend nur überapi.js. Bei strukturierten FastAPI-Fehlern (detailals Objekt/Liste) bestehende Hilfen (formatFastApiDetail) nutzen.
3. Checkliste: Bestehendes Modul ändern
- Schema-Änderung: Migration + ggf.
module_registry-Felder anpassen. - Neue Spalte im Import: Executor-Mapping, optional
type_conversions/ Validator. - Änderung an Duplikatlogik:
duplicate_key/ON CONFLICT-Pfad im Executor prüfen. - Datums-/Zeit-Parsing:
type_converter– ISO-DatenYYYY-MM-DDkonsistent (dayfirst=False), ZeitenHH:MMohne Sekunden unterstützen wo nötig.
4. Bekannte Einschränkungen (Follow-up in Gitea)
- Admin „Format prüfen“ kann
import_row_processingderzeit weglassen; volle Parität mit dem gespeicherten Template erst beim Speichern / echten Import. - Nutzer-Mappings (Copy aus Systemvorlage) laufen nicht automatisch durch
validate_csv_template– Tracking: Gitea #71 (#71).
5. Verwandte Regeln
.claude/rules/ARCHITECTURE.md– Router, DB,source-Tracking.claude/rules/CODING_RULES.md– Kurzverweis Universal CSV.claude/rules/DOCUMENTATION.md– Ablage technischer Specs
Version: 1.0