Zum Hauptinhalt springen

Feedback an cockpitOS

Mit Feedback können alle eingeloggten Nutzer Fehler, Wünsche, Änderungsideen oder Fragen zum Dashboard melden — ohne technische Details kennen zu müssen.

Faustregel

Erster Schritt bei etwas, das komisch aussieht oder nicht geht: Claude oder Robi fragen, bevor es an Kolleginnen und Kollegen geht.

Du musst nicht wissen, woran es technisch liegt. Reicht als Nachricht:

  • was du siehst, in deinen Worten
  • Screenshot oder Link zur Seite

Beispiel: „Bei den News wird immer ein KI-Bild mitveröffentlicht, das eigentliche Bild ist klein und verpixelt“ plus Link. Das reicht. Der Assistent schaut selbst nach.

Erst wenn der Assistent nicht weiterkommt: Button Feedback oder Kollegin/Kollege.

Was

  • Schwebender Button Feedback unten rechts im Dashboard
  • Kurzes Formular: Art wählen, beschreiben, optional Screenshot
  • cockpitOS speichert automatisch Seite, Center, Rolle und Version mit
  • Robi und Claude können denselben Eintrag über MCP anlegen. In der Inbox steht Von: cockpitOS-Assistent — ein Name für beide, kein Modell.
  • Der Ticket-Text steht beim Anlegen fest. Agenten können später mit messageAppend ergänzen (nicht bei Status Erledigt).

Warum

Damit Redaktion und Center-Teams Probleme direkt aus dem Arbeitskontext melden können — und Entwicklung alle Infos für die Umsetzung erhält.

Wer ist betroffen

RolleKann sendenSieht
Alle Dashboard-NutzerJaEigene Einträge unter Mein Konto → Meine Feedback-Einträge
Super AdminJaSystem → Feedback-Inbox inkl. „Für SMG Coding Agents kopieren“
info

Besucher-Feedback (QR, Companion, Chatbot) bleibt unter Community & Feedback → Feedback — das ist ein separates Modul.

Wo

AktionPfad
Feedback sendenButton Feedback (unten rechts)
Eigene MeldungenNutzer-Menü → Meine Feedback-Einträge oder /dashboard/account/feedback
Entwickler-InboxSystem → Feedback-Inbox (nur Super Admin)

So testen

  1. Als Redaktion anmelden, irgendeine Seite öffnen (z. B. Webseiten-Inhalte).
  2. Feedback klicken → Fehler → kurz beschreiben → Absenden.
  3. Unter Meine Feedback-Einträge Status prüfen: Fehler/Änderung werden In Arbeit, Wunsch/Frage bleiben Neu.
  4. Glocke und E-Mail prüfen, sobald der Status wechselt.
  5. Als Super Admin Feedback-Inbox öffnen → Antworttext + Status.

Umsetzung mit SMG Coding Agents (sicher)

main rollt das Dashboard auf Render automatisch aus. Deshalb gilt:

  1. Zu Fehlern und Änderungen kann ein Vorschlag vorbereitet werden, sobald die Automation verbunden ist. Neue Meldungen gehen automatisch. Ältere (Status Neu): Inbox öffnen → An SMG Coding Agents senden. Alternativ im Chat: „Es gab Feedback FB-…, bitte abarbeiten“.
  2. SMG Coding Agents arbeiten auf einem Feature-Branch und öffnen einen Pull Request — kein Push auf main.
  3. Im Chat „Merge“ sagen, wenn der Vorschlag passt. Ohne dieses Wort wird nicht gemergt.
  4. Nach dem Merge: Health https://dashboard.cockpit-os.de/api/health. Erst wenn das grün ist: Status Erledigt + Antwort an den Melder (Glocke und E-Mail).
  5. Health rot: Ticket bleibt In Arbeit. Schnellster Weg zurück: Render → mallos-dashboardRollback. Danach Revert auf main.

Wünsche und Fragen werden nicht automatisch umgesetzt. Schema, Auth, Middleware, Dynamic Routes ebenfalls nicht.

Cloud-Läufe sind kein Extra-Abo. Sie zählen zum Cursor-Kontingent des Teams (Token). Nach dem Inklusiv-Kontingent gilt On-Demand zum Modellpreis. Acht alte Tickets auf einmal = acht Läufe — deshalb einzeln senden, nicht in Serie.

Regel für Agenten: .cursor/rules/product-feedback-cursor-workflow.mdc.

Betrieb

VariableZweck
COCKPIT_FEEDBACK_TEAMS_WEBHOOK_URLOptional: Teams-Nachricht bei neuem Feedback. Nicht die Kanal-URL aus Teams kopieren — siehe unten.
CURSOR_FEEDBACK_AUTOMATION_WEBHOOK_URLOptional: Webhook der SMG-Coding-Agents-Automation. Nach dem Speichern kopieren.
CURSOR_FEEDBACK_AUTOMATION_API_KEYAPI-Key der Automation (Bearer). Wird auch für Agent-PATCH akzeptiert, falls COCKPIT_FEEDBACK_AGENT_SECRET abweicht.
CURSOR_FEEDBACK_AUTOMATION_TIMEOUT_MSOptional: Webhook-Timeout in ms (Standard 45000, min. 5000, max. 120000).
COCKPIT_FEEDBACK_AGENT_SECRETBearer für GET/POST/PATCH /api/product-feedback/agent (Cloud Agent ohne AgencyOS-Key).

