#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Generiert den WAFF-konformen Dienstvertrag (Innovationsassistent) für Raphael Fakhir."""
from docx import Document
from docx.shared import Pt, Cm, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.section import WD_SECTION

BRAND = RGBColor(0x7E, 0x21, 0x7F)  # BReact Markenviolett

doc = Document()

# --- Grundformat ---
style = doc.styles['Normal']
style.font.name = 'Calibri'
style.font.size = Pt(10.5)
for s in doc.sections:
    s.top_margin = Cm(2.0); s.bottom_margin = Cm(2.0)
    s.left_margin = Cm(2.4); s.right_margin = Cm(2.4)

def h(txt, size=13, space_before=10):
    p = doc.add_paragraph()
    p.space_before = Pt(space_before)
    r = p.add_run(txt); r.bold = True; r.font.size = Pt(size); r.font.color.rgb = BRAND
    return p

def para(txt='', bold=False, size=10.5, align=None, space=4):
    p = doc.add_paragraph()
    p.paragraph_format.space_after = Pt(space)
    if align: p.alignment = align
    r = p.add_run(txt); r.bold = bold; r.font.size = Pt(size)
    return p

def bullet(txt):
    p = doc.add_paragraph(style='List Bullet')
    p.paragraph_format.space_after = Pt(2)
    p.add_run(txt).font.size = Pt(10.5)
    return p

# ===== TITEL =====
t = doc.add_paragraph(); t.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = t.add_run('DIENSTVERTRAG'); r.bold = True; r.font.size = Pt(20); r.font.color.rgb = BRAND
s = doc.add_paragraph(); s.alignment = WD_ALIGN_PARAGRAPH.CENTER
rs = s.add_run('Angestelltenverhältnis · Innovationsassistent:in\ngefördert durch den waff – Wiener ArbeitnehmerInnen Förderungsfonds\n(Förderung „Innovation und Beschäftigung", Förderkennzeichen INNO26-1-0016)')
rs.font.size = Pt(10); rs.italic = True

doc.add_paragraph()
para('abgeschlossen zwischen', align=WD_ALIGN_PARAGRAPH.CENTER)
para('BReact GmbH', bold=True, size=12, align=WD_ALIGN_PARAGRAPH.CENTER)
para('FN 589698d · UID ATU79912427 · Esslinggasse 5/9, 1010 Wien', align=WD_ALIGN_PARAGRAPH.CENTER, size=9.5)
para('vertreten durch den Geschäftsführer Nemanja Klincov, BSc', align=WD_ALIGN_PARAGRAPH.CENTER, size=9.5)
para('– im Folgenden „Dienstgeber" / „Unternehmen" –', align=WD_ALIGN_PARAGRAPH.CENTER, size=9.5)
para('und', align=WD_ALIGN_PARAGRAPH.CENTER)
para('Raphael Fakhir, MSc', bold=True, size=12, align=WD_ALIGN_PARAGRAPH.CENTER)
para('geb. 12.03.1993 · Hahngasse 32, Tür 5–6, 1090 Wien', align=WD_ALIGN_PARAGRAPH.CENTER, size=9.5)
para('SVNR: 5433 120393', align=WD_ALIGN_PARAGRAPH.CENTER, size=9.5)
para('– im Folgenden „Dienstnehmer" –', align=WD_ALIGN_PARAGRAPH.CENTER, size=9.5)

# ===== §1 Beginn / Dauer =====
h('§ 1  Beginn und Dauer des Dienstverhältnisses')
para('(1) Das Dienstverhältnis beginnt am 01.07.2026 und wird auf unbestimmte Zeit abgeschlossen.')
para('(2) Der erste Monat gilt gemäß § 19 Abs. 2 Angestelltengesetz (AngG) als Probemonat. Während dieser Zeit kann das Dienstverhältnis von beiden Seiten jederzeit ohne Angabe von Gründen gelöst werden.')
para('(3) Es handelt sich um ein unselbstständiges, vollsozialversicherungspflichtiges Beschäftigungsverhältnis nach dem ASVG (Angestellte:r). Ein freies Dienstverhältnis liegt ausdrücklich nicht vor.')

# ===== §2 Tätigkeit / Verwendung =====
h('§ 2  Verwendung und Tätigkeitsbereich')
para('(1) Der Dienstnehmer wird als', space=2)
para('Senior KI-Architekt:in / Senior AI Engineer', bold=True, size=11.5)
para('(im Rahmen der waff-Förderung „Innovation und Beschäftigung" als Innovationsassistent:in bzw. Senior KI-Ingenieur:in geführt) im vom waff geförderten Innovationsvorhaben „Souveräner Enterprise MCP-Server für Private Inferencing & KI-Agenten" aufgenommen.')
para('(2) Der Dienstnehmer ist während des Förderzeitraums zu 100 % dem Innovationsprojekt zugeordnet. Die Tätigkeit umfasst insbesondere:')
for b in [
    'Konzeption und technische Architekturentwicklung des souveränen MCP-Servers;',
    'Implementierung der Server-Core-Komponenten sowie der KI-Agenten-Orchestrierung;',
    'Integration in bestehende BReact-OS-Systeme;',
    'Umsetzung von Private-Inferencing-Architekturen (lokaler Betrieb großer Sprachmodelle/LLMs);',
    'Vorbereitung und Begleitung einer Pilotimplementierung bei einem Enterprise-Kunden;',
    'Dokumentation und technische Spezifikation im Hinblick auf regulatorische Anforderungen (EU AI Act, DSGVO, NIS2).',
]:
    bullet(b)
