Markdown versus HTML — derselbe Code, zwei Antworten
„Das Skript importiert das Modul requests, definiert eine
Funktion hole_offene_rechnungen(), ruft eine URL mit
Authentifizierungs-Headern auf, parst die JSON-Antwort und filtert per
List-Comprehension auf status == 'open'."
Korrekt. Hilfreich? Eher nicht.
Der Code links, die Erklärung rechts in Klartext, unten ein Glossar zum Aufklappen, oben eine Mini-Zusammenfassung in zwei Sätzen. So liest man das Skript wie eine bebilderte Anleitung — nicht wie ein Telegramm aus dem Maschinenraum.
Die ausführliche HTML-Variante
In drei Sätzen: Dieses Skript holt sich jeden Morgen die Liste aller offenen Rechnungen aus lexoffice. Es schickt eine Anfrage an die lexoffice-Schnittstelle, bekommt eine lange Liste mit Belegen zurück und gibt nur die zurück, die noch nicht bezahlt sind. Ohne Magie, ohne Datenbank.
import requests
from datetime import date
# Schritt 1 — Zugangsdaten
AUTH = {"Authorization": "Bearer " + TOKEN}
def hole_offene_rechnungen():
# Schritt 2 — Anfrage
url = "https://api.lexoffice.io/v1/voucherlist"
res = requests.get(url, headers=AUTH)
# Schritt 3 — Antwort lesen
daten = res.json()
# Schritt 4 — Nur offene
return [v for v in daten if v["status"] == "open"]
SCHRITT 1
Das Skript bringt seinen Ausweis mit. Ohne den lässt lexoffice niemanden rein.
SCHRITT 2
Es ruft die Liste aller Belege ab — wie ein Telefonbuch mit allen Einträgen.
SCHRITT 3
Die Antwort kommt im Format JSON — das versteht Python von Haus aus.
SCHRITT 4
Es bleiben nur Belege übrig, deren Status „open" ist. Bezahltes interessiert hier nicht.
Glossar — kurz und schmerzlos
Was bringt das eigentlich?
Wer den Code im Notfall nicht selbst ändern können muss, sollte ihn trotzdem verstehen — schon allein, um dem nächsten Dienstleister sagen zu können, wo es klemmt. Mit der HTML-Variante bekommt man die Karte zum Skript dazu. Die legt man neben die Datei, druckt sie notfalls aus, packt sie in den Ordner „Backoffice / Skripte / Doku".
Und wenn man drei Monate später anruft, weil das Skript morgens streikt, dann sagt man nicht „irgendwas mit Belegen geht nicht", sondern „Schritt 2 wirft einen Fehler — bekommt vom Server keine Antwort". Damit hat der Entwickler am anderen Ende der Leitung deutlich bessere Karten.