Markdown Converter
Agent skill for markdown-converter
1) Titel & Intro
Sign in to like and favorite skills
Agents.md — „Artikel-Generator (GUI)“
Projekt: Artikel-Generator (GUI) Kurzbeschreibung: Ein kleines Python-Tool mit minimalem GUI, um nur zwei Felder zu erfassen – Artikelnummer und Name – und diese als Datensätze in eine JSON-Datei zu schreiben/ergänzen.
Warum: Schnelles Erfassen von Standard-Artikeln ohne ERP-Overhead. Zero-Friktion, sofort nutzbar, datenbank-taugliches JSON.
Ziel: In <10 Sekunden einen Artikel mit id (Artikelnummer) und name hinzufügen.
Definition of Done (DoD):
GUI hat 2 Eingabefelder (Artikelnummer, Name) + „Speichern“-Button.
Validierung: id nicht leer, name nicht leer; id eindeutig.
Liste der vorhandenen Artikel (Spalten: id, name) wird angezeigt.
Suchfeld filtert die Liste live (id oder name, case-insensitive).
Schreibt in articles.json mit Schema:
{ "articles": [ { "id": "…", "name": "…" } ] }
Bei bestehender Datei: anhängen (keine Duplikate).
Nutzer-Feedback (Toast/Label): Erfolg/Fehlerklartext.
In Scope:
GUI mit tkinter (Stdlib, keine Fremdpakete).
JSON-Datei unter ./data/articles.json (Ordner wird bei Bedarf erstellt).
Duplikatprüfung anhand id.
Einfache Logik: Laden → Validieren → Einfügen → Speichern.
Minimaler Fehlerdialog (File I/O, JSON-Parse).
Listenansicht aller Artikel mit Treeview + Scrollbar.
Live-Suche in der Liste (id oder name).
Out of Scope (für später): Kategorien, Maße, Preise, Supplier, mehrsprachige Namen, Editieren, CSV-Import/Export, Cloud/DB-Anbindung.
User: Projektleiter:in/AVOR, die schnell Stammdaten pflegen will.
User Stories:
Als User möchte ich eine Artikelnummer und einen Namen eingeben damit ich rasch einen neuen Standardartikel erfassen kann.
Als User möchte ich gewarnt werden, wenn die Artikelnummer bereits existiert damit ich keine Dubletten erzeuge.
Als User möchte ich eine Erfolgsmeldung erhalten damit ich weiss, dass die Daten gespeichert sind.
Felder:
id (string, Pflicht, eindeutig)
name (string, Pflicht)
Erweiterbar: Weitere Felder können später problemlos ergänzt werden.
Fenster: „Artikel-Generator“, resizable, modernes ttk-Theme (vista/clam)
Widgets:
Label + Entry: „Artikelnummer (id)“
Label + Entry: „Name“
Button: „Speichern“
Statuslabel (einzeilig) für Feedback (Erfolg/Fehler)
Tastatur: Enter → Speichern
Validierung inline: Leere Felder → rotes Statuslabel mit Hinweis
Label + Entry: „Suche (id oder Name)“ → filtert Liste live
Listenansicht (Treeview) mit Spalten „ID“ und „Name“, vertikale Scrollbar
Button: „Löschen“ (löscht den aktuell ausgewählten Datensatz)
Sprache: Python 3.10+
GUI: tkinter (Stdlib)
Datei-Pfad: ./data/articles.json
Kodierung: UTF-8
Fehlertoleranz: Falls JSON korrupt → sichere Wiederherstellung (articles leeres Array) und Backup articles.bak.json
UI-Technik: ttk-Theme („vista“ wenn vorhanden, sonst „clam“). Resizable Layout mit Grid-Weights.
Listenansicht: ttk.Treeview mit Spalten „id“, „name“, vertikale Scrollbar; Sortierung standardmäßig nach id.
Suche: Case-insensitive Filterung über id oder name (live bei Eingabe).
Funktionen (Modul article_store.py):
load_articles(path) -> dict
save_articles(path, data) -> None
add_article(data, article_id, name) -> (bool, str) // bool=ok, str=message
delete_article(data, article_id) -> (bool, str)
App (Modul app.py):
class ArticleApp(tk.Tk) mit GUI-Logik
Event-Handler: on_save()
Event-Handler: Suche (trace auf StringVar) → Filter & Refresh der Liste
Event-Handler: on_delete() (löscht selektierten Artikel und speichert)
Ordnerstruktur:
artikel_generator/ ├─ app.py ├─ article_store.py ├─ data/ │ └─ articles.json (wird bei Bedarf erzeugt) └─ README.md
Unit-Tests (optional später):
Laden/Speichern leerer/bestehender Datei
Dubletten-Verhalten
Unicode (Umlaute)
Manuelle Tests (MVP):
Leere Felder → Fehler
Neuer Datensatz → Erfolg
Duplikat-ID → Fehler
Datei fehlt → wird erzeugt
Start:
Windows: Doppelklick auf app.py (falls .py verknüpft) oder:
python app.py
Backup: Vor dem Speichern eine .bak anlegen, um Korruption zu vermeiden.
Schreibzugriff nur lokal.
Atomisches Speichern: temporäre Datei → Rename.
Duplikate über id verhindert.
Editieren/Löschen im GUI (Listenansicht)
Zusatzfelder (Kategorie, Material, Maße, Supplier)
Export/Import (CSV)
Supabase/Postgres-Anbindung
Versionsverlauf / Audit Trail
Mehrsprachigkeit (de/en)
JSON-Korruption: Backup + robustes Laden.
Benutzerfehler (leere Felder): Inline-Validierung.
Zugriffsrechte: Schreiben in Unterordner ./data sicherstellen.
System/Dev Prompt: „Erstelle ein minimal-robustes Python-Programm mit tkinter, das zwei Eingaben (id, name) annimmt und sie als Objekt in die JSON-Datei ./data/articles.json unter dem Schlüssel articles speichert. Falls die Datei fehlt, erzeugen. UTF-8 nutzen. Vor dem Überschreiben ein Backup articles.bak.json erstellen. Keine Fremdbibliotheken. Validierung: Beide Felder Pflicht; id muss eindeutig sein. Bei Erfolg/Fehler Status im GUI anzeigen. Struktur und Dateipfade exakt gemäß Agents.md.“
User Prompt (Beispiel): „Schreibe article_store.py (Load/Save/Add mit Duplikatprüfung) und app.py (tkinter-GUI) gemäß Agents.md. Füge Kommentare hinzu. Nutze atomisches Speichern.“
GUI startet ohne Fehler
Speichern mit validen Werten → Datensatz in articles.json
id-Duplikat → klare Fehlermeldung, kein Eintrag
Leere Felder → klare Fehlermeldung
JSON neu erzeugen, wenn nicht vorhanden
Backup wird angelegt
UTF-8, Umlaute korrekt
Liste der bestehenden Artikel wird beim Start angezeigt
Live-Suche filtert Artikel nach id oder name (case-insensitive)
GUI ist resizable; Treeview-Scrollbar funktioniert
Enter-Taste löst Speichern aus
Löschen: Selektion in der Liste und Klick „Löschen“ entfernt Datensatz und speichert
id="pm-ei-kvz-hdf-2490-900-53", name="Rahmenkanteln mit HDF Deck"
id="pd-we-U570-vl", name="Standard Platte Weiss"
Internes Tool, proprietär. Später optional MIT-Lizenz, falls Open-Source geplant.
Start: python app.py Datei: ./data/articles.json Felder: id (Pflicht, eindeutig), name (Pflicht) Backup: articles.bak.json Abhängigkeiten: Python Stdlib (tkinter, json, pathlib)