para('(3) Nach Ende des Förderzeitraums übernimmt der Dienstnehmer die technische Weiterentwicklung und Skalierung des Produkts, die Begleitung von Kundenimplementierungen sowie den Wissenstransfer an weitere Entwickler:innen.')
para('(4) Der Dienstnehmer übt keine leitende Funktion im Sinne des § 1 Abs. 2 Z 8 Arbeitszeitgesetz (AZG) aus; es werden ihm keine maßgeblichen Führungsaufgaben selbstverantwortlich übertragen und keine Prokura erteilt. (Diese Klausel sichert die waff-Förderfähigkeit der Personalkosten – siehe Hinweis im Begleitschreiben.)')

# ===== §3 Arbeitsort =====
h('§ 3  Arbeitsort')
para('(1) Beschäftigungsort (Betriebsstätte) ist Wien, Esslinggasse 5/9, 1010 Wien. Der Beschäftigungsort Wien ist Fördervoraussetzung des waff.')
para('(2) Nach Maßgabe betrieblicher Vereinbarungen ist Homeoffice bzw. hybrides Arbeiten möglich; der arbeitsrechtliche Beschäftigungsort bleibt Wien.')

# ===== §4 Arbeitszeit =====
h('§ 4  Arbeitszeit')
para('(1) Die Normalarbeitszeit beträgt 38,5 Stunden pro Woche (Vollzeit), verteilt auf Montag bis Freitag.')
para('(2) Gleitzeit und flexible Arbeitszeitmodelle sind nach gesonderter Vereinbarung möglich.')

# ===== §5 Entgelt =====
h('§ 5  Entgelt')
para('(1) Das monatliche Bruttogehalt beträgt EUR 6.664,00 (in Worten: sechstausendsechshundertvierundsechzig Euro), zahlbar 14× jährlich (12 Monatsgehälter zzgl. Urlaubszuschuss und Weihnachtsremuneration als Sonderzahlungen gemäß Kollektivvertrag).')
para('(2) Das Entgelt wird jeweils am Monatsletzten auf ein vom Dienstnehmer bekanntzugebendes Konto überwiesen.')
para('(3) Auf das Dienstverhältnis findet der Kollektivvertrag für Angestellte von Unternehmen im Bereich Dienstleistungen in der automatischen Datenverarbeitung und Informationstechnik (IT-KV) Anwendung. Der Dienstnehmer wird in die Verwendungsgruppe F (hochqualifizierte, selbstständig ausgeübte Spezialtätigkeit ohne Leitungsfunktion) bei 6 anrechenbaren Berufsjahren eingestuft. Das vereinbarte Bruttogehalt liegt deutlich über dem kollektivvertraglichen Mindestgrundgehalt dieser Einstufung (Überzahlung); die Überzahlung deckt allfällige Anrechnungen ab.')

# ===== §6 Weiterbildung =====
h('§ 6  Aus- und Weiterbildung (Fördervoraussetzung)')
para('(1) Der Dienstnehmer verpflichtet sich, an den im Innovationsprojekt vorgesehenen Weiterbildungsmaßnahmen teilzunehmen. Die Weiterbildung im Innovationszusammenhang ist zwingende Voraussetzung der waff-Förderung.')
para('(2) Die Maßnahmen werden überwiegend in den ersten sechs Projektmonaten durch externe, vom Unternehmen wirtschaftlich unabhängige Bildungseinrichtungen durchgeführt und umfassen u.a.:')
for b in [
    'Private Inferencing und lokaler Betrieb von Large Language Models (LLMs);',
    'Implementierung und Anwendung des MCP-Standards;',
    'EU AI Act: regulatorische Anforderungen, Risikoklassifizierung, Dokumentationspflichten;',
    'DSGVO und datenschutzkonforme Systemarchitektur.',
]:
    bullet(b)

# ===== §7 Urlaub =====
h('§ 7  Urlaub')
para('Der Urlaubsanspruch beträgt 25 Arbeitstage (5 Wochen) pro Urlaubsjahr gemäß Urlaubsgesetz.')

# ===== §8 Dienstverhinderung =====
h('§ 8  Dienstverhinderung')
para('Bei Arbeitsverhinderung durch Krankheit oder Unfall gelten die Bestimmungen des Angestelltengesetzes. Eine Dienstverhinderung ist unverzüglich zu melden und ab dem vierten Tag durch ärztliche Bestätigung nachzuweisen.')

