Files
Adminator 1e51ef7def Nachtrag: alle bisher untracked Ordner + hängende Änderungen mit-committen
- Konzept/, didaktik_geografie/, didaktik_simulation/, v2-modules/, v2-platform/
- 12 code-workspace-Files
- STATUS-*.md
- viele M/D/R-Änderungen an bereits getrackten Files
- .gitignore verstärkt: **/.humaninput/, **/secret_keys.txt

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-08 02:27:02 +02:00

85 lines
3.2 KiB
Markdown

# Konformitäts-Check (V2)
PHP-basiertes Skript, das prüft, ob ein V2-Modul die Spec erfüllt
(siehe `v2-modules/_spec/delivery-format.md` und `module-manifest.md`).
## Aufruf
Aus dem Modul-Wurzelordner:
```bash
cd v2-modules/<dein-slug>
php ../../v2-platform/tools/conformance-check/check.php
```
Exit-Code:
- `0` = LIEFERBEREIT (Phase-1-Checks bestanden, Browser-Checks Phase 2)
- `1` = Fehler vorhanden — nicht lieferbar
Output:
- Farbige Console-Ausgabe (✓ / ✗ / ⚠)
- `tests/conformance-report.json` mit allen Details
## Welche Checks (Phase 1, PHP-only)
| Check | Was wird geprüft |
|---|---|
| **Manifest-Schema** | Pflichtfelder, Slug-Format, supportedLanguages (de-AT-easy Pflicht), Lehrplan-Anker mit Land-Prefix, glossarSchwerpunkte ≤ 10, dbTables-Prefix `m_<slug>_`, difficultyLevels, telemetryMilestones |
| **Pflicht-Files** | README.md, db/migrations.sql, tests/mock-platform.html, entryHtml/cardImage/screenshots existieren physisch, verbotene Files (.env.local, node_modules), Großdateien-Warnung > 50 MB |
| **i18n** | pro supportedLanguage eine JSON-Datei in public/i18n/, Easy-Variante deckt alle Keys der Standard-Variante ab |
| **DB-Migrations** | CREATE TABLE mit IF NOT EXISTS, ADD COLUMN mit IF NOT EXISTS, keine DROP/TRUNCATE/RENAME, Tabellen mit Modul-Prefix |
| **admin-fields.json** | Pflicht-Datei, moduleId matcht slug, groups[].fields[] mit key/label/labelEasy/type |
| **CSS-Hex-Hardcodes** | scant public/**/*.css und .html nach Hex-Werten — verboten, müssen `var(--ggs-*)` oder `var(--<slug>-*)` sein |
## Phase 2 (später, mit Headless-Browser)
- A11y-Audit via axe-core
- Telemetry-Event-Test (mindestens 5 Heartbeats, alle deklarierten Milestones werden gefeuert, ein Result-POST)
- Keyboard-Navigation-Test (Tab-Reihenfolge, Enter/Esc)
- Focus-Indikator vorhanden
- prefers-reduced-motion respektiert
- High-Contrast-Render-Test
- Alt-Texte auf allen `<img>`
- Semantische Buttons statt `<div onclick>`
Diese Tests brauchen Playwright/Headless-Chrome — folgt in einer
späteren Iteration. Vorläufig **manuell** mit `tests/mock-platform.html`
prüfen.
## Beispiel-Output
```
=== GeoGraSim V2-Konformitäts-Check ===
Modul: hallo-welt @ 1.0.0
Pfad: c:\xampp\htdocs\geograsim\v2-modules\hallo-welt
Spec: 1.0
--- Manifest-Schema ---
✓ Alle Pflichtfelder vorhanden
✓ Slug-Format ok ('hallo-welt')
✓ Lehrplan-Anker: 1 Eintrag/Einträge, alle mit Land-Prefix
✓ glossarSchwerpunkte: 0 von max 10 Einträgen
--- Pflicht-Files ---
✓ Pflicht-File vorhanden: README.md
✓ Pflicht-File vorhanden: db/migrations.sql
✓ Pflicht-File vorhanden: tests/mock-platform.html
...
=== Zusammenfassung ===
✓ Passed: 18
✗ Failed: 0
⚠ Warning: 1
STATUS: LIEFERBEREIT (Phase-1-Checks). Browser-Checks Phase 2 noch manuell.
```
## Bekannte Limitationen
- Slug-Eindeutigkeit über alle Module wird **nicht** geprüft (das macht
Atlas beim Integrieren — braucht Zugriff auf `module_info_v2`)
- Lehrplan-Anker-Existenz in der DB nicht geprüft (selbe Grund)
- Glossar-Slug-Existenz nicht geprüft (selber Grund)
- Sed-Lauf erkennt nicht, ob `<div onclick>` in JS-Templates gebaut wird
- Schwere Spec-Verstöße (z.B. fetch auf OpenAI im Browser) werden nur in Phase 2 erkannt