Analysepipeline: Reset auf "pending" beim Refresh-Start

Beim ersten Schritt (sources_review) eines neuen Refreshs werden alle
nachfolgenden Schritte sichtbar auf "pending" (grau) zurückgesetzt.
Vorher hingen sie weiterhin als "done" vom letzten Refresh in grün
herum, während die Pipeline schon einen neuen Durchlauf zeigte.

- Bedingung in pipeline.js entschärft: nicht mehr nur bei
  pass_number > 1 (Multi-Pass), sondern bei jedem ersten Schritt-Active
- Bei Reset wird das ganze Stage neu gezeichnet (nicht nur der einzelne
  Block), damit die zurückgesetzten Schritte tatsächlich grau erscheinen
- Greift sowohl bei normalem Refresh als auch bei Multi-Pass-Wechsel
  einer Research-Lage

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
2026-05-01 22:06:06 +02:00
Ursprung 62c0be64ee
Commit 26fac0e824
2 geänderte Dateien mit 16 neuen und 7 gelöschten Zeilen

Datei anzeigen

@@ -646,7 +646,7 @@
<script src="/static/js/ws.js?v=20260316b"></script> <script src="/static/js/ws.js?v=20260316b"></script>
<script src="/static/js/components.js?v=20260427a"></script> <script src="/static/js/components.js?v=20260427a"></script>
<script src="/static/js/layout.js?v=20260316b"></script> <script src="/static/js/layout.js?v=20260316b"></script>
<script src="/static/js/pipeline.js?v=20260501a"></script> <script src="/static/js/pipeline.js?v=20260501i"></script>
<script src="/static/js/app.js?v=20260501h"></script> <script src="/static/js/app.js?v=20260501h"></script>
<script src="/static/js/cluster-data.js?v=20260322f"></script> <script src="/static/js/cluster-data.js?v=20260322f"></script>
<script src="/static/js/tutorial.js?v=20260316z"></script> <script src="/static/js/tutorial.js?v=20260316z"></script>

Datei anzeigen

@@ -141,20 +141,29 @@ const Pipeline = {
} }
} }
// Wenn ein neuer Pass startet (pass_number > prev und status="active" beim ERSTEN step): // Wenn der ERSTE Schritt (sources_review) auf "active" geht, beginnt ein neuer
// alle Schritte zurück auf pending setzen, damit die Animation neu durchläuft. // Refresh oder ein neuer Multi-Pass-Durchlauf — alle nachfolgenden Schritte auf
// "pending" (grau) zuruecksetzen, damit der User sieht: das ist neu und
// noch nicht durchlaufen. Sonst stehen sie als "done" vom letzten Mal da.
let didReset = false;
if (d.status === 'active' && this._definition && this._definition.length if (d.status === 'active' && this._definition && this._definition.length
&& key === this._definition[0].key && passNr > 1 && (!prev || prev.pass_number < passNr)) { && key === this._definition[0].key) {
// Alle anderen Steps in "pending" zurueck (visuell), Werte behalten wir
this._definition.forEach(s => { this._definition.forEach(s => {
if (s.key !== key && this._stateByKey[s.key]) { if (s.key !== key && this._stateByKey[s.key]) {
this._stateByKey[s.key].status = 'pending'; this._stateByKey[s.key].status = 'pending';
didReset = true;
} }
}); });
} }
if (didReset) {
// Beim Reset alle Bloecke neu zeichnen, nicht nur den aktuellen
this._render();
this._renderMini();
} else {
this._patchBlock(key); this._patchBlock(key);
this._patchMiniBlock(key); this._patchMiniBlock(key);
}
}, },
_onRefreshDone(msg) { _onRefreshDone(msg) {