init
release-tag / release-image (push) Successful in 2m40s

This commit is contained in:
2026-05-27 02:34:11 +02:00
parent 0e567d8ab2
commit 309e94d362
19 changed files with 1037 additions and 1 deletions
+74 -1
View File
@@ -1,2 +1,75 @@
# startrading
# 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.