Nutzungsbedingungen SanPilot

SanPilot — Unterauftragsverarbeiter-Liste (Art. 28 Abs. 2 DSGVO)

Stand: 2026-04-20 | Pflicht zur Veröffentlichung / Bekanntgabe an AVV-Partner

| # | Unterauftragsverarbeiter | Sitz (Land) | Dienst | Personenbezogene Daten | Rechtsgrundlage Drittlandtransfer |
|---|---|---|---|---|---|
| 1 | Anthropic, PBC | USA (San Francisco) | Claude API — KI-Berichtstexte | Gebäudeparameter, Berechnungsergebnisse (KEINE Eigentümer-Stammdaten) | EU-Standardvertragsklauseln (SCC Modul 2) via Anthropic Commercial Terms DPA |
| 2 | [Hosting-Provider] | Deutschland | Server, Datenbank (PostgreSQL), Objektspeicher (MinIO) | Alle personenbezogenen Daten | Kein Drittlandtransfer — Server in DE |

Geplante Änderungen

Changelog

| Datum | Änderung |
|---|---|
| 2026-04-20 | Initiale Liste erstellt |


SanPilot — Löschkonzept (DSGVO + BAFA-Aufbewahrungspflicht)

Stand: 2026-04-20

Grundsatz

iSFP-Dokumente unterliegen einer 10-jährigen BAFA-Aufbewahrungspflicht (Förderauflage). Alle anderen personenbezogenen Daten werden nach Vertragsende gelöscht. Nach Ablauf der 10-Jahres-Frist erfolgt automatische Löschung.

Datenkategorien und Fristen

| Datenkategorie | Speicherort | Aufbewahrungsfrist | Löschauslöser |
|---|---|---|---|
| iSFP-Dokumente (Berechnungen, Berichte) | PostgreSQL + MinIO | 10 Jahre ab iSFP-Erstellungsdatum | Automatisch (Cron-Job) nach 10 Jahren |
| Eigentümer-Stammdaten (Name, Adresse, Kontakt) | PostgreSQL buildings | 10 Jahre (verknüpft mit iSFP) | Zusammen mit iSFP-Dokument |
| Gebäudefotos | MinIO sanpilot-fotos Bucket | 10 Jahre | Zusammen mit iSFP-Dokument |
| Verbrauchsdaten | PostgreSQL verbrauchsdaten | 10 Jahre | Zusammen mit iSFP-Dokument |
| Berater-Zugangsdaten / Konten | PostgreSQL (User-Tabelle) | Dauer Vertragsverhältnis + 1 Jahr | Kündigung des Beraterzugangs |
| KI-Bericht-Prompts (Claude API Logs) | Anthropic-Server (7-Tage-Default) | 7 Tage | Automatisch durch Anthropic |
| Chat-Turns (Dialog-Agent) | PostgreSQL chat_turns | 1 Jahr | Automatisch (Cron-Job) |

Technische Umsetzung

Automatischer Lösch-Cron-Job

Datei: backend/scripts/cleanup_10_years.py
Ausführung: täglich via systemd-Timer auf dem Host-Server

[Unit]
Description=SanPilot 10-Jahres-Datenlöschung (BAFA-Aufbewahrungspflicht)
After=network.target

[Timer]
OnCalendar=*-*-01 03:00:00   # 1. jeden Monats, 3 Uhr
Persistent=true

[Install]
WantedBy=timers.target

Was der Cron-Job tut

  1. Sucht alle buildings mit created_at < NOW() - INTERVAL '10 years'
  2. Prüft ob alle zugehörigen iSFP-Berichte abgeschlossen sind (kein aktiver BAFA-Vorgang)
  3. Löscht in Reihenfolge: chat_turnsfotos (MinIO) → verbrauchsdatenvariantenmassnahmencalculationsbuildings
  4. Schreibt Löschprotokoll nach /var/log/sanpilot/cleanup.log
  5. Sendet Bestätigungs-E-Mail an Admin

EXIF-Löschung bei Foto-Upload

Beim Upload via MinIO wird automatisch mit Pillow / piexif die GPS-Information aus EXIF-Metadaten entfernt (Privacy-by-Design).

Datei: backend/storage/presigned.pystrip_gps_exif(image_bytes) vor Upload.

Betroffenenrechte (Art. 15–22 DSGVO)

| Recht | Umsetzung in SanPilot |
|---|---|
| Auskunft (Art. 15) | Manuell auf Anfrage: Berater exportiert Gebäudedaten als JSON via API |
| Berichtigung (Art. 16) | Berater kann Daten in der App direkt bearbeiten |
| Löschung (Art. 17) | Nur nach Ablauf BAFA-Aufbewahrungsfrist möglich; vorher: Abwägung |
| Datenportabilität (Art. 20) | JSON-Export aus API /buildings/{id}/export (geplant) |

Nächste Schritte (offen)