126 lines
5.8 KiB
Markdown
126 lines
5.8 KiB
Markdown
# 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
|
|
|
|
```text
|
|
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/health`
|
|
- `GET /api/mining-checker/v1/projects/{projectKey}/bootstrap`
|
|
- `GET /api/mining-checker/v1/projects/{projectKey}/measurements`
|
|
- `POST /api/mining-checker/v1/projects/{projectKey}/measurements`
|
|
- `POST /api/mining-checker/v1/projects/{projectKey}/ocr-preview`
|
|
- `GET /api/mining-checker/v1/projects/{projectKey}/settings`
|
|
- `PUT /api/mining-checker/v1/projects/{projectKey}/settings`
|
|
- `GET /api/mining-checker/v1/projects/{projectKey}/targets`
|
|
- `POST /api/mining-checker/v1/projects/{projectKey}/targets`
|
|
- `PATCH /api/mining-checker/v1/projects/{projectKey}/targets/{targetId}`
|
|
- `GET /api/mining-checker/v1/projects/{projectKey}/dashboards`
|
|
- `POST /api/mining-checker/v1/projects/{projectKey}/dashboards`
|
|
- `GET /api/mining-checker/v1/projects/{projectKey}/dashboard-data`
|
|
- `POST /api/mining-checker/v1/projects/{projectKey}/seed-import`
|
|
- `GET /api/mining-checker/v1/projects/{projectKey}/schema-status`
|
|
- `POST /api/mining-checker/v1/projects/{projectKey}/initialize`
|
|
- `POST /api/mining-checker/v1/projects/{projectKey}/upgrade`
|
|
- `GET /api/mining-checker/v1/projects/{projectKey}/connection-test`
|
|
- `POST /api/mining-checker/v1/projects/{projectKey}/fx-refresh`
|
|
- `POST /api/mining-checker/v1/projects/{projectKey}/currencies-refresh`
|
|
- `GET /api/mining-checker/v1/projects/{projectKey}/fx-history`
|
|
|
|
## Integration
|
|
|
|
1. SQL aus dem passenden Dialekt-Schema ausfuehren:
|
|
- MySQL/MariaDB: `sql/schema.mysql.sql`
|
|
- PostgreSQL: `sql/schema.pgsql.sql`
|
|
- `sql/schema.sql` bleibt der Rueckfall fuer bestehende Setups
|
|
2. Das Modul nutzt bewusst dieselbe Projekt-Datenbank wie die Anwendung und legt seine Tabellen mit dem Praefix `miningcheck_` an.
|
|
3. Modulroute ueber `/module/mining-checker` aufrufen.
|
|
4. 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,tesseract`
|
|
- `MINING_CHECKER_OCR_SPACE_URL=https://api.ocr.space/parse/image`
|
|
- `MINING_CHECKER_OCR_SPACE_API_KEY=...`
|
|
- `MINING_CHECKER_OCR_SPACE_LANGUAGE=eng`
|
|
- `MINING_CHECKER_OCR_SPACE_ENGINE=2`
|
|
- `MINING_CHECKER_OCR_SPACE_SCALE=true`
|
|
- `MINING_CHECKER_OCR_SPACE_DETECT_ORIENTATION=true`
|
|
- `MINING_CHECKER_OCR_SPACE_IS_TABLE=false`
|
|
- `MINING_CHECKER_OCR_SPACE_TIMEOUT=25`
|
|
- `MINING_CHECKER_TESSERACT_BIN=/usr/bin/tesseract`
|
|
- `MINING_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
|
|
|
|
Der Endpunkt `POST /api/mining-checker/v1/projects/{projectKey}/fx-refresh` delegiert den Abruf an das Modul `fx-rates`. Der Mining-Checker speichert dabei keine eigenen FX-Snapshots mehr, sondern referenziert die `fetch_id` aus `fx-rates`.
|
|
|
|
Empfohlene Umgebungsvariablen:
|
|
|
|
- `MINING_CHECKER_FX_PROVIDER=currencyapi`
|
|
- `MINING_CHECKER_FX_URL=https://currencyapi.net`
|
|
- `MINING_CHECKER_FX_CURRENCIES_URL=https://currencyapi.net`
|
|
- `MINING_CHECKER_FX_API_KEY=...`
|
|
- `MINING_CHECKER_FX_TIMEOUT=10`
|
|
- `MINING_CHECKER_FX_CACHE_TTL=21600`
|
|
- `MINING_CHECKER_FX_AUTO_FETCH_ON_MISS=false`
|
|
|
|
Optionaler JSON-Body:
|
|
|
|
- `base`: Standard `EUR`
|
|
- `symbols`: wird aktuell ignoriert; der Mining-Checker speichert immer den kompletten Waehrungssatz des Fetches
|
|
|
|
Beispiel:
|
|
|
|
```json
|
|
{
|
|
"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.
|
|
|
|
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.
|
|
|
|
Mit `POST /api/mining-checker/v1/projects/{projectKey}/currencies-refresh` kann die Waehrungstabelle einmalig oder bei Bedarf aus `GET /api/v2/currencies?output=json&key=...` synchronisiert werden. Dabei werden Code, Name, Symbol und Sortierung in `miningcheck_currencies` gespeichert.
|
|
|
|
Die im Tab `Waehrungen` ausgewaehlten Favoriten werden in `miningcheck_settings.preferred_currencies` gespeichert. Dadurch ist die Auswahl geraeteuebergreifend verfuegbar. Fuer bestehende Installationen ist dafuer einmal ein Schema-Upgrade noetig.
|