export type GuideSectionId =
  | 'roles'
  | 'handover'
  | 'members'
  | 'bookings'
  | 'reversals'
  | 'penalties'
  | 'sharing'
  | 'next-handover'
  | 'faq';

export interface GuideSection {
  id: GuideSectionId;
  title: string;
  intro: string;
  points: readonly string[];
  note?: string;
}

export const HANDOVER_CHECKLIST = [
  'Prüfe, ob dein Benutzerkonto mit dem richtigen Mitglied und der richtigen Teamrolle verknüpft ist.',
  'Vergleiche Teamkasse und offene Mitgliedersalden mit den Unterlagen der bisherigen Verantwortung.',
  'Kontrolliere aktive und inaktive Mitglieder sowie die vergebenen Verantwortungsrollen.',
  'Lies bestehende Buchungen und Stornierungen, bevor du eine neue Buchung erfasst.',
  'Prüfe Strafenkatalog, offene Einladungen und die öffentliche Freigabe des Teams.',
  'Vereinbare, ab welchem Datum du neue Vorgänge in TeamWallet pflegst.',
] as const;

export const ROLE_GUIDE = [
  {
    role: '2. Kassenwart',
    description: 'Kann Buchungen erfassen und nachvollziehen; organisatorische Verwaltung bleibt der Teamleitung vorbehalten.',
  },
  {
    role: 'Kapitän',
    description: 'Kann Kasse, Mitglieder, Strafenkatalog, Einladungen und Freigaben verwalten.',
  },
  {
    role: 'Kassenwart',
    description: 'Trägt die zentrale Verantwortung für Kassenstand, Buchungen, Salden und Übergabe.',
  },
  {
    role: 'Trainer',
    description: 'Kann die organisatorischen Verwaltungsfunktionen einschließlich Kasse und Mitglieder nutzen.',
  },
] as const;

