.vault-tools (ohne trading-plattform-pruefung und watermarks-remover), .claude/agents, .claude/skills, .claude/workflows, .claude/settings.json. Co-Authored-By: Claude Opus 5.5 <[email protected]>
70 lines
2.1 KiB
Python
70 lines
2.1 KiB
Python
"""Ergebnistypen eines Laufs: Berichtszeile samt dem Stand, den die Verweisrunde braucht.
|
|
|
|
Ersteller: Pascal Michel
|
|
Erstellt: 2026-09-30
|
|
Doku: docs/code/ergebnis.md · Version und Änderungen: CHANGELOG.md
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
from pathlib import Path
|
|
|
|
from bookstack.struktur import Ziel
|
|
|
|
# Aktionen, deren Datei danach archiviert wird und deren Seite in den Endindex kommt.
|
|
ARCHIVIERBAR = ("ANLEGEN", "AKTUALISIEREN", "ÜBERSPRUNGEN")
|
|
|
|
|
|
@dataclass
|
|
class Seitenstand:
|
|
"""Was Durchgang 1 über eine Seite weiß; Eingang der Verweisrunde."""
|
|
|
|
titel: str
|
|
rumpf: str # ohne Titelüberschrift, Eingang für konvertiere
|
|
ziel: Ziel
|
|
seiten_id: int | None # None nur bei ANLEGEN im Probelauf
|
|
prioritaet: int | None
|
|
markdown: str # bildfrei, Verweise nach Index aus Durchgang 1
|
|
aufgeloeste_verweise: dict[str, str]
|
|
offene_verweise: list[str]
|
|
bildnamen: list[str]
|
|
bilder: dict[str, str] | None # Tabelle des letzten PUT in Durchgang 1; None = kein PUT
|
|
|
|
|
|
@dataclass
|
|
class Beschreibungsstand:
|
|
"""Was Durchgang 1 über eine Buch- oder Kapitelbeschreibung weiß."""
|
|
|
|
art: str # "buch" | "kapitel"
|
|
ziel_id: int
|
|
vorspann: str
|
|
html: str
|
|
aufgeloeste_verweise: dict[str, str]
|
|
|
|
|
|
@dataclass
|
|
class Ergebnis:
|
|
"""Eine Berichtszeile; seite und beschreibung tragen nur Zeilen aus Durchgang 1."""
|
|
|
|
pfad: Path
|
|
aktion: str
|
|
text: str
|
|
seite: Seitenstand | None = None
|
|
beschreibung: Beschreibungsstand | None = None
|
|
|
|
|
|
def seiten_nutzlast(
|
|
titel: str, ziel: Ziel, markdown: str, prioritaet: int | None = None
|
|
) -> dict[str, object]:
|
|
"""name, markdown, chapter_id (wenn ziel.kapitel_id) sonst book_id, priority wenn nicht None."""
|
|
daten: dict[str, object] = {"name": titel, "markdown": markdown}
|
|
# Bewusst wahr/falsch statt is None: Die Platzhalter-ID 0 geht nie als chapter_id hinaus.
|
|
if ziel.kapitel_id:
|
|
daten["chapter_id"] = ziel.kapitel_id
|
|
else:
|
|
daten["book_id"] = ziel.buch_id
|
|
if prioritaet is not None:
|
|
daten["priority"] = prioritaet
|
|
return daten
|