Mining-Checker Modul
Zweck
Das Modul erfasst DOGE-Mining-Messpunkte, analysiert OCR-Vorschlaege aus Screenshots, speichert Messreihen projektbezogen und berechnet Performance-, Kurs- und Zielmetriken.
Ordnerstruktur
modules/mining-checker/
|-- api/
|-- assets/
| |-- css/
| `-- js/
|-- config/
|-- docs/
|-- pages/
|-- partials/
|-- sql/
| `-- migrations/
|-- src/
| |-- Api/
| |-- Domain/
| |-- Infrastructure/
| `-- Support/
|-- storage/uploads/
|-- bootstrap.php
`-- module.json
API-Endpunkte
GET /api/mining-checker/v1/healthGET /api/mining-checker/v1/projects/{projectKey}/bootstrapGET /api/mining-checker/v1/projects/{projectKey}/measurementsPOST /api/mining-checker/v1/projects/{projectKey}/measurementsPOST /api/mining-checker/v1/projects/{projectKey}/ocr-previewGET /api/mining-checker/v1/projects/{projectKey}/settingsPUT /api/mining-checker/v1/projects/{projectKey}/settingsGET /api/mining-checker/v1/projects/{projectKey}/targetsPOST /api/mining-checker/v1/projects/{projectKey}/targetsPATCH /api/mining-checker/v1/projects/{projectKey}/targets/{targetId}GET /api/mining-checker/v1/projects/{projectKey}/dashboardsPOST /api/mining-checker/v1/projects/{projectKey}/dashboardsGET /api/mining-checker/v1/projects/{projectKey}/dashboard-dataPOST /api/mining-checker/v1/projects/{projectKey}/seed-importGET /api/mining-checker/v1/projects/{projectKey}/schema-statusPOST /api/mining-checker/v1/projects/{projectKey}/initializePOST /api/mining-checker/v1/projects/{projectKey}/upgradeGET /api/mining-checker/v1/projects/{projectKey}/connection-testGET /api/mining-checker/v1/projects/{projectKey}/fx-historyPOST /api/mining-checker/v1/projects/{projectKey}/legacy-fx-migrate
Integration
- SQL aus dem passenden Dialekt-Schema ausfuehren:
- MySQL/MariaDB:
sql/schema.mysql.sql - PostgreSQL:
sql/schema.pgsql.sql sql/schema.sqlbleibt der Rueckfall fuer bestehende Setups
- MySQL/MariaDB:
- Das Modul nutzt bewusst dieselbe Projekt-Datenbank wie die Anwendung und legt seine Tabellen mit dem Praefix
miningcheck_an. - Modulroute ueber
/module/mining-checkeraufrufen. - REST-API wird ueber
/api/mining-checker/...vom Hauptprojekt geroutet.
Hinweis:
Wenn beim ersten API-Zugriff noch keine miningcheck_* Tabellen vorhanden sind, importiert das Modul automatisch das zum aktiven PDO-Treiber passende Schema.
Seed-Daten werden dabei nicht automatisch eingespielt.
Fuer eine manuelle Initialisierung, ein inkrementelles Upgrade oder einen Reset gibt es zusaetzlich schema-status, upgrade und initialize. Mit { "drop_existing": true } werden vorhandene miningcheck_* Tabellen inklusive Daten geloescht und das Schema neu angelegt.
OCR-Hinweis
Das Modul unterstuetzt einen OCR-Provider-Stack. Standardmaessig wird zuerst ocr.space verwendet und danach optional auf lokales tesseract zurueckgefallen.
Empfohlene Umgebungsvariablen:
MINING_CHECKER_OCR_PROVIDERS=ocrspace,tesseractMINING_CHECKER_OCR_SPACE_URL=https://api.ocr.space/parse/imageMINING_CHECKER_OCR_SPACE_API_KEY=...MINING_CHECKER_OCR_SPACE_LANGUAGE=engMINING_CHECKER_OCR_SPACE_ENGINE=2MINING_CHECKER_OCR_SPACE_SCALE=trueMINING_CHECKER_OCR_SPACE_DETECT_ORIENTATION=trueMINING_CHECKER_OCR_SPACE_IS_TABLE=falseMINING_CHECKER_OCR_SPACE_TIMEOUT=25MINING_CHECKER_TESSERACT_BIN=/usr/bin/tesseractMINING_CHECKER_TESSERACT_LANG=eng
Laut OCR.space-Doku wird POST https://api.ocr.space/parse/image mit file, Header-apikey, optional language, scale, detectOrientation, isTable und OCREngine verwendet. Der Modulparser wertet die OCR.space-Felder ParsedResults, ParsedText, IsErroredOnProcessing, ErrorMessage und OCRExitCode aus. Quellen: https://ocr.space/ocrapi
Wechselkurse und Waehrungen
Der Mining-Checker speichert keine eigenen FX-Snapshots mehr, sondern referenziert die fetch_id aus fx-rates.
Auch der Waehrungskatalog und die bevorzugten Waehrungen kommen ausschliesslich aus fx-rates. Der Mining-Checker fuehrt keine eigene Waehrungstabelle und keine eigene Alias-Verwaltung mehr im Laufzeitpfad.
MINING_CHECKER_FX_AUTO_FETCH_ON_MISS=false
Optionaler JSON-Body:
base: StandardEURsymbols: wird aktuell ignoriert; der Mining-Checker speichert immer den kompletten Waehrungssatz des Fetches
Beispiel:
{
"base": "EUR"
}
currencyapi.net wird ueber das Modul fx-rates abgefragt. Aus dem Response werden base, rates und updated uebernommen; valid muss true sein. Die eigentlichen Fetches und Raten liegen im Modul fx-rates.
Pro Abruf entsteht genau ein Datensatz in fx-rates mit Basiswaehrung, Provider und Stichtag. Neue Mining-Messpunkte pruefen beim Speichern, ob ein neuer FX-Fetch noetig ist; falls nicht, wird die letzte passende fetch_id wiederverwendet.
Falls noch historische Mining-Checker-Fetches in miningcheck_fx_fetches und miningcheck_fx_rates liegen, kann POST /api/mining-checker/v1/projects/{projectKey}/legacy-fx-migrate diese nach fx-rates ueberfuehren. Danach werden bestehende Messpunkte soweit moeglich auf die passende fx_fetch_id aktualisiert.
Fuer Auswertungen, Berichte und Listen speichert der Mining-Checker pro Messpunkt die damals passende fx_fetch_id. Historische Umrechnungen laufen damit gegen genau den zugeordneten fx-rates-Snapshot.