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:
@@ -302,6 +302,67 @@ melde("=== 5. Auflegen ===");
|
||||
telefoniert?". Drei Minuten sind ein Gespraech, zwoelf Sekunden
|
||||
sind ein Verwaehlen.
|
||||
======================================================================= */
|
||||
/* =======================================================================
|
||||
5g. WENN DER ANRUFER AUFLEGT, BEVOR JEMAND RANGEHT
|
||||
|
||||
Filipe, 00:30 Uhr: „hab angerufen aufgelegt und da steht immer noch
|
||||
nichts im chat vom anruf...."
|
||||
|
||||
Vier Anrufe im Protokoll, je drei bis zehn Sekunden, kein einziger
|
||||
Eintrag im Gespraech. Und mein Denkfehler dahinter:
|
||||
|
||||
„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 genau den Weg
|
||||
geprueft, den niemand geht: warten, bis es von allein aufhoert.
|
||||
Im Alltag legt man auf.
|
||||
|
||||
Dazu kam eine zweite Falle: `verpasstVermerken` nahm den Anrufer
|
||||
aus der Runde der Anwesenden. 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. Zwei Fehler, die einander verdeckt haben.
|
||||
======================================================================= */
|
||||
melde("");
|
||||
melde("=== 5g. Anrufer legt auf, bevor jemand rangeht ===");
|
||||
{
|
||||
const raum = json(await roh("/workspace/api/chat/raeume", HAUS,
|
||||
{ cookie: kDogi })).raeume?.[0];
|
||||
if (!raum) {
|
||||
unklar("kein Gespraech vorhanden -- nicht nachgesehen");
|
||||
} else {
|
||||
const vorher = (json(await roh(`/workspace/api/chat/raeume/${raum.id}/nachrichten`, HAUS,
|
||||
{ cookie: kDogi })).nachrichten || []).length;
|
||||
|
||||
await roh(`/workspace/api/anruf/${raum.id}/start`, HAUS, { cookie: kDogi }, { video: false });
|
||||
/* Kurz warten wie im echten Leben -- und auflegen, ohne dass
|
||||
jemand rangegangen ist. */
|
||||
await new Promise((r) => setTimeout(r, 800));
|
||||
const ende = await roh(`/workspace/api/anruf/${raum.id}/ende`, HAUS, { cookie: kDogi }, {});
|
||||
ok(ende.code === 200, `aufgelegt (${ende.code})`);
|
||||
|
||||
const nachher = json(await roh(`/workspace/api/chat/raeume/${raum.id}/nachrichten`, HAUS,
|
||||
{ cookie: kDogi })).nachrichten || [];
|
||||
ok(nachher.length === vorher + 1,
|
||||
`es steht trotzdem eine Zeile im Gespraech (${vorher} -> ${nachher.length})`);
|
||||
|
||||
const letzte = nachher[nachher.length - 1];
|
||||
ok(/[Vv]erpasst/.test(letzte?.text || ""),
|
||||
`und sie sagt „verpasst" („${letzte?.text}")`);
|
||||
ok(letzte?.von_id !== undefined && letzte?.von,
|
||||
`mit dem Anrufer daran (${letzte?.von})`);
|
||||
|
||||
/* UND NICHT ZWEIMAL: `aufraeumen()` darf nicht spaeter noch eine
|
||||
zweite Zeile schreiben -- der Anruf ist ja schon geloescht. */
|
||||
await new Promise((r) => setTimeout(r, 300));
|
||||
await roh("/workspace/api/anruf/offen", CREW, { cookie: kHand });
|
||||
const nochmal = (json(await roh(`/workspace/api/chat/raeume/${raum.id}/nachrichten`, HAUS,
|
||||
{ cookie: kDogi })).nachrichten || []).length;
|
||||
ok(nochmal === nachher.length,
|
||||
`und bleibt bei einer (${nochmal})`);
|
||||
}
|
||||
}
|
||||
|
||||
melde("");
|
||||
melde("=== 5f. Ein gefuehrter Anruf ===");
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user