Zum Hauptinhalt springen

Test-Übersicht (Taktano) — alle automatischen Prüfungen

Kernaussage: Dies ist die lebende, vollständige Liste aller automatischen Tests, Selbsttests und CI-Gates des Repos — was sie prüfen, wie man sie lokal ausführt und in welchem CI-Job sie laufen. Verbindliche Regel (OP-DOCS-9 / CLAUDE.md §Tests & CI): Jede neue oder entfernte automatische Prüfung wird hier mitgeführt — je PR gegenprüfen (wie CHANGELOG/HANDOFF/Timesheet). Ein mechanischer Warn-Check (scripts/check-doc-consistency.sh) flaggt test:*-Scripts, die hier fehlen.

Zielgruppen: IT-Dev/Architektur · IT-Ops · DevOps (CI/CD). Prinzip: Tests laufen on-demand lokal und in CI (.github/workflows/ci.yml, Node 22 / Python 3.12). Neue Tests beiden Wegen hinzufügen (Script + CI-Job) und hier eintragen.

Die meisten Server-/Client-Tests sind reine, netzfreie Selbsttests (tsx …-demo.ts mit assert-Prüfungen); sie brauchen keine laufende Umgebung. „Smoke" = führt einen echten Ablauf einmal durch (kein Assert-Gate, aber Durchlauf-Nachweis).


1. Server-Selbsttests (server/, npm run test:*)

Reine Kern-Tests mit assert. CI-Job Server (typecheck + scheduler-spike), sofern nicht anders vermerkt.

