refactor(studio): ein Startpunkt statt sechs, Schritte werden zur Anzeige
Die Bausteinspalte mischte vier Dinge in einem Kartenlayout. Ergebnisse zum Anschauen, Erzeuger zum Starten, ein Artefakt ohne Erzeuger und reine Aktionen. In jeder Karte lagen Öffnen und Neurechnen wenige Pixel auseinander, beide mit demselben Kreispfeil-Symbol. Dazu kamen sechs Stellen, an denen ein Lauf beginnen konnte, verteilt über zwei Spalten. Jetzt drei getrennte Bereiche. Oben wird gearbeitet, in der Mitte werden Ergebnisse angesehen, unten stehen die Fall-Aktionen. Gearbeitet wird über genau einen Knopf, dessen Beschriftung sich am Zustand ausrichtet. Beim leeren Fall Lauf starten, bei einer Recherche Recherche starten, bei veralteten Ergebnissen Jetzt aktualisieren, sonst Erneut durchlaufen, während eines abbrechbaren Laufs Abbrechen. Darüber steht, was gerade zu tun ist, etwa die Zahl der neuen Artikel seit dem letzten Bericht. Darunter die vier Schritte als Kette mit Zustand. Sie starten nichts, Aufklappen erklärt nur, was ein Schritt tut. Damit fällt auch eine Kostenfalle weg. Ein einzeln gestartetes Sammeln buchte denselben Satz wie der komplette Lauf, wer danach Lagebild und Faktencheck einzeln nachzog, zahlte 69 statt 45 Credits, ohne dass die Oberfläche darauf hinwies. Benannt wird ab jetzt das Ergebnis statt des Erzeugers. Artikel holen, Lagebild schreiben, Fakten prüfen, Orte erkennen. Bei Recherche-Lagen heißt der zweite Schritt Recherchebericht schreiben. Die Wörter Baustein, Geoparsing und Analyse verschwinden aus der Oberfläche. Weiter entfernt sind die Karte Netzwerkanalyse, solange es den Baustein im Server nicht gibt, der Sammeln-Knopf aus der Quellenspalte und die Wahl Nur Quellen sammeln im Startdialog. Der Server behält seine Schnittstelle für einzelne Bausteine. Die Anzeige eines so gestarteten Laufs bleibt erhalten, er kann aus der klassischen Ansicht kommen. Ein solcher Lauf wird beim Abbruch auch als der Schritt abgebrochen, der wirklich läuft, nicht pauschal als kompletter Lauf. 51 tote CSS-Regeln entfernt. Prüfungen ohne Browser, 59 neue Fälle für die Lauf-Anzeige plus 12 in der Strukturprüfung, die festhalten, dass es im ganzen Dokument genau ein Element gibt, das einen Lauf starten kann. Die Anzeige der Credits am Knopf kommt später, sie ist bewusst nicht Teil dieser Änderung. Cache-Buster auf 20260802c. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -39,6 +39,8 @@ studio_js = lies("js", "studio.js")
|
||||
dash_html = lies("dashboard.html")
|
||||
app_js = lies("js", "app.js")
|
||||
comp_js = lies("js", "components.js")
|
||||
style = lies("css", "style.css")
|
||||
studio_css = lies("css", "studio.css")
|
||||
|
||||
|
||||
def ids(html):
|
||||
@@ -106,8 +108,31 @@ for name, html in [("studio.html", studio_html), ("dashboard.html", dash_html)]:
|
||||
# Geprueft wird nur, dass die in diesem Zug geaenderten Dateien mitgezogen sind.
|
||||
eigene = re.findall(r"/static/(?:js|css)/(studio|app|style|components|studio)\.(?:js|css)\?v=([0-9a-z]+)", html)
|
||||
pruefe(f"E {name} nennt Stempel", bool(stempel), stempel)
|
||||
pruefe(f"E {name} geaenderte Dateien tragen 20260802b",
|
||||
all(v == "20260802b" for _, v in eigene), eigene)
|
||||
# Kein fester Wert. Geprueft wird, dass die in einem Zug geaenderten
|
||||
# Dateien denselben Stempel tragen, sonst muesste der Test bei jedem
|
||||
# Deploy mitgepflegt werden.
|
||||
stempel_eigen = {v for _, v in eigene}
|
||||
pruefe(f"E {name} alle eigenen Dateien tragen denselben Stempel",
|
||||
len(stempel_eigen) == 1, sorted(stempel_eigen))
|
||||
|
||||
print("\nE2) Die Bausteinspalte hat genau einen Startpunkt")
|
||||
_i = studio_html.index('id="studio-menu"')
|
||||
menue = studio_html[_i:studio_html.index("</section>", _i)]
|
||||
starts = re.findall(r'data-stage="([a-z]+)"', menue)
|
||||
pruefe("E2a genau ein Element startet einen Lauf", len(starts) == 1, starts)
|
||||
pruefe("E2b und zwar der komplette Lauf", starts == ["full"], starts)
|
||||
pruefe("E2c auch im ganzen Dokument nur dieses eine",
|
||||
len(re.findall(r"data-stage=", studio_html)) == 1,
|
||||
len(re.findall(r"data-stage=", studio_html)))
|
||||
pruefe("E2d die Ansichten starten nichts", "Studio.runStage" not in studio_html)
|
||||
for tot in ["art-card", "art-run", "art-note", "run-all", "collect-btn", "art-foot"]:
|
||||
pruefe(f"E2 {tot} ist restlos weg",
|
||||
tot not in studio_html and tot not in studio_js and tot not in studio_css)
|
||||
pruefe("E2e die Schritte tragen Ergebnisnamen",
|
||||
"Artikel holen" in studio_js and "Orte erkennen" in studio_js
|
||||
and "Fakten prüfen" in studio_js)
|
||||
pruefe("E2f Geoparsing steht nicht mehr in der Oberflaeche",
|
||||
"Geoparsing" not in studio_html)
|
||||
|
||||
print("\nF) Tags im neuen Panel sind ausgeglichen")
|
||||
i = studio_html.index('<div class="tab-panel" data-art="settings">')
|
||||
@@ -119,8 +144,6 @@ for tag in ["div", "select", "label", "textarea"]:
|
||||
pruefe(f"F {tag} ausgeglichen ({auf})", auf == zu, (auf, zu))
|
||||
|
||||
print("\nG) Das Kennzeichen nutzt vorhandene Stile")
|
||||
style = lies("css", "style.css")
|
||||
studio_css = lies("css", "studio.css")
|
||||
pruefe("G1 incident-ai-badge ist definiert", ".incident-ai-badge" in style)
|
||||
pruefe("G2 case-ai-tag ist definiert", ".case-ai-tag" in studio_css)
|
||||
pruefe("G3 studio.html bindet style.css ein", "/static/css/style.css" in studio_html)
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren