Trading Tool
Webbasiertes Go/MariaDB-System für Trading-Anfragen, dynamische Workflows und abteilungsbezogene Quests.
Enthalten
- Go Webserver mit
net/httpundhtml/template - Pocket ID / OIDC Login
- MariaDB Datenbank
- automatische Migrationen
- Admin-Konfiguration
- Trading-Anfragen für Ankauf und Verkauf
- Workflow-Regeln mit
condition_jsonundactions_json - Quest-Templates
- Quest-Abhängigkeiten: nur die erste Quest ist offen, Folgequests warten
- automatische Freischaltung der nächsten Quest nach Abschluss der vorherigen Quest
- automatische Request-Statusberechnung
- Abteilungsportale unter
/departments - Auftragnehmer-Rückmeldungen, Blocker, Änderungswünsche und Abschlussmeldungen
- Dockerfile und Docker Compose
Start
cp .env.example .env
# Pocket ID Werte in .env eintragen
docker compose up --build
Pocket ID Callback URL:
http://localhost:8080/auth/callback
Wichtige Routen
/Trading Dashboard/requests/newneue Anfrage/departmentsAbteilungsportale/departments/{id}/questsQuest-Ansicht einer Abteilung/adminKonfiguration
Workflow Conditions
condition_json entscheidet, wann eine Workflow-Regel greift. Beispiele:
{
"kind": "buy",
"item_category": "weapon",
"quantity_min": 1,
"price_min": 1000
}
Unterstützte Felder:
kinditem_categoryquantity_minquantity_maxprice_minprice_max
actions_json enthält die Quest-Template-Typen in Reihenfolge:
["logistics_quote", "mining_procure", "crafting_order", "delivery"]
Die Reihenfolge erzeugt automatisch Abhängigkeiten. Quest 2 wartet auf Quest 1, Quest 3 wartet auf Quest 2 usw.
Statuslogik
Requests:
newin_progressblockedfulfilledcancelled
Quests:
waitingopenacceptedin_progressblockedchange_requesteddonecancelled
Wenn alle Quests eines Requests done sind, wird der Request automatisch auf fulfilled gesetzt.
Wenn eine Quest blocked ist, wird der Request auf blocked gesetzt.
Wenn eine Quest abgeschlossen wird, werden wartende Folgequests automatisch geöffnet, sobald alle Abhängigkeiten erledigt sind.
Hinweise zur Produktionsnutzung
Dieses Paket ist deutlich robuster als der erste Prototyp, ersetzt aber keine finale Sicherheits- und Lastprüfung für deine konkrete Umgebung. Vor echter Produktion solltest du mindestens erledigen:
- HTTPS und sichere Reverse-Proxy-Konfiguration
- langes zufälliges
SESSION_SECRET - restriktive
admin_emails - Backups für MariaDB
- Monitoring/Logging
- eventuell CSRF-Schutz für schreibende Formulare
- rollenbasierte Einschränkung pro Abteilung, falls nicht jeder eingeloggte Nutzer jede Abteilung sehen darf
Fehlerbehebung: [mysql] invalid connection
Diese Version setzt die MariaDB-Verbindungen bewusst kurzlebiger und führt Migrationen ohne multiStatements=true aus. Das verhindert, dass die App alte oder von MariaDB geschlossene TCP-Verbindungen aus dem Pool wiederverwendet.
Nach dem Update bitte neu bauen:
docker compose down
docker compose up --build
Falls du vorher mit einer leeren Testdatenbank gearbeitet hast und komplett neu starten möchtest:
docker compose down -v
docker compose up --build