// Next.js ruft onRequestError für JEDEN serverseitigen Fehler auf — RSC-
// Rendering, Route-Handler und Server Actions — mit Request- und Routen-
// Kontext. Wir schreiben das in die SystemLog-Collection, damit Fehler nicht
// nur in der pm2-Konsole landen, sondern unter /de/admin/logs sichtbar sind.
//
// Läuft potenziell in der Edge-Runtime; Mongoose-Import daher erst im
// Node-Zweig per dynamischem import(), sonst bricht das Edge-Bundle.
export async function onRequestError(
  error: unknown,
  request: { path?: string; method?: string; headers?: Record<string, string> },
  context: { routerKind?: string; routePath?: string; routeType?: string }
) {
  if (process.env.NEXT_RUNTIME !== "nodejs") return;
  try {
    const { logSystem } = await import("@/lib/systemLog");
    const err = (error ?? {}) as { message?: string; stack?: string; digest?: string };
    const routeType = context?.routeType || "";
    const source =
      routeType === "route"
        ? "route"
        : routeType === "action"
          ? "action"
          : "render";
    const headers = request?.headers || {};
    await logSystem({
      level: "error",
      source,
      message: err.message || String(error) || "Unbekannter Serverfehler",
      stack: err.stack || "",
      digest: err.digest || "",
      route: request?.path || context?.routePath || "",
      method: request?.method || "",
      context: {
        routerKind: context?.routerKind || "",
        routePath: context?.routePath || "",
        routeType: context?.routeType || "",
        referer: headers.referer || headers.referrer || "",
        userAgent: headers["user-agent"] || "",
      },
    });
  } catch (e) {
    console.error("[instrumentation] onRequestError-Logging fehlgeschlagen:", e);
  }
}
