Skip to content

Kartellbank

Lucas Greuloch (greluc) edited this page Jun 21, 2026 · 1 revision

Kartellbank

Die Kartellbank ist das interne Bankwesen des Basetools: ein eigener Bereich, in dem ein dediziertes Bankpersonal die Konten der Organisation verwaltet — für Staffeln, Spezialkommandos, Bereiche, das Kartell als Ganzes und die Bank selbst. Sie ist ein eigenständiges Hauptbuch und bewusst unabhängig von Saisons, Preislinien und den Profit-Flüssen aus Einsätzen, Operationen und Aufträgen.

Es gibt keine Konten für einzelne Spieler. Weil aUEC in Star Citizen nur auf Spielerkonten existiert, führt jedes Bankkonto zusätzlich eine Halterverteilung: welcher Spieler welchen Teil des Kontostands physisch hält. Die Halter-Teilbeträge eines Kontos ergeben in Summe immer exakt den Kontostand.

Beträge sind ganze aUEC. Zeiten werden in UTC gespeichert und in lokaler Zeit (Europe/Berlin) angezeigt.

Kontoarten

Art Eigentümer Anzahl
Org-Einheit (ORG_UNIT) eine Staffel oder ein Spezialkommando höchstens eins pro Org-Einheit
Bereich (AREA) ein Bereich eins pro Bereich
Kartell (CARTEL) die Organisationsleitung / Organisation als Ganzes genau eins
Kartellbank (CARTEL_BANK) das Betriebskonto der Bank selbst genau eins
Spezialkonto (SPECIAL) frei benannt, dynamisch angelegt beliebig viele

Jedes Konto hat eine generierte, eindeutige Kontonummer im Format KB-<Nummer> (z. B. KB-0042), einen Anzeigenamen, eine Art und einen Status (ACTIVE / CLOSED). Alle Konten — auch die beiden Einzelstücke Kartell und Kartellbank — werden zur Laufzeit von der Bankleitung angelegt, nichts wird vorab eingerichtet.

Konto-Lebenszyklus

  • Ein Konto lässt sich schließen, wenn sein Kontostand null ist (den Rest vorher umbuchen) und kein offener Antrag auf ihm liegt. Ein geschlossenes Konto ist schreibgeschützt, bleibt aber mit voller Historie sichtbar.
  • Geschlossene Konten können von der Bankleitung wieder eröffnet werden.
  • Konten werden nie hart gelöscht. Korrekturen laufen über Stornos, nicht über Löschungen.

Buchungen und Hauptbuch

Alle Wertbewegungen landen in einem fortschreibenden Hauptbuch — Zeilen werden nie geändert oder gelöscht. Buchungsarten:

  • Einzahlung — benennt den Spieler, der das Geld physisch erhalten hat.
  • Auszahlung — benennt den Spieler, der es ausgezahlt hat.
  • Transfer / Umbuchung — zwischen zwei Konten oder innerhalb eines Kontos zwischen zwei Haltern (Umbuchung der Verwahrung; der Kontostand bleibt gleich). Ein Selbst-Transfer (gleiches Konto, gleicher Halter) wird abgewiesen.
  • Storno — korrigiert eine fehlerhafte Buchung als gespiegelte Gegenbuchung mit Verweis auf das Original. Ein Storno und ein Wipe-Reset sind selbst nicht stornierbar; zweimal stornieren wird abgewiesen.

Jede Buchung benennt genau einen Halter. Es gibt keine Überziehung: weder der Kontostand noch der Teilbestand eines Halters darf unter null fallen — eine Auszahlung oder ein Transfer kann nur Geld bewegen, das der genannte Halter auf diesem Konto tatsächlich hält. Parallele Buchungen können ein Konto nicht gemeinsam überziehen (Prüfung innerhalb der Buchungstransaktion).

Berechtigungen

