Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  import-insights.test.ts

  Sprache: JAVA
 

import fs from "node:fs/promises";
import path from "node:path";
import { describe, expect, it } from "vitest";
import { listMemoryWikiImportInsights } from "./import-insights.js";
import { renderWikiMarkdown } from "./markdown.js";
import { createMemoryWikiTestHarness } from "./test-helpers.js";

const { createVault } = createMemoryWikiTestHarness();

describe("listMemoryWikiImportInsights", () => {
  it("clusters ChatGPT import pages by topic and extracts digest fields", async () => {
    const { rootDir, config } = await createVault({
      prefix: "memory-wiki-import-insights-",
      initialize: true,
    });
    await fs.mkdir(path.join(rootDir, "sources"), { recursive: true });
    await fs.writeFile(
      path.join(rootDir, "sources""chatgpt-travel.md"),
      renderWikiMarkdown({
        frontmatter: {
          pageType: "source",
          id: "source.chatgpt.travel",
          title: "ChatGPT Export: BA flight receipts process",
          sourceType: "chatgpt-export",
          riskLevel: "low",
          riskReasons: [],
          labels: ["domain/personal""area/travel""topic/travel"],
          createdAt: "2026-01-11T14:07:58.552Z",
          updatedAt: "2026-01-11T14:08:45.377Z",
        },
        body: [
          "# ChatGPT Export: BA flight receipts process",
          "",
          "## Auto Digest",
          "- User messages: 2",
          "- Assistant messages: 2",
          "- First user line: how do i get receipts?",
          "- Last user line: that option does not exist",
          "- Preference signals:",
          "  - prefers direct airline receipts",
          "",
          "## Active Branch Transcript",
          "### User",
          "",
          "how do i get receipts?",
          "",
          "### Assistant",
          "",
          "Try the BA receipt request flow first.",
          "",
        ].join("\n"),
      }),
      "utf8",
    );
    await fs.writeFile(
      path.join(rootDir, "sources""chatgpt-health.md"),
      renderWikiMarkdown({
        frontmatter: {
          pageType: "source",
          id: "source.chatgpt.health",
          title: "ChatGPT Export: Migraine Medication Advice",
          sourceType: "chatgpt-export",
          riskLevel: "high",
          riskReasons: ["health"],
          labels: ["domain/personal""area/health""topic/health"],
          updatedAt: "2026-01-31T20:18:00.000Z",
        },
        body: [
          "# ChatGPT Export: Migraine Medication Advice",
          "",
          "## Auto Digest",
          "- Auto digest withheld from durable-candidate generation until reviewed.",
          "- Risk reasons: health content",
          "- First user line: i have a migraine, pink or yellow?",
          "- Last user line: should i take this now?",
          "- Preference signals:",
          "  - prefers color-coded medication guidance",
          "",
          "## Active Branch Transcript",
          "### User",
          "",
          "i have a migraine, pink or yellow?",
          "",
          "### Assistant",
          "",
          "You're right, let's reset and stick to safe dosing guidance.",
          "",
        ].join("\n"),
      }),
      "utf8",
    );

    const result = await listMemoryWikiImportInsights(config);

    expect(result.sourceType).toBe("chatgpt");
    expect(result.totalItems).toBe(2);
    expect(result.totalClusters).toBe(2);
    expect(result.clusters[0]).toMatchObject({
      key: "topic/health",
      label: "Health",
      itemCount: 1,
      highRiskCount: 1,
      withheldCount: 1,
    });
    expect(result.clusters[1]).toMatchObject({
      key: "topic/travel",
      label: "Travel",
      itemCount: 1,
      preferenceSignalCount: 1,
    });
    expect(result.clusters[1]?.items[0]).toMatchObject({
      title: "BA flight receipts process",
      riskReasons: [],
      activeBranchMessages: 0,
      userMessageCount: 2,
      assistantMessageCount: 2,
      firstUserLine: "how do i get receipts?",
      lastUserLine: "that option does not exist",
      assistantOpener: "Try the BA receipt request flow first.",
      summary: "Try the BA receipt request flow first.",
      candidateSignals: ["prefers direct airline receipts"],
      correctionSignals: [],
      preferenceSignals: ["prefers direct airline receipts"],
      digestStatus: "available",
    });
    const healthItem = result.clusters
      .flatMap((cluster) => cluster.items)
      .find((item) => item.title === "Migraine Medication Advice");
    expect(healthItem).toMatchObject({
      summary:
        "Sensitive health chat withheld from durable-memory extraction because it touches health.",
      candidateSignals: [],
      correctionSignals: [],
      preferenceSignals: [],
      userMessageCount: 1,
      assistantMessageCount: 1,
    });
    expect(healthItem?.firstUserLine).toBeUndefined();
    expect(healthItem?.lastUserLine).toBeUndefined();
    expect(healthItem?.assistantOpener).toBeUndefined();
  });
});

Messung V0.5 in Prozent
C=100 H=99 G=99

¤ Dauer der Verarbeitung: 0.10 Sekunden  (vorverarbeitet am  2026-06-10) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik