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
messageAppendergä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
| Rolle | Kann senden | Sieht |
|---|---|---|
| Alle Dashboard-Nutzer | Ja | Eigene Einträge unter Mein Konto → Meine Feedback-Einträge |
| Super Admin | Ja | System → Feedback-Inbox inkl. „Für SMG Coding Agents kopieren“ |
Besucher-Feedback (QR, Companion, Chatbot) bleibt unter Community & Feedback → Feedback — das ist ein separates Modul.
Wo
| Aktion | Pfad |
|---|---|
| Feedback senden | Button Feedback (unten rechts) |
| Eigene Meldungen | Nutzer-Menü → Meine Feedback-Einträge oder /dashboard/account/feedback |
| Entwickler-Inbox | System → Feedback-Inbox (nur Super Admin) |
So testen
- Als Redaktion anmelden, irgendeine Seite öffnen (z. B. Webseiten-Inhalte).
- Feedback klicken → Fehler → kurz beschreiben → Absenden.
- Unter Meine Feedback-Einträge Status prüfen: Fehler/Änderung werden In Arbeit, Wunsch/Frage bleiben Neu.
- Glocke und E-Mail prüfen, sobald der Status wechselt.
- Als Super Admin Feedback-Inbox öffnen → Antworttext + Status.
Umsetzung mit SMG Coding Agents (sicher)
main rollt das Dashboard auf Render automatisch aus. Deshalb gilt:
- 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“.
- SMG Coding Agents arbeiten auf einem Feature-Branch und öffnen einen Pull Request — kein Push auf
main. - Im Chat „Merge“ sagen, wenn der Vorschlag passt. Ohne dieses Wort wird nicht gemergt.
- 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). - Health rot: Ticket bleibt In Arbeit. Schnellster Weg zurück: Render →
mallos-dashboard→ Rollback. Danach Revert aufmain.
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
| Variable | Zweck |
|---|---|
COCKPIT_FEEDBACK_TEAMS_WEBHOOK_URL | Optional: Teams-Nachricht bei neuem Feedback. Nicht die Kanal-URL aus Teams kopieren — siehe unten. |
CURSOR_FEEDBACK_AUTOMATION_WEBHOOK_URL | Optional: Webhook der SMG-Coding-Agents-Automation. Nach dem Speichern kopieren. |
CURSOR_FEEDBACK_AUTOMATION_API_KEY | API-Key der Automation (Bearer). Wird auch für Agent-PATCH akzeptiert, falls COCKPIT_FEEDBACK_AGENT_SECRET abweicht. |
CURSOR_FEEDBACK_AUTOMATION_TIMEOUT_MS | Optional: Webhook-Timeout in ms (Standard 45000, min. 5000, max. 120000). |
COCKPIT_FEEDBACK_AGENT_SECRET | Bearer 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)
- Kanal Coding → ⋯ → Workflows (fehlt bei manchen Tenants — dann Variante B/C)
- Vorlage Post to a channel when a webhook request is received
- Kanal Coding → speichern → HTTP POST URL kopieren
Variante B — Workflows-App in Teams (wenn im Kanal-Menü nichts da ist)
- Teams links Apps → nach Workflows suchen → installieren (Team-weit oder für dich)
- 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
- Speichern → HTTP POST URL aus dem Trigger kopieren
Variante C — Power Automate im Browser
- make.powerautomate.com → Erstellen → Automatisierter Cloudflow
- Trigger: When a Teams webhook request is received
- Aktion: Post message in a chat or channel → Kanal Coding
- 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.local — nicht 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
- Schritt „Nachricht veröffentlichen“ löschen (Post message — nicht für Cards)
- + Neuer Schritt → Adaptive Card in einem Chat oder Kanal posten
- Veröffentlichen als: Flow-Bot · Kanal: Coding · Team: cockpitOS
- Feld Adaptive Card → fx → Ausdruck:
triggerBody()?['adaptiveCard']
Falls leer: triggerBody()?['attachments'][0]['content']
- 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 ArbeitGET /api/product-feedback— Liste (eigene oder alle als Super Admin)PATCH /api/product-feedback/[id]— Status +resolutionNote(nur Super Admin); benachrichtigt den MelderPOST /api/product-feedback/screenshot— optionaler ScreenshotGET/POST /api/product-feedback/agent— Liste / Claim (Bearer COCKPIT_FEEDBACK_AGENT_SECRET)PATCH /api/product-feedback/agent/[id]— Status;donenur bei grünem/api/health+ AntworttextGET/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