1e51ef7def
- 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>
85 lines
3.2 KiB
Markdown
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
|