Die Bank hängt an zwei eigenen Keycloak-Rollen plus feingranularen Grant-Zeilen — und ist völlig unabhängig von der Org-Einheits-Mitgliedschaft (REQ-BANK-008). Eine Staffel- oder SK-Mitgliedschaft qualifiziert oder disqualifiziert niemanden für die Bank; der aktive Bereich (Admin-Pin) und Org-Rollen haben keinerlei Einfluss auf Bank-Entscheidungen.

  • Bankmitarbeiter (BANK_EMPLOYEE) — darf den Bankbereich betreten und Konten sehen, für die er eine Grant-Zeile besitzt.
  • Bankleitung (BANK_MANAGEMENT) — sieht und verwaltet alle Konten, Halter und Grants.

Rollen-Hierarchie: ADMIN > BANK_MANAGEMENT > BANK_EMPLOYEE. Admins passieren jedes Bank-Gate, die Bankleitung jedes Mitarbeiter-Gate.

Grants (Konto-Rechte)

Feinrechte sind app-verwaltete Grant-Zeilen, keine Keycloak-Rollen: eine Zeile pro (Mitarbeiter, Konto). Die Existenz der Zeile gibt Lesezugriff auf das Konto; drei unabhängige Flags steuern die Buchungsrechte: einzahlen, auszahlen, transferieren (eine Zeile ganz ohne Flags ist reine Lesesicht). Grants verwaltet die Bankleitung; sie können nur an Nutzer vergeben werden, die die Rolle BANK_EMPLOYEE halten. Jede Grant-Änderung wird auditiert.

Wer darf was?

Spalten: Member = beliebige Org-Rolle ohne Bankrolle · Bankmitarbeiter = BANK_EMPLOYEE (mit Grants) · Bankleitung = BANK_MANAGEMENT.

Funktion Anonym Member Bankmitarbeiter Bankleitung Admin
Bankbereich + Dashboard betreten, Konten mit Grant sehen
Alle Konten, Halter, Grants sehen
Einzahlen / Auszahlen / Transfer ✅ je Flag
Konten anlegen/umbenennen/schließen/wiedereröffnen, Halter-Registry, Grants verwalten
Storno einer Buchung
Kontoauszug-PDF (gesehene Konten)
3-Monats-Report über alle Konten
Audit-Log lesen
Wipe-Reset auslösen

Das Audit-Log ist bewusst nur für Admins sichtbar — die Bankleitung sieht es nicht. Jede Bankänderung (Buchungen, Stornos, Konto-Lebenszyklus, Halter- und Grant-Änderungen, PDF-Exporte, Wipe-Reset) schreibt genau eine unveränderliche Audit-Zeile.

Die maßgebliche Rechtematrix steht im Repo unter ROLES_AND_PERMISSIONS.md. Bei Abweichungen zählt immer der Code.

Im Bankbereich (Seitenleiste)

  • Bank-Dashboard (/bank) — eine Karte pro sichtbarem Konto mit aktuellem Stand und Netto-Veränderung der letzten 30 Tage plus 30-Tage-Trend. Bankmitarbeiter sehen ihre Grant-Konten; die Bankleitung (und Admins) sehen alle Konten plus Summenleiste. Einzelne Buchungen liegen auf der Konto-Detailseite, nicht im Dashboard.
  • Bankverwaltung (/bank/manage, Bankleitung) — Konten anlegen und schließen, Halter-Registry pflegen.
  • Berechtigungen (/bank/grants, Bankleitung) — Grants pro (Mitarbeiter, Konto) verwalten.
  • Anträge (/bank/requests) — Warteschlange der offenen Buchungsanträge zum Bestätigen oder Ablehnen (siehe unten).

Im Admin-Bereich liegen zusätzlich /admin/bank und das Audit-Log /admin/bank-audit (beide Admin-only). Mehr dazu unter Administration.

