A previous `git pull --rebase origin main` dropped 177 local commits,
losing 3400+ files across admin-v2, backend, studio-v2, website,
klausur-service, and many other services. The partial restore attempt
(660295e2) only recovered some files.
This commit restores all missing files from pre-rebase ref 98933f5e
while preserving post-rebase additions (night-scheduler, night-mode UI,
NightModeWidget dashboard integration).
Restored features include:
- AI Module Sidebar (FAB), OCR Labeling, OCR Compare
- GPU Dashboard, RAG Pipeline, Magic Help
- Klausur-Korrektur (8 files), Abitur-Archiv (5+ files)
- Companion, Zeugnisse-Crawler, Screen Flow
- Full backend, studio-v2, website, klausur-service
- All compliance SDKs, agent-core, voice-service
- CI/CD configs, documentation, scripts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
6.3 KiB
6.3 KiB
GeoEdu Service - Implementierungsstatus
Stand: 2026-01-24 Status: Infrastruktur komplett, Downloads ausstehend
Übersicht
Der GeoEdu Service ist eine DSGVO-konforme Erdkunde-Lernplattform mit:
- Self-Hosted OpenStreetMap Tile Server für Deutschland
- 3D-Terrain aus Copernicus DEM (Open Data)
- Unity WebGL Integration für immersive Lernwelten
- Learning Nodes System für didaktische Inhalte (via Ollama LLM)
Port: 8088
Abgeschlossene Arbeiten
Backend (geo-service/)
| Datei | Status | Beschreibung |
|---|---|---|
Dockerfile |
✅ | Python 3.11 + GDAL + Geo-Libraries |
requirements.txt |
✅ | FastAPI, asyncpg, shapely, rasterio, pmtiles |
config.py |
✅ | Pydantic Settings |
main.py |
✅ | FastAPI App mit allen Routers |
api/tiles.py |
✅ | Vector Tile Endpoints |
api/terrain.py |
✅ | DEM/Heightmap Endpoints |
api/aoi.py |
✅ | AOI Packaging Endpoints |
api/learning.py |
✅ | Learning Nodes API |
services/tile_server.py |
✅ | PMTiles Reader |
services/dem_service.py |
✅ | Copernicus DEM Handler |
services/aoi_packager.py |
✅ | Unity Bundle Generator |
services/osm_extractor.py |
✅ | OSM Feature Extraction |
services/learning_generator.py |
✅ | Ollama LLM Integration |
models/aoi.py |
✅ | AOI Pydantic Models |
models/learning_node.py |
✅ | Learning Node Models |
models/attribution.py |
✅ | License Attribution |
utils/geo_utils.py |
✅ | Koordinaten-Transformationen |
utils/minio_client.py |
✅ | S3 Client |
utils/license_checker.py |
✅ | Lizenz-Validierung |
scripts/download_osm.sh |
✅ | Geofabrik Download (NICHT ausgeführt) |
scripts/download_dem.sh |
✅ | Copernicus Download (NICHT ausgeführt) |
scripts/import_osm.sh |
✅ | osm2pgsql Import |
scripts/generate_tiles.sh |
✅ | PMTiles Generation |
scripts/init_postgis.sql |
✅ | PostGIS Schema + Tabellen |
tests/test_tiles.py |
✅ | API Tests |
tests/test_aoi.py |
✅ | AOI + Geo Utils Tests |
tests/test_learning.py |
✅ | Learning Generator Tests |
.env.example |
✅ | Environment Template |
Frontend (studio-v2/)
| Datei | Status | Beschreibung |
|---|---|---|
package.json |
✅ | maplibre-gl Dependency hinzugefügt |
app/geo-lernwelt/page.tsx |
✅ | Hauptseite mit Tabs |
app/geo-lernwelt/types.ts |
✅ | TypeScript Interfaces |
components/geo-lernwelt/AOISelector.tsx |
✅ | MapLibre Polygon-Zeichnung |
components/geo-lernwelt/UnityViewer.tsx |
✅ | Unity WebGL Viewer |
lib/geo-lernwelt/GeoContext.tsx |
✅ | React Context |
lib/geo-lernwelt/mapStyles.ts |
✅ | MapLibre Styles |
lib/geo-lernwelt/unityBridge.ts |
✅ | Unity Communication |
Docker-Konfiguration
| Änderung | Status | Beschreibung |
|---|---|---|
docker-compose.yml |
✅ | geo-service hinzugefügt |
| PostgreSQL Image | ✅ | Geändert zu postgis/postgis:16-3.4-alpine |
| PostGIS Init Script | ✅ | Auto-Setup bei Container-Start |
| Volumes | ✅ | geo_osm_data, geo_dem_data, geo_tile_cache, geo_aoi_bundles |
Ausstehende Arbeiten
Downloads (NICHT automatisch starten!)
| Download | Größe | Script | Dauer (~100 Mbit/s) |
|---|---|---|---|
| Germany OSM PBF | 4.4 GB | scripts/download_osm.sh |
~6 Min |
| Copernicus DEM | ~25 GB | scripts/download_dem.sh |
~35 Min |
Generierung (nach Downloads)
| Prozess | Output | Dauer |
|---|---|---|
| osm2pgsql Import | PostgreSQL DB | ~2-4 Stunden |
| PMTiles (Z0-14) | ~200-300 GB | ~12-24 Stunden |
| DEM Tiles | ~15 GB | ~2-3 Stunden |
Gesamtspeicherbedarf nach Setup: ~350 GB
API Endpoints
# Tiles
GET /api/v1/tiles/{z}/{x}/{y}.pbf → Vector Tile
GET /api/v1/tiles/style.json → MapLibre Style
GET /api/v1/tiles/metadata → Tile Metadata
GET /api/v1/tiles/bounds → Germany Bounds
# Terrain
GET /api/v1/terrain/{z}/{x}/{y}.png → Heightmap (Terrain-RGB)
GET /api/v1/terrain/hillshade/{z}/{x}/{y}.png → Hillshade
GET /api/v1/terrain/elevation?lat=&lon= → Point Elevation
GET /api/v1/terrain/metadata → DEM Metadata
# AOI (Area of Interest)
POST /api/v1/aoi → Create AOI
GET /api/v1/aoi/{id} → Get Status
GET /api/v1/aoi/{id}/manifest.json → Unity Manifest
POST /api/v1/aoi/validate → Validate Polygon
GET /api/v1/aoi/templates/mainau → Mainau Demo
# Learning Nodes
POST /api/v1/learning/generate → Generate with LLM
GET /api/v1/learning/templates → Available Themes
GET /api/v1/learning/{aoi_id}/nodes → Get Nodes
GET /api/v1/learning/statistics → Stats
Nächste Schritte
-
Container starten (ohne Downloads):
docker compose up -d geo-service -
Health Check testen:
curl http://localhost:8088/health -
Frontend testen:
http://localhost:3001/geo-lernwelt -
Downloads starten (wenn bereit):
# OSM Download (~6 Min) docker exec breakpilot-pwa-geo-service /app/scripts/download_osm.sh # DEM Download (~35 Min) docker exec breakpilot-pwa-geo-service /app/scripts/download_dem.sh -
Tile-Generierung (nach Downloads):
# OSM Import (~2-4h) docker exec breakpilot-pwa-geo-service /app/scripts/import_osm.sh # PMTiles Generation (~12-24h) docker exec breakpilot-pwa-geo-service /app/scripts/generate_tiles.sh
Lizenz-Compliance
Zugelassene Quellen
- ✅ OpenStreetMap (ODbL)
- ✅ Copernicus DEM (Copernicus License)
- ✅ OpenAerialMap (CC-BY 4.0)
VERBOTEN
- ❌ Google Maps/Earth
- ❌ Bing Maps
- ❌ Apple Maps
- ❌ HERE
Wichtige Dateien
| Datei | Pfad |
|---|---|
| Haupt-Plan | /Users/benjaminadmin/.claude/plans/stateful-hugging-kahan.md |
| Backend | /Users/benjaminadmin/Projekte/breakpilot-pwa/geo-service/ |
| Frontend | /Users/benjaminadmin/Projekte/breakpilot-pwa/studio-v2/app/geo-lernwelt/ |
| Docker Config | /Users/benjaminadmin/Projekte/breakpilot-pwa/docker-compose.yml |
Kontakt bei Fragen
Dieser Service wurde gemäß dem Plan in /Users/benjaminadmin/.claude/plans/stateful-hugging-kahan.md implementiert.