Formale Schemata liegen unter docs/schema/ (JSON Schema Draft 2020-12):
state.schema.json – Zwischenstand (Import/Export im Tool, localStorage tdt.state.v1)client-profile.schema.json – Clientprofil des Capability-Tests (cct-profile/1.0)export.schema.json – vollständiger Rohdatenexport des Abschlussberichts (tdt-export/1.0)state){
"version": "1.0.0",
"meta": { "project": "Bochum IIS-SRV01", "interviewer": "…", "itContact": "…",
"createdAt": "2026-09-07T10:00:00.000Z", "updatedAt": "2026-09-07T11:30:00.000Z" },
"answers": {
"C27": { "value": "ja", "note": "", "evidence": "Web-WebSockets Installed\nwebSocket enabled=\"true\"",
"status": "confirmed", "itConfirmed": true, "later": false, "updatedAt": "…" },
"D_php_tech": { "value": "nicht_installierbar", "status": "na", "note": "keine PHP-Freigabe", "evidence": "", "itConfirmed": false, "later": false, "updatedAt": "…" },
"C02": { "value": ["static", "windows_auth", "websocket"], "status": "confirmed", "note": "", "evidence": "Get-WindowsFeature Web-* …", "itConfirmed": false, "later": false, "updatedAt": "…" }
},
"profiles": [ { "…": "siehe Clientprofil" } ]
}
Werttypen je Fragetyp: ynu/single → String (Optionswert); multi → Array von Strings; number → Number; version/text → String; check → Boolean.
cct-profile/1.0){
"schema": "cct-profile/1.0",
"id": "iphone-mobileiron-web-work", "name": "iPhone MobileIron/Web@Work",
"deviceType": "Smartphone", "os": "iOS", "osVersion": "17.5",
"browser": "Web@Work 3.x", "mdm": "Ivanti EPMM", "mdmVersion": "12.1",
"accessPath": "MobileIron/Ivanti-Tunnel (Per-App-VPN)", "userGroup": "Einsatzkräfte",
"mandatory": true,
"ua": "Mozilla/5.0 (iPhone; …)", "auto": { "screen": "390×844 @3", "touch": true, "secure": true, "…": "…" },
"probeBase": "https://app.intern/probe", "probeAvailable": true,
"results": {
"fetch": { "ok": true, "detail": "HTTP 200 application/json", "note": "", "manual": false, "ts": "…" },
"websocket": { "ok": false, "detail": "Timeout – kein Echo (Tunnel/Proxy blockiert Upgrade?)", "note": "Screenshot 12", "manual": false, "ts": "…" },
"download": { "ok": true, "detail": "Manueller Test", "note": "Datei in Files-App sichtbar", "manual": true, "ts": "…" }
},
"createdAt": "…", "updatedAt": "…"
}
ok: true = Erfolg, false = Fehler, null = Unbekannt. manual = true bedeutet, das Ergebnis wurde vom Tester überschrieben; autoOk bewahrt das automatische Ergebnis.
tdt-export/1.0){
"schema": "tdt-export/1.0", "exportedAt": "…", "catalogVersion": "1.0.0",
"meta": { "…": "…" },
"answers": { "…": "wie Zwischenstand" },
"profiles": [ "…" ],
"evaluation": {
"gates": { "SERVER": { "total": 40, "checked": 31, "coverage": 0.78, "essentialOpen": [], "red": ["…"], "ready": true, "label": "belastbar geprüft" } },
"caps": [ { "id": "iis_websocket", "gate": "SERVER", "name": "WebSocket-Protokoll (Server)", "status": "G", "statusLabel": "GRÜN", "evidence": "C27: Ja | Nachweis: … | durch IT bestätigt", "meaning": "…", "consequence": "…", "essential": false } ],
"frontend": { "grade": "B", "label": "B – Progressive Enhancement empfohlen", "reasons": ["…"], "assets": "…" },
"blockers": [ { "type": "ROT (essenziell)", "text": "…", "id": "db_backup" } ],
"open": [ { "id": "E11", "sec": "E", "title": "…", "cmd": "…", "gui": "…", "reason": "nicht beantwortet", "later": false } ],
"matrix": { "profiles": [ "…" ], "rows": [ { "id": "fetch", "name": "Fetch API", "group": "Netzwerk", "cells": ["OK", "OK"], "code": "G", "decision": "Nutzbar (alle Pflichtclients)", "detail": "…" } ], "lcd": ["…"], "partial": ["…"], "blocked": ["…"], "unknown": ["…"] },
"stacks": [ { "variant": "Bevorzugt", "title": "…", "backend": "…", "frontend": "…", "db": "…", "auth": "…", "api": "…", "jobs": "…", "realtime": "…", "logging": "…", "deploy": "…", "test": "…", "prereq": ["…"], "pros": "…", "cons": "…", "status": "G", "statusLabel": "GRÜN" } ],
"levels": { "inside": ["…"], "extend": [ { "id": "rt_hosting", "text": "…", "status": "GELB" } ], "outside": ["…"] }
},
"catalog": [ { "id": "A01", "sec": "A", "title": "…", "type": "version" } ]
}
Der Export enthält den Katalog-Snapshot (IDs, Typen, Optionswerte), damit Rohdaten auch ohne das Tool interpretierbar bleiben.