Skip to content

Vertragsgenerator #25392

@BraunDominikWings

Description

@BraunDominikWings

import tkinter as tk
from tkinter import scrolledtext
import re

--- Regelbasierte Analyse-Funktion --------------------------------------

def analyze_contract(text):
# Regex-Muster für die Klauseln
patterns = {
"Kündigung": r"\bkündigung\b|\bkündbar\b|\bfrist.*künd",
"Rücktritt": r"\brücktritt\b|\brücktrittsrecht\b",
"Vertragsstrafe": r"\bvertrag[s-]?strafe\b|\bstrafe\b",
"Haftung": r"\bhaftung\b|\bhaftbar\b|\bhaftungsbeschränkung\b",
"Gewährleistung": r"\bgewährleistung\b|\bgewährleistet\b|\bmängelhaftung\b",
}

result = []
comments = []

for clause, pattern in patterns.items():
    match = re.search(pattern, text, flags=re.IGNORECASE)
    if match:
        result.append(f"- {clause}")
        comments.append(f"Die Klausel **{clause}** wurde im Vertragstext gefunden (regelbasierte Erkennung via Regex).")
    else:
        comments.append(f"Die Klausel **{clause}** wurde **nicht** gefunden (keine Übereinstimmung im Regex-Muster).")

output = "Gefundene Klauseln:\n" + ("\n".join(result) if result else "Keine der gesuchten Klauseln gefunden.")
output += "\n\nKommentare zur Analyse:\n" + "\n".join(comments)

return output

--- GUI-Funktion ---------------------------------------------------------

def run_analysis():
text = input_field.get("1.0", tk.END)
result = analyze_contract(text)
output_field.delete("1.0", tk.END)
output_field.insert(tk.END, result)

--- GUI Aufbau -----------------------------------------------------------

root = tk.Tk()
root.title("Vertragsanalyse – Regelbasiertes Tool")

Eingabefeld (Vertragstext)

tk.Label(root, text="Vertragstext eingeben:").pack(anchor="w")
input_field = scrolledtext.ScrolledText(root, width=80, height=15)
input_field.pack(padx=10, pady=5)

Analysebutton

analyze_button = tk.Button(root, text="Analyse starten", command=run_analysis)
analyze_button.pack(pady=10)

Ausgabefeld

tk.Label(root, text="Analyseergebnis:").pack(anchor="w")
output_field = scrolledtext.ScrolledText(root, width=80, height=20)
output_field.pack(padx=10, pady=5)

root.mainloop()

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions