feat: Memory-Konzept für Agents implementieren (STI-21)

- REST API: 9 Read-Only-Endpunkte unter /api/v1/ für alle Kernmodelle
  (Destinatäre, Ländereien, Pächter, Förderungen, Konten,
  Verpachtungen, Verwaltungskosten, Kalender, Transaktionen)
- Token-Authentifizierung via DRF TokenAuthentication
- Management-Command `create_agent_token` für Agent-Tokens
- Wissensbasis: knowledge/ mit Satzung, Richtlinien, Verfahren,
  Kontakte, Historie
- Agent-Instructions: Datenzugriff-Sektion in AGENTS.md dokumentiert

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
SysAdmin Agent
2026-03-09 22:45:11 +00:00
parent 4b21f553c3
commit f8f9dc3319
17 changed files with 1224 additions and 1 deletions

176
knowledge/verfahren.md Normal file
View File

@@ -0,0 +1,176 @@
# Verwaltungsverfahren und Abläufe
> **Status:** Aus Systemcode, Celery-Tasks und App-Struktur abgeleitet.
> Punkte mit [TODO] sind manuell zu ergänzen.
---
## 1. Antragsprozess für Förderungen
### 1.1 Erstaufnahme eines Destinatärs
1. Destinatär-Datensatz anlegen (Django Admin oder Weboberfläche `/destinataere/`)
2. Pflichtfelder ausfüllen:
- Name, Geburtsdatum, E-Mail, Telefon
- Familienzweig
- `ist_abkoemmling` setzen
- Haushaltsgröße, monatliche Bezüge, Vermögen
3. Prüfung Fördervoraussetzungen (automatisch via `erfuellt_voraussetzungen()`)
4. `unterstuetzung_bestaetigt` setzen wenn Voraussetzungen erfüllt
5. Vierteljährlichen Betrag festlegen
6. Standard-Auszahlungskonto zuordnen
### 1.2 Einzel-Förderungsantrag
1. Förderung anlegen unter `/foerderungen/`
2. Status beginnt mit `beantragt`
3. Prüfung durch Rentmeister
4. Entscheidung: `genehmigt` oder `abgelehnt`
5. Nach Auszahlung: Status auf `ausgezahlt` setzen
6. Verwendungsnachweis als Dokument in Paperless hochladen und verknüpfen
---
## 2. Vierteljährliches Nachweisverfahren
### 2.1 Ablauf
1. Zu Beginn jedes Quartals: VierteljahresNachweis-Datensätze für alle aktiven Destinatäre erstellen
2. Destinatäre werden benachrichtigt (per E-Mail, [TODO: Benachrichtigungsvorlage?])
3. Destinatäre reichen Unterlagen ein:
- Per E-Mail an paperless@vhtv-stiftung.de (automatisch erfasst)
- Oder direkt über das Self-Service-Portal (sofern eingerichtet)
4. Rentmeister prüft eingegangene Unterlagen
5. Status aktualisieren: `eingereicht``geprueft`
6. Zahlung freigeben wenn Nachweis genehmigt
### 2.2 Fristen (Überblick)
- **Studiennachweis:** 15. März (Q1/Q2) bzw. 15. September (Q3/Q4)
- **Zahlung:** 15. Dez. Vorjahr (Q1), 15. März (Q2), 15. Juni (Q3), 15. September (Q4)
### 2.3 Automatische Freigabe
Bei Destinatären mit Semesterbasis-Studiennachweis kann eine automatische Freigabe erfolgen (`auto_geprueft`).
---
## 3. E-Mail-Eingangsverarbeitung (Automatisiert)
### 3.1 Übersicht
Das System verarbeitet automatisch eingehende E-Mails an `paperless@vhtv-stiftung.de`.
**Technologie:** Celery Beat Task, läuft alle 15 Minuten
### 3.2 Konfiguration
| Env-Variable | Standard | Bedeutung |
|---|---|---|
| `IMAP_HOST` | | IMAP-Server (Pflicht) |
| `IMAP_PORT` | 993 | IMAP-Port (SSL) |
| `IMAP_USER` | paperless@vhtv-stiftung.de | Benutzername |
| `IMAP_PASSWORD` | | Passwort (Pflicht) |
| `IMAP_FOLDER` | INBOX | E-Mail-Ordner |
| `IMAP_USE_SSL` | true | SSL verwenden |
### 3.3 Workflow
1. System liest ungelesene E-Mails aus dem IMAP-Postfach
2. Absender-E-Mail wird mit Destinatär-Datenbank abgeglichen
3. `DestinataerEmailEingang`-Datensatz wird angelegt
4. Anhänge werden in **Paperless-NGX** hochgeladen mit Tag `Stiftung_Destinatäre`
5. Für jeden Anhang wird ein `DokumentLink` erstellt
6. Unbekannte Absender werden als `unbekannt` markiert (manuelle Nachbearbeitung nötig)
### 3.4 Paperless-Tags
| Tag | Verwendung |
|---|---|
| `Stiftung_Destinatäre` | Dokumente von/für Destinatäre |
| `Stiftung_Land_und_Pächter` | Dokumente zu Ländereien/Pächtern |
| `Stiftung_Administration` | Verwaltungsdokumente |
---
## 4. Pachtvertragsverwaltung
### 4.1 Datenstruktur
- **Land** (Flurstück): Grundeinheit, identifiziert durch `lfd_nr`
- **LandVerpachtung**: Pachtvertrag (neue Struktur)
- **LandAbrechnung**: Jährliche Abrechnung je Flurstück
### 4.2 Anlage eines Pachtvertrags
1. Land-Datensatz prüfen/anlegen (`/land/`)
2. Pächter anlegen (`/paechter/`) falls nicht vorhanden
3. LandVerpachtung anlegen (`/land/<id>/verpachtung/`)
- Vertragsnummer vergeben
- Pachtbeginn, Pachtende, Verlängerungsklausel
- Pachtzins (pro ha oder pauschal)
- Zahlungsweise
- USt-Option und Umlagen konfigurieren
4. System aktualisiert LandAbrechnung automatisch
### 4.3 Pachtzins-Zahlungsweisen
| Option | Beschreibung |
|---|---|
| `jaehrlich` | Einmal jährlich |
| `halbjaehrlich` | Zweimal jährlich |
| `vierteljaehrlich` | Quartalsweise |
| `monatlich` | Monatlich |
### 4.4 Umlagen (Durchreichungen an Pächter)
Folgende Kosten können als Umlage auf Pächter umgelegt werden:
- Grundsteuer
- Versicherungen
- Verbandsbeiträge
- Jagdpachtanteile (optional)
---
## 5. Abrechnungsverfahren für Ländereien (LandAbrechnung)
### 5.1 Jährliche Abrechnung
- Pro Flurstück wird automatisch eine `LandAbrechnung` für jedes Abrechnungsjahr erstellt
- Felder: Pacht vereinnahmt, Umlagen, sonstige Einnahmen
- Ausgaben: nach Kategorien (Grundsteuer, Versicherung, Verwaltung etc.)
- USt-Berechnung wenn USt-Option aktiv
### 5.2 Dokumentenablage
Relevante Dokumente (Pachtverträge, Grundsteuerbescheide, Versicherungsnachweise) werden in **Paperless-NGX** abgelegt und per `DokumentLink` verknüpft.
---
## 6. Backup-Verfahren
### 6.1 Backup-Typen
| Typ | Inhalt |
|---|---|
| `full` | Datenbank + Dateien |
| `database` | Nur PostgreSQL-Datenbank |
| `files` | Nur Mediendateien |
### 6.2 Ablauf
1. Backup-Job über Weboberfläche anlegen (`/backup/`)
2. System erstellt Backup asynchron im Hintergrund
3. Backup wird als `.tar.gz` unter `/app/backups/` gespeichert
4. Status: `pending``running``completed` / `failed`
### 6.3 Speicherort
- **Container:** `/app/backups/`
- **Dateiname:** `stiftung_backup_YYYYMMDD_HHMMSS.tar.gz`
---
## 7. Verwaltungskosten-Erfassung
Verwaltungskosten werden kategorisiert erfasst:
- Bezeichnung, Kategorie, Betrag, Datum
- Lieferant/Firma, Rechnungsnummer
- Zuordnung zu Rentmeister (für Fahrtkosten etc.)
- Kilometerpauschale: Standard 0,30 €/km
---
## 8. Audit Trail
Alle Änderungen in der Anwendung werden im `AuditLog` erfasst:
- Benutzer, Zeitstempel, Aktion
- Entitätstyp, ID, Name
- Änderungsdetails (JSON)
- IP-Adresse, Browser
---
*Zuletzt aktualisiert: 2026-03 | Quelle: Systemcode tasks.py, models.py, backup_utils.py*