BefehlPrüftOP / §-Bezug
npm run test:teilplanSchritt-granulare Reservierung§6
npm run test:do-migrationsDO-Blob-Migrations-Registry: Voll-Migration + Idempotenz + Versions-GatingOP-DATA-1 / D5-2
npm run test:archivGenerisches Archiv-Flag — nurAktive blendet archivierte aus, referenzstabilOP-CRUD-1 C1
npm run test:preisAuftragspreis = Summe der Leistungs-GrundpreiseOP-R7-6
npm run test:running-processArchivierung stört laufende Prozesse nicht (Solver läuft, kein Schritt verloren)OP-CRUD-1 C4 / E-CRUD-3
npm run test:nacharbeitQS-Nacharbeit fließt als Zusatzschritt durch Scheduler+Mapping, verschiebt FertigstellungOP-UX-3
npm run test:qs-nacharbeitQS-Nacharbeit direkt/zuweisbar — Stufen-Schwellwerte, Auto-Erledigen-Härtung, Abnahme-GateOP-QS-4
npm run test:abnahmeQS-Vollständigkeits-Gate vor Abholung (alle Schritte erledigt+dokumentiert, kein Mangel unbehoben — offen/in Nacharbeit blocken, OP-QS-1)OP-QS-GATE
npm run test:step-gateSequenz-Backstop (istAktuellerSchritt/istOffenerSchritt): nur der Schritt am Front der offenen Reihenfolge ist abschließbar (laufende immer aktuell, echte Parallel-Schritte teilen die früheste Startzeit), out-of-order-Abschluss serverseitig abgelehnt (Defense-in-Depth zum Client-Gating)OP-STEP-1
npm run test:fairnessOP-OPT-7-Fairness aus Abwesenheits-HistorieOP-AUDIT-1 Slice 1 / OP-OPT-7
npm run test:vorschlagVorschlags-IDs / Lifecycle§7
npm run test:preemptionPreemption-Rang + Unterbrechbarkeit§6
npm run test:notfallNotfall/Schaden-Alert — Hard-Stop laufender Schritte + erzwungene Eskalation + Fahrzeug-Sperre; regulärer Klärfall sperrt nicht; keine Herabstufung; Notfall-Beweisfoto-Pflicht (Freigabe erst mit ≥1 Foto); Lösen hebt die Sperre aufOP-ALERT-1
npm run test:mangel-statusMangel-Status-Workflow offen→in_nacharbeit→behoben (markieren idempotent + kein Rückschritt; behoben bei Schritt-Abschluss; Abnahme-Gate blockt bis behoben)OP-QS-1
npm run test:beweisfotoBeweisfotos am Mangel (M05) — Schritt-Fotos projiziert/isoliert + mangel-eigene Fotos; Pflicht-Foto: schwerer/kritischer Mangel braucht ≥1 Beweisfoto (auch nach Behebung), erfüllbar über Schritt-Foto ODER mangel-eigenes Foto → Abnahme-Gate blockt sonst; leicht/mittel ohne ZwangOP-QS-1
npm run test:konflikteWeitere Konflikt-Typen: Überbuchung (Slot-Kapazität) · Skill-Lücke (Engpass ≤1 Träger) · Standzeit-Verletzung · Mitarbeiter fehlt · Arbeitsplatz fehlt · Sperre kollidiert · Fahrzeug in gesperrter Bucht (parkendes Auto in nicht-aktiver Bucht) · Fahrzeug vor kommender Sperre (Vorlauf) · Sperre-Validierung (validiereSperren)OP-R8-1, OP-UMPARK-2
npm run test:konflikt-autoloese„Alle automatisch lösen": Hebel-Rang (skip>eil>unterbrechen>abholtermin) + Sicherheits-Prüfung (kein neu verursachter Konflikt)OP-R8-7 Slice 1
npm run test:editOptimistische Nebenläufigkeit (revVeraltet/naechsteRev): Speichern auf veralteter Basis-Version wird erkannt (erster Schreiber gewinnt, monotone rev); ohne baseRev rückwärtskompatibelOP-EDIT-1
npm run test:pinbuildProblem trägt Pins (Gantt-Direktverschiebung 3b)
npm run test:ausfallAusfall-Kategorisierung (Pause/Geschlossen/Krank/Urlaub/Wartung)
npm run test:bereitschaftÜberlauf/Bereitschaft zählt nicht zur Default-VerfügbarkeitOP-OPT-7 Slice 2
npm run test:schicht-reserveAufräum-Reserve am Schichtende (aufraeumReserveMin, Default 30, admin-konfigurierbar): verkürzt die planbare Verfügbarkeit am spätesten Slot (nicht an Pausen-Slots) → wirkt via avail auf TS-Scheduler UND CP-SAT-Solver; erzeugt ein „Aufräumen"-Gantt-Band; Klemmung 0…120OP-SCHICHT-1
npm run test:indoorIndoor-Trocknung-Pflicht verengt allowedBays (CP-SAT↔TS-Parität)F07a
npm run test:overflowFolierbucht-als-Überlauf-Parkplatz im buildProblemOP-OPT-5 Slice 2
npm run test:planvergleichplaeneIdentisch — Szenario-Konvergenz auf echter ZuweisungOP-OPT-6
npm run test:autooptAuto-Anwenden-Kriterium der Event-Re-Opt — nur terminneutrale Pareto-Verbesserungen (keiner später, ≥1 früher)OP-OPT-9
npm run test:eligibilitySkills/Niveau/Vertrauen steuern Solver-Eignung + PlanOP-R1-1 Phase E
npm run test:optimizing„Optimierung läuft…" endet nur bei vorgerücktem rechenStempel (30-s-Ping bricht nicht ab)
npm run test:insightsInsights-Engine (True-North-Antworten, inkl. zeitbasierter Auslastungs-Quote — belegt ∩ verfügbar gekappt; Nacht-Halle-Check nachtHalleReste — hochwertige Fahrzeuge ≥ Schwelle nicht in der Halle; Nacht-Halle-Konfig nachtHalleKonfigEffektiv/istNachtHalleSlot — Schwelle-Klemmung + Bucht-Allowlist vs. Indoor-Fallback)OP-AI-4 Säule 3 / OP-SCHICHT-1
npm run test:assistant-retrievalDoku-Retrieval-Kern (Keyword-Ranking + Berechtigungsfilter + Index)OP-DOCS-2
npm run test:assistant-toolsAssistent-Tool-Call-Schleife (Dispatch je Werkzeug, Feedback-Referenz, Rundenlimit)OP-AI-4 §6
npm run test:assistant-feedbackFeedback→GitHub-Issue-Mapping (Titel/Body/Labels, kein Klartext-PII) + Issue-Suche + Feedback-Übersicht (Listen-Pfad · Route-Rücklese · offen/geschlossen-Mapping · Tooltip-Details/Bild-Extraktion detailsAusIssueBody/bilderAusIssueBody)OP-DOCS-7
npm run test:annahme-parseEin-Satz-Annahme-Parsing (Takt-Kommando): LLM-Tool-Schema enum-gebunden an den echten Leistungs-Katalog + defensive Antwort-Validierung (kein erfundener Katalog-Eintrag, kaputte Zeiten verworfen)OP-UX-4
npm run test:matchingHybrid-Matching Live-Daten: Token-Matching + semantische Rangfolge (Cosine, Schwelle/topK)OP-AI-4
npm run test:corsCORS-Allowlist für Cross-Origin-Frontends (Doku-Widget, credentials, kein *)OP-DOCS-2
npm run test:leistungLeistungsnachweise/Mängel → Mitarbeiter-Statistik & ErfahrungOP-R1-2
npm run test:progressionSkill-Niveau-Progression (per-Skill-XP + XP-gegatete Aufstiegs-Vorschläge)OP-R1-3
npm run test:prozessEditierbare Prozessschritt-Skill-Anforderungen wirken auf buildProblem.eligibleOP-R3-3
npm run test:kostenInfra-Kosten-Aggregation (je Dienst/Monat, Trend, Top-Posten, Mehrwährung) + Provider-MapperOP-COST-1 Sicht B / OP-COST-2
npm run test:obsLogger-Wrapper (Scrubbing/Level/child/Sink-Isolation) + OTLP-Logs/Metrics-PayloadOP-LOG-1 / OP-OBS-1
npm run test:obs-clientClient-Telemetrie-Mapper: Payload-Härtung (Level-Whitelist, Anzahl-Deckel, Längen) + Mapping → taktano-client (PII-Scrubbing)OP-OBS-1 Slice C1

