/**
 * Hartnäckige Fragen – die, die immer wieder danebengehen.
 *
 * **Der Anlass.** Die vollständige Fehlerhistorie liegt seit jeher in
 * `antwort_log`, aber keine einzige Abfrage wertete sie je Frage aus:
 * `letzteAntwortKarte` liest nur die **letzte** Antwort, und der Filter „Nur
 * Fehler“ hängt genau daran. Eine Frage, die über Wochen viermal durchfiel und
 * gestern zufällig saß, verschwand damit aus jeder Liste — obwohl sie das
 * Gegenteil von gekonnt ist.
 *
 * Bei 575 Fragen entscheiden erfahrungsgemäß zehn bis dreißig solcher Fragen
 * über die letzten Prozentpunkte. Die eigene Messnotiz zur
 * Ratewahrscheinlichkeit belegt das Problem von der anderen Seite: Der dort
 * nachgestellte Rater bekam eine Frage an 53 von 61 Tagen vorgelegt — „die
 * Frage entkommt nicht“. FSRS wiederholt stur; benannt hat den Knoten
 * niemand.
 *
 * **Was das hier nicht ist.** Keine Kennzahl und keine Prognose, sondern eine
 * Auszählung: So oft ging diese Frage daneben, an so vielen verschiedenen
 * Tagen. Beides steht im Protokoll und wird nur addiert.
 *
 * **Warum verschiedene Tage zählen und nicht bloß Fehlschläge.** Eine Frage,
 * die in einer Sitzung dreimal danebenging, ist nicht hartnäckig, sondern
 * gerade neu: Die Wiedereinreihung legt sie in derselben Sitzung noch zweimal
 * vor (`useSitzung`, `MAX_WIEDEREINREIHUNGEN`). Erst wenn sie an mehreren
 * **Tagen** durchfällt, hat sie sich dem Behalten wirklich entzogen.
 */

/** Ab so vielen Tagen mit Fehlantwort gilt eine Frage als hartnäckig. */
export const HARTNAECKIG_AB_TAGEN = 3;

/** Eine hartnäckige Frage mit ihrer Bilanz. */
export interface HartnaeckigeFrage {
  readonly frageId: string;
  /** Wie oft die Frage insgesamt danebenging. */
  readonly fehlschlaege: number;
  /** An wie vielen verschiedenen Tagen sie danebenging. */
  readonly tage: number;
  /** Zeitpunkt des letzten Fehlschlags, ISO. */
  readonly zuletzt: string;
  /**
   * Die am häufigsten gewählte falsche Antwort, falls es eine gibt.
   *
   * Aus der Spalte `antwort_log.auswahl`, die bis 0.22.0 zwar geschrieben,
   * aber von keiner Abfrage gelesen wurde. Sie unterscheidet zwei didaktisch
   * verschiedene Fälle: Wer immer wieder **denselben** falschen Buchstaben
   * wählt, verwechselt zwei Dinge; wer streut, weiß es schlicht nicht. Das
   * eine ist mit einem Merksatz zu heilen, das andere nicht.
   */
  readonly haeufigsteFehlwahl?: string;
}

/** „4-mal an 3 Tagen danebengegangen“ – der Satz zur Bilanz. */
export function hartnaeckigText(frage: HartnaeckigeFrage): string {
  const fehl = frage.fehlschlaege === 1 ? 'einmal' : `${String(frage.fehlschlaege)}-mal`;
  const tage = frage.tage === 1 ? 'an einem Tag' : `an ${String(frage.tage)} Tagen`;
  return `${fehl} ${tage} danebengegangen`;
}
