Apps
EN — EnglishLogin

🧪 Diese Plattform befindet sich in der Beta-Phase. Funktionen können sich ändern und es können Fehler auftreten. Danke für dein Feedback!

Technische Architektur

Systemdesign, Datenpipeline und Implementierungsdetails.

Systemübersicht

┌──────────────────────────────────────────────────────────────┐
│                     TellDear Architecture                       │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│  ┌─────────┐    ┌──────────────┐    ┌───────────────────┐   │
│  │ Browser │───▶│  PHP Router  │───▶│  Page Controllers │   │
│  │  (UI)   │◀───│  (Clean URL) │◀───│  (index, aspect,  │   │
│  └─────────┘    └──────────────┘    │   analyze, graph) │   │
│       │                              └────────┬──────────┘   │
│       │                                       │              │
│       │         ┌─────────────────────────────┤              │
│       │         │                             │              │
│       ▼         ▼                             ▼              │
│  ┌─────────┐  ┌──────────────┐  ┌───────────────────────┐  │
│  │ JSON    │  │  Taxonomy    │  │     Graph Renderer    │  │
│  │  API    │  │   Parser     │  │  (D3.js compatible)   │  │
│  └────┬────┘  └──────┬───────┘  └───────────────────────┘  │
│       │              │                                      │
│       │              ▼                                      │
│       │  ┌───────────────────────┐                          │
│       │  │    Data Layer         │                          │
│       │  │  ┌─────────────────┐  │                          │
│       │  │  │taxonomy_init.json│ │ Nodes, Edges, Classes   │
│       │  │  ├─────────────────┤  │                          │
│       │  │  │  aid_lf.json    │  │ Verification Steps      │
│       │  │  ├─────────────────┤  │                          │
│       │  │  │  ontology.pro   │  │ Prolog Knowledge Base   │
│       │  │  └─────────────────┘  │                          │
│       │  └───────────────────────┘                          │
│       │                                                      │
│       ▼                                                      │
│  ┌──────────────────────────────────────┐                   │
│  │         Analyzer Engine              │                   │
│  │  ┌──────────┐   ┌────────────────┐   │                   │
│  │  │ Heuristic│   │ Claude API     │   │                   │
│  │  │ (client) │   │ (server-side)  │   │                   │
│  │  └──────────┘   └────────────────┘   │                   │
│  └──────────────────────────────────────┘                   │
│                                                              │
└──────────────────────────────────────────────────────────────┘

Datenmodell

taxonomy_init.json

Der primäre Datenspeicher mit allen Graph-Knoten und -Kanten. Jeder Knoten hat:

{
  "id": "confirmation_bias",        // eindeutiger Bezeichner (snake_case)
  "label": "Confirmation Bias",     // lesbarer Name
  "class": "bias",                  // Knotentyp (bestimmt die Dimension)
  "description": "The tendency...", // Definition
  "fol_pattern": "..."              // optionale Formel in Prädikatenlogik erster Stufe
}

aid_lf.json

Das Atomic Instruction Dataset mit binären Verifikationsschritten für jeden Aspekt:

{
  "id": "ad_hominem",
  "name": "Ad Hominem",
  "dimension": "d1_logical_fallacies",
  "category": "informal_fallacies",
  "verification_steps": [
    {"step": 1, "question": "Does the argument attack a person...?", "type": "binary"},
    {"step": 2, "question": "Is the personal attribute relevant...?", "type": "binary"},
    {"step": 3, "question": "Does it conclude the claim is false...?", "type": "binary"}
  ],
  "fol_pattern": "∀x(Person(x) ∧ HasFlaw(x) ⇒ Invalid(Claim(x)))",
  "smt_expected": "standoff"
}

ontology.pro

Eine parallele Darstellung in Prolog für symbolisches Schlussfolgern. Enthält dieselben taxonomischen Beziehungen wie die JSON-Daten, aber in einer für logische Programmierabfragen geeigneten Form. Kann mit SWI-Prolog für Inferenz und Konsistenzprüfung geladen werden.