# ===== §9 Arbeitsergebnisse / IP =====
h('§ 9  Rechte an Arbeitsergebnissen, Software und Immaterialgüterrechten')
para('(1) Sämtliche im Rahmen des Dienstverhältnisses geschaffenen Arbeitsergebnisse – insbesondere Software, Quellcode, Architekturen, Konzepte, Dokumentationen und sonstige Werke – stehen ausschließlich dem Dienstgeber zu.')
para('(2) Der Dienstnehmer räumt dem Dienstgeber an allen urheberrechtlich geschützten Werken das ausschließliche, zeitlich, räumlich und inhaltlich unbeschränkte Werknutzungsrecht ein (§ 40b UrhG). An Diensterfindungen steht dem Dienstgeber das Aufgriffsrecht nach dem Patentgesetz zu. Mit dem Entgelt sind diese Rechtsübertragungen abgegolten.')

# ===== §10 Verschwiegenheit =====
h('§ 10  Verschwiegenheit und Datenschutz')
para('(1) Der Dienstnehmer verpflichtet sich, über alle ihm bekannt gewordenen Betriebs- und Geschäftsgeheimnisse während und nach Beendigung des Dienstverhältnisses Stillschweigen zu bewahren.')
para('(2) Der Dienstnehmer stimmt zu, dass seine im Zusammenhang mit der waff-Förderung erforderlichen personen- und beschäftigungsbezogenen Daten (insb. Personenblatt, SV-Anmeldebestätigung, Tätigkeits- und Abrechnungsdaten) an den waff übermittelt und von diesem zum Zweck der Förderabwicklung, Abrechnung und Kontrolle verarbeitet werden (Art. 6 Abs. 1 DSGVO). Eine entsprechende datenschutzrechtliche Zustimmungserklärung ist Bestandteil dieses Vertrages.')

# ===== §11 Beendigung =====
h('§ 11  Beendigung des Dienstverhältnisses')
para('(1) Nach Ablauf des Probemonats kann das Dienstverhältnis unter Einhaltung der gesetzlichen Kündigungsfristen und -termine des § 20 AngG gelöst werden.')
para('(2) Gründe für eine vorzeitige Auflösung (Entlassung/Austritt) richten sich nach §§ 25 ff AngG.')
para('(3) Hinweis (waff): Wird das Dienstverhältnis vorzeitig beendet, ist die Innovationsassistent:innen-Stelle innerhalb von zwei Monaten nachzubesetzen, um den Förderanspruch zu wahren.')

# ===== §12 Schluss =====
h('§ 12  Schlussbestimmungen')
para('(1) Änderungen und Ergänzungen dieses Vertrages bedürfen der Schriftform.')
para('(2) Sollten einzelne Bestimmungen unwirksam sein, bleibt die Wirksamkeit der übrigen Bestimmungen unberührt; an die Stelle der unwirksamen Bestimmung tritt eine ihr wirtschaftlich möglichst nahekommende Regelung.')
para('(3) Es gilt österreichisches Recht; Gerichtsstand ist das sachlich zuständige Gericht in Wien. Mündliche Nebenabreden bestehen nicht.')
para('(4) Der Dienstnehmer bestätigt den Erhalt einer Gleichschrift dieses Vertrages.')

# ===== Unterschriften =====
doc.add_paragraph()
para('Wien, am ______________________', space=14)
tbl = doc.add_table(rows=2, cols=2)
tbl.columns[0].width = Cm(7.5); tbl.columns[1].width = Cm(7.5)
c = tbl.cell(0,0).paragraphs[0]; c.add_run('________________________________').font.size = Pt(10)
c2 = tbl.cell(0,1).paragraphs[0]; c2.add_run('________________________________').font.size = Pt(10)
d = tbl.cell(1,0).paragraphs[0]; d.add_run('Dienstgeber\nBReact GmbH\nNemanja Klincov, BSc (Geschäftsführer)\n(firmenmäßige Zeichnung, Stampiglie)').font.size = Pt(9)
d2 = tbl.cell(1,1).paragraphs[0]; d2.add_run('Dienstnehmer\nRaphael Fakhir, MSc').font.size = Pt(9)

doc.add_paragraph()
foot = doc.add_paragraph()
fr = foot.add_run('Dieser Vertrag ist auf die waff-Förderung „Innovation und Beschäftigung" (INNO26-1-0016) abgestimmt. '
                  'Der Dienstnehmer ist weder Eigentümer/Miteigentümer noch handelsrechtlicher Geschäftsführer noch '
                  'leitender Angestellter i.S.d. § 1 Abs. 2 Z 8 AZG; die Personalkosten sind daher förderfähig.')
fr.italic = True; fr.font.size = Pt(8); fr.font.color.rgb = RGBColor(0x80,0x80,0x80)

out = '/home/nk/hobo-godmode/waff/Dienstvertrag_Raphael_Fakhir_Innovationsassistent.docx'
doc.save(out)
print('saved', out)
