Error Feedback Service + friendly error handling across all pages

- Error Feedback Service: POST /api/feedback saves to JSONL, GET with admin token
- ErrorFeedback component: warm amber tones, friendly messages, 'Report Issue' button
- Replaced ALL red-themed error displays across 15+ pages with ErrorFeedback
- Kind classification: network, auth, location, upgrade, default messages
- QA test suite v2: 8-layer testing (system, API, render, scenario, edge, mobile, perf, security)
- Browser-based visual QA with Playwright (Layer 9)
This commit is contained in:
root
2026-06-18 16:24:47 +02:00
parent 28be776c84
commit 14d7127e41
19 changed files with 1913 additions and 165 deletions
+13 -10
View File
@@ -2,6 +2,7 @@
import { useState, useEffect, useRef, Suspense, useCallback } from "react";
import { useAuth } from "@/lib/AuthContext";
import ErrorFeedback from "@/components/ErrorFeedback";
import { PERSONAS, getPersona } from "@/lib/personas";
import Link from "next/link";
import { useRouter } from "next/navigation";
@@ -339,16 +340,18 @@ function NurChat() {
{/* ── Error Message ── */}
{error && (
<div className="mx-4 mb-2 flex items-start gap-2 bg-red-900/20 border border-red-800/30 rounded-xl px-3 py-2.5">
<AlertTriangle size={14} className="text-red-400 shrink-0 mt-0.5" />
<p className="text-xs text-red-300 flex-1">{error}</p>
<button
onClick={() => setError(null)}
className="text-red-400 hover:text-red-300 text-xs"
>
</button>
</div>
<ErrorFeedback
error={error}
kind={
error.includes("Upgrade") || error.includes("upgrade") || error.includes("premium")
? "upgrade"
: error.includes("Network") || error.includes("network")
? "network"
: "default"
}
onRetry={() => setError(null)}
context="Nur AI chat"
/>
)}
{/* ── Input Area ── */}