Schema (additiv, 2026-09-07): product_feedback.resolutionNote, cursorPrUrl, claimedAt — SQL 20260907140000_product_feedback_agent_SAFE.sql. Ohne diese Spalten schlägt die Inbox fehl.

Teams: Kanal Coding

Empfohlen: Meldungen in den Team-Kanal Coding (nicht den öffentlichen Updates-Release-Kanal).

Variante A — Kanal-Menü (wenn sichtbar)

  1. Kanal CodingWorkflows (fehlt bei manchen Tenants — dann Variante B/C)
  2. Vorlage Post to a channel when a webhook request is received
  3. Kanal Coding → speichern → HTTP POST URL kopieren

Variante B — Workflows-App in Teams (wenn im Kanal-Menü nichts da ist)

  1. Teams links Apps → nach Workflows suchen → installieren (Team-weit oder für dich)
  2. Workflows öffnen → Erstellen → Vorlage Post to a channel when a webhook request is received
    • oder Leer erstellen → Trigger: When a Teams webhook request is received
    • Aktion: Post message in a chat or channel → Team + Kanal Coding
  3. Speichern → HTTP POST URL aus dem Trigger kopieren

Variante C — Power Automate im Browser

  1. make.powerautomate.comErstellenAutomatisierter Cloudflow
  2. Trigger: When a Teams webhook request is received
  3. Aktion: Post message in a chat or channel → Kanal Coding
  4. Flow speichern → Webhook-URL aus dem Trigger kopieren

Env setzen

COCKPIT_FEEDBACK_TEAMS_WEBHOOK_URL="https://prod-….logic.azure.com/workflows/…"

In Render (Dashboard) oder lokal apps/dashboard/.env.localnicht committen.

Test:

curl -X POST "$COCKPIT_FEEDBACK_TEAMS_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d '{"type":"message","text":"Test Feedback-Webhook — Coding OK","message":"Test Feedback-Webhook — Coding OK"}'

cockpitOS sendet eine Adaptive Card im Webhook-Body:

  • adaptiveCard — für Power Automate (empfohlen)
  • attachments[0].content — Alternative / Vorlagen-Flows

Flow auf Adaptive Card umstellen

  1. Schritt „Nachricht veröffentlichen“ löschen (Post message — nicht für Cards)
  2. + Neuer SchrittAdaptive Card in einem Chat oder Kanal posten
  3. Veröffentlichen als: Flow-Bot · Kanal: Coding · Team: cockpitOS
  4. Feld Adaptive Cardfx → Ausdruck:
triggerBody()?['adaptiveCard']

Falls leer: triggerBody()?['attachments'][0]['content']

  1. Speichern

Optional JSON analysieren entfernen — bei Cards nicht nötig.

Test:

curl -X POST "$COCKPIT_FEEDBACK_TEAMS_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d @- <<'EOF'
{
"type": "message",
"adaptiveCard": {
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.5",
"body": [
{ "type": "TextBlock", "text": "Test Card FB-MANUAL", "weight": "Bolder", "size": "Large" },
{ "type": "TextBlock", "text": "Wenn du das als Card siehst, passt der Flow.", "wrap": true }
]
}
}
EOF

Ohne Webhook: Feedback funktioniert trotzdem — Inbox unter System → Feedback-Inbox bleibt die Quelle der Wahrheit.

Ausführliche Webhook-Anleitung: docs/TEAMS-UPDATES-KANAL.md — gleiches Muster, anderer Kanal.

Screenshots werden unter /uploads/product-feedback/ gespeichert (lokal) bzw. über das bestehende Upload-Setup.

API (intern)

  • POST /api/product-feedback — Feedback anlegen (Session); Fehler/Änderung → SMG-Coding-Agents-Webhook + Status In Arbeit
  • GET /api/product-feedback — Liste (eigene oder alle als Super Admin)
  • PATCH /api/product-feedback/[id] — Status + resolutionNote (nur Super Admin); benachrichtigt den Melder
  • POST /api/product-feedback/screenshot — optionaler Screenshot
  • GET/POST /api/product-feedback/agent — Liste / Claim (Bearer COCKPIT_FEEDBACK_AGENT_SECRET)
  • PATCH /api/product-feedback/agent/[id] — Status; done nur bei grünem /api/health + Antworttext
  • GET/POST/PATCH /api/agencyos/v1/product-feedback — AgencyOS/MCP: listen, anlegen (type + message, Melder cockpitOS-Assistent), Claim (id / FB-…)

Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /dashboard/product-feedback