Explorer
/tmp/restic-stage/reports-reference/content-extraction-content-matrix-20260702.md
← Zurück ↓ Download
# Content Extraction — Content-Matrix-Ansicht — 2026-07-02

**Status: Implementiert, lokal getestet. Rein read-only Auswertungsseite, keine neuen Daten, keine automatische Bewertung. Kein systemd, keine Nginx-Bindung.**

## Vorher-Pruefung (Schritt 1)
- ce_sources: 877, ce_items: 1, ce_ratings: 1, ce_notes: 1 (alle wie erwartet)
- YouTube Research lief unveraendert (MainPID 1952952, aktiv seit 12:33:39 UTC)
- knowledge.db mtime Baseline: 2026-07-02 12:39:57.497487969 UTC

## Backup-Pfade
- /opt/struktur/content-extraction/backups/db.py.20260703-092424.bak
- /opt/struktur/content-extraction/backups/app.py.20260703-092424.bak
- /opt/struktur/content-extraction/backups/index.html.20260703-092424.bak
- /opt/struktur/content-extraction/backups/items.html.20260703-092424.bak
- /opt/struktur/content-extraction/backups/content_extraction.db.20260703-092424.bak

## Geaenderte / neue Content-Extraction-Dateien
- db.py — neue Funktion list_content_matrix() (reine SELECT-Abfrage, JOIN ueber ce_items/ce_sources/LEFT JOIN ce_ratings, keine Inserts/Updates/Deletes)
- app.py — neue Route GET /matrix
- templates/matrix.html (neu) — Matrix-Tabelle mit allen geforderten Spalten
- templates/index.html — Navigationslink "Content-Matrix" ergaenzt
- templates/items.html — Navigationslink "Content-Matrix" ergaenzt (Konsistenz, keine Aenderung an bestehender Filter-/Suchlogik)

Keine Aenderung an: templates/sources.html, templates/item_detail.html, config.py, /opt/struktur/youtube-research/ (gesamter Ordner unangetastet).

## Neue Route /matrix
GET /matrix rendert templates/matrix.html mit dem Ergebnis von db.list_content_matrix(). Rein lesend, kein Query-Parameter, keine Schreiboperation.

## Sortierlogik (wie gefordert)
1. Nachahmbarkeit (nachahmbarkeit) absteigend
2. Erwarteter Nutzen: hoch vor mittel vor niedrig
3. Umsetzbarkeit: hoch vor mittel vor niedrig
4. Aufwand: niedrig vor mittel vor hoch
Umgesetzt per CASE-WHEN-Mapping in der ORDER BY-Klausel (SQL-Sortierschluessel 1-3 je Kategorie), da alphabetische Sortierung von "hoch/mittel/niedrig" nicht der gewuenschten Prioritaet entspricht. Items ohne Rating (LEFT JOIN, NULL-Werte) erscheinen am Ende.

## Matrix-Spalten (wie gefordert, alle vorhanden)
Kandidat-ID, Titel, Kanal, Content-Typ, Status, Nachahmbarkeit, Aufwand, Umsetzbarkeit, erwarteter Nutzen, Quelle/YouTube-ID (verlinkt), Link zur Detailansicht.

## Lokaler Test ohne systemd (Schritt 8)
App manuell gestartet: venv/bin/uvicorn app:app --host 127.0.0.1 --port 8100 (nohup, kein systemd-Unit), sauberer Start ohne Fehler.

| Test | Ergebnis |
|---|---|
| /health | 200 |
| /matrix | 200 — vorhandener Kandidat #1 sichtbar mit allen Feldern korrekt befuellt |
| /items | 200 — "1 von 1 Treffern" (unveraendert, Matrix-Link zusaetzlich sichtbar) |
| /sources | 200 — "877 von 877 Treffern" (unveraendert) |
| / (Startseite) | 200 — Content-Matrix-Link vorhanden |

### Getestete Matrix-Anzeige (Kandidat #1, vollstaendige Zeile)
```
ID: 1
Titel: Alle reden ueber Claude Skills... SO GEHT'S wirklich
Kanal: Mike Mildenberger
Content-Typ: Hook
Status: interessant
Nachahmbarkeit: 4
Aufwand: niedrig
Umsetzbarkeit: hoch
Erwarteter Nutzen: hoch
YouTube-ID (verlinkt): FVuqEATzMWI -> https://youtube.com/watch?v=FVuqEATzMWI
Detail-Link: /items/1
```
Alle Werte stimmen exakt mit der zuvor im manuellen Workflow gespeicherten Bewertung ueberein.

Prozess danach sauber beendet, Port 127.0.0.1:8100 anschliessend frei, kein content-extraction-Prozess mehr aktiv.

## Verifikation (Schritt 9)
| Groesse | Vorher | Nachher |
|---|---|---|
| knowledge.db mtime | 2026-07-02 12:39:57.497487969 UTC | 2026-07-02 12:39:57.497487969 UTC — identisch |
| ce_sources | 877 | 877 — unveraendert |
| ce_items | 1 | 1 — unveraendert |
| ce_ratings | 1 | 1 — unveraendert |
| ce_notes | 1 | 1 — unveraendert |

## Bestaetigung: YouTube Research unveraendert
MainPID und ActiveEnterTimestamp von youtube-research.service vor und nach diesem Auftrag identisch (1952952, seit 12:33:39 UTC). Keine Datei unter /opt/struktur/youtube-research/ angefasst, kein Schreibzugriff auf knowledge.db (list_content_matrix() liest ausschliesslich aus content_extraction.db, ruft get_youtube_research_ro() gar nicht auf).

## Bestaetigung: kein systemd / kein Nginx / kein oeffentlicher Zugriff
- Kein neuer systemd-Unit angelegt oder gestartet.
- Keine Nginx-Config angelegt.
- Keine Subdomain aktiviert.
- Keine automatische KI-Extraktion, keine automatische Bewertung, kein Graphiti- oder Obsidian-Schreibzugriff, keine Fundus-Daten migriert.
- App lief nur temporaer manuell auf 127.0.0.1, wurde nach dem Test beendet.