2. Server-Smokes (server/)

Führen einen echten Ablauf einmal durch (Durchlauf-Nachweis). CI-Job Server.

BefehlPrüftBezug
npm run spikeScheduler-Spike (Greedy-Angebotsmodus) läuft durch§5.2.2
npm run operativOperatives Modell (Auftrag-Lifecycle inkl. Selbsttests Klärfall/Klärungs-Engine-Routing (melden-pausiert · zurück · QS-Sprung · ab-hier-weiter · Einschub · Abbruch)/Zuweisung/Fahrzeugannahme-Check-in/Umpark-Platzierung (G-4)/Vier-Augen (Prüfschritt-Erkennung · Ausführenden-Set · Verletzung · Chef-Freigabe))§5.1 · OP-R3-1 · OP-UX-5 · OP-UMPARK-1 · OP-QS-6
npm run replanEilauftrag-VerdrängungOP-R7-3
npm run solveGlobaler Optimierer (Reihenfolge-Suche)§6.2
npm run solve:cpsatCP-SAT-Solver-Demo (nur lokal, nicht in CI — braucht SOLVER_URL/Service)A-5

3. Client-Tests (client/)

CI-Job Client (build).

BefehlPrüftBezug
npm run test:bildgatePre-Upload-Schutz-Kern (Qualität · Verpixelung · NSFW-Gate · Markierungen)OP-QS-2 / OP-FEEDBACK-1
npm run test:fotoqueueOffline-Foto-Upload-Queue-Zustandsmaschine (Upload→Registrierung→Original→fertig, Offline-Halt)OP-OFFLINE-1 Stufe C
npm run test:queueQueue-Reihenfolge der Ressourcen-/persönlichen Queues (läuft→pausiert→geplant nach Plan-Start · Positions-Nummern · frei-ab-Sentinel null)OP-OPT-9
npm run build (ng build)Angular-Produktions-Build kompiliert fehlerfrei

4. Solver-Service (solver-service/, Python)

CI-Job Solver-Service (CP-SAT model self-test).

BefehlPrüftBezug
python model.pyCP-SAT-Modell löst eingebettetes Beispiel + AssertsA-5

5. Gates & Konsistenz-Checks (scripts/)