PHP-Backend

TaxonomyParser.php

Zentrale Graph-Engine. Lädt taxonomy_init.json + aid_lf.json in eine In-Memory-Adjazenzliste.

Wichtige Methoden: getNode(), search(), fuzzySearch(), getChildren(), getBreadcrumb(), getRelated(), getAspectsByDimension(), getAidData()

GraphRenderer.php

Transformiert den Graphen in D3.js-kompatibles JSON ({nodes, links}). Übernimmt Farbzuordnung nach Knotenklasse und Label-Generierung.

Analyzer.php

Serverseitiger Textanalysator. Sendet die Verifikationsschritte jedes Aspekts als Batch an die LLM-API, parst Antworten und aggregiert Konfidenzwerte. Fällt auf heuristischen Modus zurück, wenn kein API-Key konfiguriert ist.

Layout.php

Gemeinsame UI-Komponenten: HTML-Head mit Tailwind CSS, Navigation, Footer, klassenspezifische Badges und Relationstyp-Badges.

Analysepipeline

Die 5-stufige Analysepipeline verarbeitet Text durch zunehmend tiefgehende Analyse:

1

Dissector

Segmentiert Eingabetext in elementare Diskurseinheiten (EDUs). Jeder Satz wird als Behauptung, Prämisse, Widerlegung oder Aussage klassifiziert – mittels Schlüsselwort-Indikatoren und LLM-Klassifikation.

2

Strukturelle Zuordnung

Bildet rhetorische Relationen zwischen EDUs ab: welche Prämissen welche Behauptungen stützen, welche Aussagen welche Argumente widerlegen. Erstellt einen Argumentgraphen.

3

FOL-Verifikation

Übersetzt natürlichsprachliche Argumente in Formeln der Prädikatenlogik erster Stufe. Nutzt optional den Z3-SMT-Solver zur formalen Gültigkeitsprüfung. Erkennt strukturelle Musterverletzungen.

4

AID Scanner

Prüft alle Aspekte gegen den Text. Für jeden Aspekt werden binäre Verifikationsschritte ausgewertet. Frühzeitiger Abbruch: wenn Schritt 1 = „nein", werden die restlichen Schritte übersprungen. Konfidenz = Anteil der „ja"-Antworten.

5

X-Ray Formatter

Dedupliziert überlappende Erkennungen, sortiert nach Konfidenz, gruppiert nach Dimension und vergibt Schweregrad. Erzeugt den finalen Analysebericht.

JSON-API

Alle Daten sind über eine REST-ähnliche JSON-API zugänglich:

EndpointMethodeBeschreibung
/api?action=graphGETD3.js-Graph (Knoten + Kanten)
/api?action=node&id=XGETEinzelner Knoten mit Relationen, Kindern, AID-Daten
/api?action=search&q=XGETFuzzy-Suche über alle Aspekte
/api?action=dimensionsGETAlle Aspekte gruppiert nach Dimension
/api?action=treeGETVollständiger hierarchischer Baum
/api?action=analyzePOSTTiefgehende Textanalyse (Authentifizierung erforderlich)

Technologie-Stack

Backend

  • PHP 8.x (keine Framework-Abhängigkeiten)
  • JSON-dateibasierte Datenspeicherung
  • Prolog-Wissensbasis (SWI-Prolog-kompatibel)
  • cURL für LLM-API-Integration

Frontend

  • Tailwind CSS (CDN)
  • D3.js force-directed graph
  • Vanilla JavaScript (kein Framework)
  • Inter font (Google Fonts)

Analyse

  • Multi-Provider LLM-API für Tiefenanalyse
  • Clientseitiger heuristischer Fallback
  • Python-Pipeline (async, Pydantic-Modelle)
  • Z3-SMT-Solver-Integrationspunkt

Deployment

  • Apache mit mod_rewrite (.htaccess)
  • PHP-Entwicklungsserver für lokale Entwicklung
  • Keine Datenbank erforderlich
  • Keine externen PHP-Abhängigkeiten