import { Router } from 'express';
const router = Router();
router.get('/', (req, res) => {
if (!req.session?.user) {
const baseRoot = process.env.WEB_BASE_PATH || '/ucp';
return res.redirect(`${baseRoot}/auth/discord`);
}
const guildId = typeof req.query.guildId === 'string' ? req.query.guildId : '';
const baseRoot = process.env.WEB_BASE_PATH || '/ucp';
const baseDashboard = `${baseRoot}/dashboard`;
const baseAuth = `${baseRoot}/auth`;
const baseApi = `${baseRoot}/api`;
const baseScript = `
const BASE_ROOT = '${baseRoot}';
const BASE_DASH = '${baseDashboard}';
const BASE_API = '${baseApi}';
const BASE_AUTH = '${baseAuth}';
const prependBase = (url) => {
if (typeof url !== 'string') return url;
if (BASE_ROOT && url.startsWith(BASE_ROOT + '/')) return url;
if (url.startsWith('/')) return (BASE_ROOT || '') + url;
return url;
};
const _fetch = window.fetch.bind(window);
window.fetch = (u, o) => _fetch(prependBase(u), o);
const gotoDashboard = (guildId) => {
const qs = guildId ? ('?guildId=' + encodeURIComponent(guildId)) : '';
window.location.href = (BASE_DASH || '/dashboard') + qs;
};
`;
// TODO: TICKETS: Dashboard-Layout neu aufsetzen.
// - Filter/Status/Live-Ansicht statt statischem Inline-HTML.
// - Ticketdaten per API/WebSocket laden und live aktualisieren.
// TODO: MODULE: Musik-Modul als toggelbares Modul mit Status- und Queue-Ansicht einbinden.
// - Play/Pause/Skip/Loop als UI-Controls anbieten und Bot-Status spiegeln.
// TODO: AUTOMOD: Konfiguration (Schwellenwerte, Filter, Logging) im Dashboard editierbar machen.
// - Grenzwerte, Whitelist/Badwords und Log-Ziel in ein Formular ueberfuehren.
const svgIcon = (paths: string, cls = 'icon', viewBox = '0 0 24 24') =>
``;
const sparkline = (cls: string, stroke: string, d: string) =>
``;
const icons = {
overview: svgIcon(`
Guild
ID: -
Guild Infos
Activity
Guild Logs
Schnellzugriff
Wichtige Funktionen auf einen Blick
Tickets
Übersicht, Pipeline, SLA, Automationen, Knowledge-Base.
Ticketliste
Links auswählen, Details im Modal. Plus öffnet Panel-Erstellung.
Support-Login Status
Aktive Supporter und letzte Sessions.
Aktiv
Letzte Sessions
Status-Pipeline
Tickets nach Phase. Status per Dropdown ändern.
Neu
In Bearbeitung
Warten auf User
Erledigt
SLA / Response-Zeiten
Average Time to Claim / First Response.
SLA pro Supporter
| Supporter | Tickets | TTC | TTFR |
|---|
SLA pro Tag
| Datum | Tickets | TTC | TTFR |
|---|
Automationen
Regeln fr Ticket-Aktionen.
Regel bearbeiten
Knowledge-Base
Artikel fr Self-Service.
Automod Einstellungen
Automod pro Guild aktivieren und Regeln konfigurieren.
Willkommensnachrichten
Embed konfigurieren und Feature aktivieren.
Dynamic Voice
Lobby wählen, Channel-Namen & Limits setzen.
Module
Birthday
Automatische Glückwünsche je Server.
Nutze {user} als Platzhalter.
Gespeicherte Geburtstage
Einträge werden per /birthday angelegt.
Reaction Roles
Reaktionen verteilen oder entfernen Rollen.
Reaction Role Nachrichten
Bestehende Setups bearbeiten oder syncen.
Statuspage
Services verwalten und Checks steuern.
Services
Status, Uptime, letzter Check
Server Stats
Kategorie und Counter verwalten.
Statistiken
Counter und Format anpassen.
Events
Termine planen und Erinnerungen senden.
Guilds
-
aktiv (24h): -
Uptime
-
Start: -
Aktivität (letzte 24h)
Events/Commands pro Stunde
Logs
Neueste Einträge
Einstellungen speichern
Logging
Falls leer, wird der allgemeine Log Channel genutzt.
Ticket
Details
Ticket-ID
-
Status
-
Prioritaet
-
Erstellt am
-
Ersteller
-
Ticket-Panel erstellen
Channel und Kategorien definieren, dann Panel senden.
Support-Login Einstellungen
Channel, Texte und Buttons fuer das Support-Panel.
Event erstellen/bearbeiten
Titel, Zeit und Reminder festlegen.