export const GUIDE_SECTIONS: readonly GuideSection[] = [
  {
    id: 'roles',
    title: 'Deine Rolle und Berechtigungen',
    intro: 'TeamWallet zeigt Aktionen passend zu deiner Rolle. Eine ausgeblendete Aktion ist deshalb meist kein Fehler.',
    points: [
      'Deine Teamrolle gehört zur Mitgliedschaft im aktuell ausgewählten Team.',
      'Bei mehreren Teams können Rolle und Berechtigungen je Team unterschiedlich sein.',
      'Mindestens ein aktiver Kassenwart muss im Team erhalten bleiben.',
    ],
  },
  {
    id: 'handover',
    title: 'Amtsübergabe prüfen',
    intro: 'Beginne nicht mit einer Korrekturbuchung, bevor du den übergebenen Stand gemeinsam geprüft hast.',
    points: [
      'Vergleiche den angezeigten Kassenstand mit Bargeld, Bankkonto oder der bisherigen Kassenliste.',
      'Offene Beiträge sind die Summe der Salden aktiver Mitglieder und nicht automatisch Bargeld in der Kasse.',
      'Dokumentiere Abweichungen außerhalb der App und kläre zuerst ihren Ursprung.',
    ],
    note: 'Nutze keine künstliche Testbuchung. Eine echte fehlerhafte Buchung wird über eine Stornierung nachvollziehbar korrigiert.',
  },
  {
    id: 'members',
    title: 'Mitglieder und Rollen verwalten',
    intro: 'Mitglied, Benutzerkonto und Teamrolle sind getrennte Dinge: Eine Person wird zuerst als Mitglied geführt und kann danach eingeladen werden.',
    points: [
      'Lege ein Mitglied nur einmal an und wähle die Rolle passend zur tatsächlichen Verantwortung.',
      'Deaktiviere ausgetretene Mitglieder, statt ihre Historie zu löschen.',
      'Prüfe vor einem Rollenwechsel, dass ein aktiver Kassenwart im Team verbleibt.',
    ],
  },
  {
    id: 'bookings',
    title: 'Buchungen sicher erfassen',
    intro: 'Mitgliederbuchungen verändern persönliche Salden; Teambuchungen erfassen direkte Einnahmen oder Ausgaben der Teamkasse.',
    points: [
      'Wähle zuerst die richtige Buchungsart und prüfe Betrag, Datum, Personen und Notiz vor dem Speichern.',
      'Bei mehreren Mitgliedern entscheidet „Betrag gleichmäßig verteilen“, ob der Gesamtbetrag geteilt oder je Person gebucht wird.',
      'Nutze eine eindeutige Notiz, damit ein Vorgang auch Monate später verständlich bleibt.',
      'Ein Strafenkatalogeintrag kann Betrag, Art und Notiz einer Mitgliederbuchung vorbereiten.',
    ],
  },
  {
    id: 'reversals',
    title: 'Fehler nachvollziehen und stornieren',
    intro: 'Eine Stornierung bewahrt die Originalbuchung und erzeugt eine nachvollziehbare Gegenbewegung.',
    points: [
      'Kontrolliere im Journal zuerst Person, Betrag, Datum und Buchungsart.',
      'Storniere die falsche Mitgliederbuchung und erfasse anschließend den korrekten Vorgang neu.',
      'Vermeide ausgleichende Fantasiebuchungen, weil dadurch der Prüfpfad unklar wird.',
    ],
  },
  {
    id: 'penalties',
    title: 'Strafenkatalog verwenden',
    intro: 'Der Strafenkatalog enthält wiederkehrende Regeln und Beträge, aber noch keine Forderung gegen ein bestimmtes Mitglied.',
    points: [
      'Formuliere Einträge kurz und eindeutig und vermeide doppelte Regeln.',
      'Änderungen am Katalog verändern bereits gebuchte Strafen nicht rückwirkend.',
      'Übernimm einen Eintrag in der Kasse und wähle dort erst die betroffenen Mitglieder.',
    ],
  },
  {
    id: 'sharing',
    title: 'Einladen und Team teilen',
    intro: 'Einladungen und öffentliche Freigabe erfüllen unterschiedliche Zwecke.',
    points: [
      'Eine Einladung verknüpft ein persönliches Benutzerkonto mit einem bereits angelegten Mitglied.',
      'Die öffentliche Freigabe zeigt Teamstand, Salden, Strafenkatalog und Buchungsverläufe ohne Anmeldung.',
      'Aktiviere öffentliche Freigaben nur nach Abstimmung im Team und erneuere den Link, wenn er unerwünscht weitergegeben wurde.',
    ],
  },
  {
    id: 'next-handover',
    title: 'Verantwortung weitergeben',
    intro: 'Eine gute Übergabe sorgt dafür, dass Kassenstand und Zuständigkeit zu einem eindeutigen Datum nachvollziehbar sind.',
    points: [
      'Stimme Kassenstand und offene Salden gemeinsam ab.',
      'Übertrage die Teamrolle und prüfe den Zugang der neuen verantwortlichen Person.',
      'Erkläre besondere offene Vorgänge, Freigaben und vereinbarte Buchungstexte.',
      'Entferne deine eigene Rolle erst, wenn mindestens ein aktiver Kassenwart verbleibt.',
    ],
  },
  {
    id: 'faq',
    title: 'Häufige Fragen',
    intro: 'Diese Antworten helfen bei typischen Unsicherheiten im laufenden Betrieb.',
    points: [
      'Falsche Person oder falscher Betrag: Original stornieren und korrekt neu buchen.',
      'Kassenstand weicht ab: Journal und externe Unterlagen ab dem letzten bestätigten Stand vergleichen.',
      'Aktion fehlt: ausgewähltes Team, aktive Mitgliedschaft und Teamrolle prüfen.',
      'Einladung passt nicht: prüfen, ob das richtige Mitglied im richtigen Team ausgewählt wurde.',
      'Hilfetexte stören: im Profil deaktivieren; diese vollständige Anleitung bleibt erreichbar.',
    ],
  },
] as const;