PDF-Auswertungen

  • Kontoauszug — für jedes sichtbare Konto, über einen frei wählbaren Zeitraum: Anfangsbestand, jede Buchung im Zeitraum mit laufendem Saldo, Endbestand und die abschließende Halterverteilung.
  • 3-Monats-Report (Bankleitung) — ein einziges PDF über alle Konten der letzten drei Monate mit Eröffnungs-/Schlussbestand, Ein-/Ausgängen, Netto-Veränderung, Halterverteilung und den einzelnen Buchungen je Konto.

Beide PDFs folgen dem DAS-KARTELL-Design (Lato, KRT-Orange) und werden mit deutschen Beschriftungen erzeugt. Jeder Export wird auditiert.

Wipe-Reset (Admin)

Ein Star-Citizen-Wipe löscht die In-Game-Währung. Der Admin-Bereich hat einen Knopf, der alle Kontostände auf null zurücksetzt: pro Konto wird eine WIPE_RESET-Buchung pro Halter mit Restbestand gebucht. Historie, Auszüge und Audit-Trail bleiben vollständig erhalten — nichts wird gelöscht. Die Aktion erfordert ADMIN, eine Gefahren-Bestätigung mit Eingabe-zum-Bestätigen, und ist idempotent (ein zweiter Klick auf eine bereits leere Bank ist ein No-op).

Org-Einheits-Bank — Zugang für Offiziere und Leitungen

Offiziere und Leitungen können — ohne Bankrolle — eingeschränkt mit dem Konto ihrer eigenen Org-Einheit arbeiten. Diese Oberfläche liegt außerhalb des Bankbereichs unter der Seitenleisten-Position „Org-Einheits-Bank" (/org-unit-bank) und ändert nichts an der OrgUnit-Blindheit der Bank: das Hauptbuch und die Bankrechte bleiben unberührt.

  • Nur Kontostand: Offiziere/Leads sehen ausschließlich den Kontostand des von ihnen beaufsichtigten Kontos — keine Buchungshistorie, keine Halterverteilung, kein Audit.
  • Anträge stellen: Sie können Ein- oder Auszahlungsanträge stellen. Ein Antrag bewegt zunächst kein Geld — er ist PENDING und außerhalb des Hauptbuchs. Erst wenn ein Bankmitarbeiter ihn bestätigt, wird real gebucht; dabei werden der Halter erfasst und die Überziehungs-/Halterprüfung erneut durchgeführt. Lehnt das Bankpersonal ab, bewegt sich nichts. Ein Antragsteller sieht nur seine eigenen Anträge und kann einen eigenen PENDING-Antrag zurückziehen. Gegen ein geschlossenes Konto kann kein Antrag gestellt werden.

Aufsichtsumfang (kaskadierend, vgl. Organisation):

  • Ein Offizier beaufsichtigt seine eigene Staffel, ein SK-Lead sein Spezialkommando — jeweils das eigene ORG_UNIT-Konto.
  • Eine Bereichsleitung sieht zusätzlich kaskadierend die Konten der untergeordneten Staffeln/SKs (nur lesend); Anträge darf sie nur auf ihrem eigenen AREA-Konto stellen.
  • Die Organisationsleitung (OL) sieht kaskadierend CARTEL + alle AREA- und ORG_UNIT-Konten; Anträge nur auf dem CARTEL-Konto.

Untergeordnete Konten, die per Drill-down erreichbar sind, bleiben nur Lesesicht — Anträge gehen ausschließlich auf das Konto der eigenen Ebene. Bankmitarbeiter und Bankleitung erreichen diese Offiziers-Oberfläche nur, soweit der Aufsichtsscope sie selbst abdeckt; ein einfaches Mitglied sieht hier nichts.

Beim Anlegen eines Antrags werden die Bankleitung und die für das Konto berechtigten Bankmitarbeiter per Benachrichtigung informiert.

Optimistic Locking

Schreibvorgänge tragen eine Version. Bearbeitet jemand parallel denselben Datensatz, erscheint ein 409-Konflikt-Hinweis („bitte neu laden"). Lade die Seite dann neu und wiederhole die Aktion.

Siehe auch

Clone this wiki locally