Inline-Nachfüll-Dialog nach Abweichung in der Kontrolle (Karte 07)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L85hmKbvX7Cqkq47KnQhFt
This commit is contained in:
@@ -31,6 +31,18 @@ function keyFor(kontrolleId: string, materialId: number): string {
|
||||
return `${kontrolleId}:${materialId}`;
|
||||
}
|
||||
|
||||
// Karte 07 (Sofort-Nachfüllung): die PWA soll direkt nach einer Abweichung
|
||||
// fragen können "jetzt nachfüllen?", ohne ins Dashboard zu wechseln. Der
|
||||
// Queue-Eintrag verschwindet bei Erfolg (siehe sendeEintrag), daher hier ein
|
||||
// einmaliger Callback pro Key statt dauerhaftem State - reicht für den
|
||||
// unmittelbaren Dialog in derselben Sitzung.
|
||||
type ErgebnisListener = (fehlbestandId: string | null, abweichung: boolean) => void;
|
||||
const ergebnisListener = new Map<string, ErgebnisListener>();
|
||||
|
||||
export function aufErgebnisWarten(kontrolleId: string, materialId: number, listener: ErgebnisListener): void {
|
||||
ergebnisListener.set(keyFor(kontrolleId, materialId), listener);
|
||||
}
|
||||
|
||||
export async function enqueue(
|
||||
kontrolleId: string,
|
||||
materialId: number,
|
||||
@@ -88,7 +100,11 @@ async function sendeEintrag(item: QueueItem): Promise<void> {
|
||||
// Erfolgreich übertragen (idempotent - ein erneutes Senden desselben Werts
|
||||
// durch die Queue vor einem Absturz führt zu keinem doppelten Fehlbestand,
|
||||
// siehe Backend app/services/kontrolle.py erfasse_position) -> aus Queue entfernen.
|
||||
void ergebnis;
|
||||
const listener = ergebnisListener.get(item.key);
|
||||
if (listener) {
|
||||
listener(ergebnis.fehlbestand_id, ergebnis.abweichung);
|
||||
ergebnisListener.delete(item.key);
|
||||
}
|
||||
await del(item.key, store);
|
||||
} catch (error) {
|
||||
if (error instanceof ApiError && error.status >= 400 && error.status < 500) {
|
||||
|
||||
Reference in New Issue
Block a user