Befehl / ScriptPrüftCI-JobBlockt?
npm run typecheck (tsc --noEmit)Server-TypeScript typkorrektServerja
bash scripts/check-no-console.shKein rohes console.* im Laufzeitpfad (Logger-Wrapper-Pflicht)Serverja
bash scripts/check-no-hex.shKeine rohen Hex-Farben (nur --tk-*-Tokens); Kommentar-Anteile (// · /* */ · <!-- -->) sind ausgenommen → PR-/Issue-Referenzen wie #409 lösen nicht falsch ausDesignja
node design/tokens/build.mjs + git difftokens.css nicht veraltet (aus tokens.json generiert, Dark+Light)Designja
npm run persistence:check (check-persistence.shcheck-do-state-coverage.mjs + check-drizzle.sh)DO-State-Coverage + Drizzle-Schema-StalenessPersistenz-Gateja
npm audit --omit=dev --audit-level=high (Server + Client)Keine High+-Vulns in Prod-DepsSecurity-Auditja
pip-audit (Solver)Keine bekannten Vulns im Python-SolverSecurity-Auditja
bash scripts/check-doc-consistency.sh [--strict]Doku↔Doku/Code-Konsistenz, zweistufig (OP-DOCS-14 Teil 3): hart, blockt mit --strict = tote Links · Version/Build-SoT; warnt = Log-Hygiene · Landkarte-Vollständigkeit (bis 3 Ebenen, _-Partials aus) · _category_.json je Ordner · sidebar_position-Eindeutigkeit je Ordner · Zielgruppen-Parität (glossar.mjsLesepfade.md) · Test-Übersicht-Vollständigkeit (diese Datei) · Log-Zeilenlängen > 2000 Z. · Footer-Staleness (README/HANDOFF) · Landkarte-Rücklink (gen-doc-footer.mjs --check) · Kopf-Standard architektur/ (im Block direkt nach der H1: Status · Bezug · Zielgruppe · True North + genau 1 Kernaussage je Doc, agents.md §2.1)Doku-Konsistenzja (--strict, am ci-gate)
node scripts/gen-doc-footer.mjs --checkJedes Leaf-Doc unter docs/ trägt den statischen „↩ Doku-Landkarte"-Rücklink (Generator ohne --check schreibt fehlende Footer; Timesheet/generierte Dateien ausgenommen)Doku-Konsistenz (Teil von check-doc-consistency)via Warn-Check
git diff --exit-code docs/betrieb/Offene-Punkte.md (nach gen-ops.mjs)Generierte OP-Übersicht nicht veraltet (Staleness-Gate, analog tokens.css)Doku-Konsistenzja (blockt)
npm run sbom (Server + Client CycloneDX)SBOM-Erzeugung (Lieferkette)SBOM (nur auf main-Push)
node scripts/check-r2-private.mjsR2-Bucket privat (kein öffentlicher Zugriff)Deployja (vor Deploy)
npm run test:grafana-dashboards (push-grafana-dashboards.mjs --check)grafana/dashboards/*.json valide (JSON · title/uid · uid eindeutig · API-Payload baubar) — der Push selbst läuft im Deploy-Job (dormant ohne GRAFANA_URL/GRAFANA_DASHBOARD_TOKEN)Server (Check) · Deploy (Push)ja (Check)
CI Gate (Aggregator)Kein erforderlicher Job fehlgeschlagen (skipped = ok bei Docs-only); seit OP-DOCS-14 Teil 3 inkl. doc-consistencyCI Gateja
Docusaurus-Build (docs-site, onBrokenLinks: 'throw')Kaputte Site-Links brechen den Doku-Deploy hart (Broken-Link-Gate)docs-deployja (Deploy-Pfad)

6. Alles lokal ausführen

# Server (im server/-Verzeichnis)
cd server
npm run typecheck
for t in teilplan do-migrations archiv preis running-process nacharbeit qs-nacharbeit \
abnahme fairness vorschlag preemption pin ausfall bereitschaft indoor overflow \
planvergleich autoopt eligibility optimizing insights assistant-retrieval assistant-tools \
assistant-feedback cors leistung progression prozess kosten obs obs-client; do npm run test:$t; done
npm run spike && npm run operativ && npm run replan && npm run solve

# Client (im client/-Verzeichnis)
cd ../client && npm run test:bildgate && npm run test:fotoqueue && npm run test:queue && npm run build

# Gates (im Repo-Wurzelverzeichnis)
cd .. && bash scripts/check-no-console.sh && bash scripts/check-no-hex.sh \
&& bash scripts/check-doc-consistency.sh

7. Regel: Übersicht mitführen (verbindlich)

  • Neuer Test → Script in package.json und CI-Job in .github/workflows/ci.yml und Zeile hier.
  • Entfernter/umbenannter Test → Zeile hier anpassen.
  • Mechanischer Rückhalt: scripts/check-doc-consistency.sh warnt (blockt nicht), wenn ein test:*-Script aus server/package.json oder client/package.json in dieser Datei fehlt.
  • Der semantische Teil (stimmt „Prüft"/OP-Bezug?) bleibt Agenten-/Reviewer-Pflicht (OP-DOCS-9).

Bezug: CLAUDE.md §Tests & CI · docs/konventionen/agents.md · OP-DOCS-9 (Doku-Konsistenz) · .github/workflows/ci.yml.


↩ Zurück zur Doku-Landkarte · Lesepfade · Register (alle OPs)