# Trading Tool Prototype — MariaDB Go-Webapp für Trading-Anfragen, automatische Quest-Erzeugung, MariaDB und Pocket ID Login via OIDC. ## Webinterface Ja. Enthalten sind: - Login-Seite über Pocket ID / OIDC - Dashboard für Trading-Anfragen - Formular für neue Ankauf-/Verkaufs-Anfragen - Quest-Tabelle für Mining, Logistik, Crafting usw. - Auftragnehmer können Status und Notizen/Gegenvorschläge setzen ## Auftragnehmer beeinflussen den Workflow Ja, im aktuellen Prototyp über Quest-Status und Notizen: - `accepted` - `in_progress` - `done` - `blocked` - `change_requested` - `cancelled` Alle Änderungen werden zusätzlich in `quest_updates` protokolliert. Damit kann später die Workflow-Engine z. B. bei `blocked` eine zusätzliche Beschaffungsquest oder bei `change_requested` eine Trading-Freigabe erzeugen. ## Pocket ID Setup In Pocket ID eine OIDC-App anlegen: - Callback URL: `http://localhost:8080/auth/callback` - Scopes: `openid profile email` Pocket ID stellt Client ID, Client Secret und Issuer URL bereit. Die Issuer URL ist normalerweise die Basis-URL deiner Pocket-ID-Instanz; die Discovery URL ist `/.well-known/openid-configuration`. ## Start ```bash cp .env.example .env docker compose up -d set -a; source .env; set +a go mod tidy go run ./cmd/server ``` Dann öffnen: http://localhost:8080 ## Architektur - Go-Standardbibliothek für HTTP, Templates, Cookies, OIDC-Discovery und JWT-RS256-Prüfung. - Einzige externe Go-Abhängigkeit: `github.com/go-sql-driver/mysql` als MariaDB/MySQL-Treiber. - Tabellen: `users`, `departments`, `items`, `trade_requests`, `quests`, `quest_updates`, `events`, `workflow_rules`. ## Nächste sinnvolle Schritte - Workflow-Regeln aus `workflow_rules.actions_json` ausführen statt Default-Schritte im Code. - Rollen/Gruppen aus Pocket ID Claims auf Trading/Admin/Abteilungen mappen. - Lagerbestand und Stücklisten/BOM für Crafting ergänzen. - API-Endpunkte für externe Quest-Systeme ergänzen. ## Admin-Konfiguration Nach dem Login gibt es im Dashboard den Link **Admin-Konfiguration** (`/admin`). Dort kannst du ohne Codeänderung konfigurieren: - globale Einstellungen wie Währung, Standardmarge, Auto-Quest-Erzeugung und Admin-E-Mails - Abteilungen - Items und Ressourcen - Request- und Quest-Statuswerte - Quest-Templates inklusive zuständiger Abteilung, Reihenfolge und Belohnungsfaktor - Workflow-Regeln als JSON Standardmäßig darf jeder eingeloggte Nutzer die Admin-Seite öffnen. Setze in `/admin` bei `admin_emails` eine kommagetrennte Liste, z. B. `you@example.com,lead@example.com`, dann erhalten nur diese Pocket-ID-Nutzer Zugriff. Bestehende Installationen erhalten die Admin-Tabellen über `migrations/002_admin.sql` automatisch beim nächsten Start.