Anruf: wer auflegt, hinterlaesst jetzt auch eine Spur
Filipe, 00:30 Uhr: „hab angerufen aufgelegt und da steht immer noch nichts im chat vom anruf...." Im Protokoll: vier Anrufe, je drei bis zehn Sekunden, kein einziger Eintrag im Gespraech. Und mein Denkfehler dahinter war einfach: „Verpasster Anruf" stand NUR in `aufraeumen()` -- also erst, wenn ein Anruf nach zwei Minuten von selbst verfaellt. Wer vorher auflegt, loeschte ihn spurlos. Abschnitt 5e hat damit genau den Weg geprueft, den niemand geht: warten, bis es von allein aufhoert. Im Alltag legt man auf. Fuer die andere Seite ist ein Anrufer, der aufgibt, ERST RECHT ein verpasster Anruf. UND EINE ZWEITE FALLE, die die erste verdeckt hat: `verpasstVermerken` nahm den Anrufer aus der Runde der Anwesenden (`a.wer`). Beim Verfallen steht er noch darin -- beim AUFLEGEN ist sie leer. Die Zeile waere also auch dann ausgefallen, wenn der Aufruf an der richtigen Stelle gestanden haette. Jetzt kommt er aus `a.anrufer`, wie beim gefuehrten Anruf auch. Zwei Fehler, die einander gedeckt haben, und beide hat dieselbe Pruefluecke durchgelassen: Ich hatte den Ablauf geprueft, den ich gebaut hatte, nicht den, den ein Mensch geht. Geprueft: pruef-anruf 106 -> 111. Der neue Abschnitt ruft an, wartet kurz, legt auf -- und misst, dass genau EINE Zeile entsteht, dass sie „verpasst" sagt, dass der Anrufer daran steht und dass spaeteres Aufraeumen keine zweite schreibt. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -210,9 +210,16 @@ function anrufVermerken(raumId, a) {
|
||||
* richtigen Stelle im Verlauf, wird mitgezaehlt wie jede andere und
|
||||
* braucht keine Sonderbehandlung in der Oberflaeche. */
|
||||
function verpasstVermerken(raumId, a) {
|
||||
const anrufer = [...a.wer.entries()][0];
|
||||
if (!anrufer) return;
|
||||
const [id, wer] = anrufer;
|
||||
/* AUS `a.anrufer`, NICHT AUS `a.wer`.
|
||||
|
||||
`wer` ist die Runde der gerade Anwesenden. Beim Verfallen steht
|
||||
der Anrufer noch darin -- beim AUFLEGEN ist sie leer, und die
|
||||
Zeile waere still ausgefallen. Genau dieser Unterschied hat den
|
||||
Fehler vom 19.09. so schwer sichtbar gemacht: In der Pruefung
|
||||
(Anruf verfaellt) ging es, im Alltag (Anrufer legt auf) nicht. */
|
||||
const wer = a.anrufer;
|
||||
if (!wer) return;
|
||||
const id = wer.id;
|
||||
const d = db();
|
||||
const n = new Date().toISOString();
|
||||
const text = a.video ? "📞 Verpasster Videoanruf" : "📞 Verpasster Anruf";
|
||||
@@ -471,14 +478,31 @@ anrufRouter.post("/workspace/api/anruf/:raum/ende", gleicheHerkunft, (req, res)
|
||||
const dauer = war ? Math.round((Date.now() - war.seit) / 1000) : 0;
|
||||
if (!a.wer.size) {
|
||||
laufend.delete(raumId);
|
||||
/* DER LETZTE GEHT -- also ist das Gespraech vorbei. Jetzt
|
||||
gehoert eine Zeile in den Chat, wie bei jedem Telefon.
|
||||
/* DER LETZTE GEHT -- also ist es vorbei. Jetzt gehoert eine
|
||||
Zeile in den Chat, wie bei jedem Telefon.
|
||||
|
||||
ZWEI FAELLE, UND DER ZWEITE HAT GEFEHLT (19.09.2026):
|
||||
|
||||
warGespraech jemand ist rangegangen -> „Anruf · 0:42"
|
||||
sonst niemand ist rangegangen -> „Verpasster Anruf"
|
||||
|
||||
Der zweite Fall stand vorher NUR in `aufraeumen()` -- also
|
||||
erst, wenn ein Anruf nach zwei Minuten von selbst verfaellt.
|
||||
Wer vorher auflegt, loeschte ihn damit spurlos.
|
||||
|
||||
Genau das hat Filipe gemeldet: viermal angerufen, nach drei
|
||||
bis zehn Sekunden aufgelegt, „da steht immer noch nichts im
|
||||
chat vom anruf". Vier verpasste Anrufe, von denen keiner
|
||||
irgendwo stand -- und fuer die andere Seite ist ein Anrufer,
|
||||
der aufgibt, ERST RECHT ein verpasster Anruf.
|
||||
|
||||
Eigenes try: Ein Fehler beim Schreiben darf das Auflegen
|
||||
nicht scheitern lassen. */
|
||||
if (warGespraech) {
|
||||
try { anrufVermerken(raumId, a); } catch (fe) {
|
||||
console.error("[anruf] vermerken:", fe?.message);
|
||||
}
|
||||
try {
|
||||
if (warGespraech) anrufVermerken(raumId, a);
|
||||
else verpasstVermerken(raumId, a);
|
||||
} catch (fe) {
|
||||
console.error("[anruf] vermerken:", fe?.message);
|
||||
}
|
||||
}
|
||||
chatEreignis(raumId, {
|
||||
|
||||
Reference in New Issue
Block a user