---
name: client-offer
description: Tworzy i rozbudowuje profesjonalne dokumenty ofertowe dla klientów w formacie .docx. Zachowuje ustalony styl — nagłówki bez numeracji, zwięzłe listy (2-3 punkty), tabele porównawcze, pogrubione zamknięcia. Ton biznesowy po polsku, perspektywa "my" (dostawca usług). Wyzwalacze: "dodaj punkt do oferty", "napisz punkt ofertowy", "zapisz do docx", "dodaj do oferty klienta", "rozbuduj ofertę".
argument-hint: "[temat punktu lub ścieżka do pliku]"
arguments: [temat, plik]
---

# Client Offer — Generator Punktów Ofertowych

Tworzysz lub rozbudowujesz profesjonalny dokument ofertowy dla klienta w formacie `.docx`.

Jeśli `$plik` jest pusty — zapytaj użytkownika o ścieżkę do istniejącego pliku lub czy tworzyć nowy.
Jeśli `$temat` jest pusty — zapytaj o temat nowego punktu i sektor klienta.

---

## Zasady stylu — ZAWSZE przestrzegaj

### Struktura dokumentu
- **Heading 1** (`level=1`) — główne punkty oferty, BEZ numeracji w tytule
- **Heading 2** (`level=2`) — podsekcje w ramach punktu
- **List Bullet** — listy wypunktowane, max 2-3 pozycje na sekcję
- **Normal** — treść paragrafów, 2-4 zdania na akapit
- Tabela porównawcza (3 kolumny) jeśli punkt ma wartość "Bez X / Z X"
- Pogrubione (`bold=True`) zdanie zamykające każdy punkt

### Ton i język
- Język dokumentu: **angielski** — cała treść generowana do pliku .docx musi być w języku angielskim
- Komunikacja z użytkownikiem: **polski** — pytania, potwierdzenia i odpowiedzi kierowane do użytkownika pozostają po polsku
- Perspektywa: **"we"** — it is we who deliver, invest, maintain
- Unikaj: liczb w nagłówkach, numeracji punktów, nadmiernie technicznego żargonu
- Zamknięcie każdego punktu: jedno mocne, pogrubione zdanie po angielsku podkreślające wartość dla klienta

### Przykład struktury punktu
```
[Heading 1] Tytuł punktu — Obszar działania
[Normal]    Intro — kontekst i problem klienta (2-3 zdania)
[Normal]    Co robimy / jak podchodzimy do tematu
[Heading 2] Podtytuł sekcji szczegółowej
[Normal]    Opis
[Bullet]    Funkcja 1 — opis,
[Bullet]    Funkcja 2 — opis,
[Bullet]    Funkcja 3 — opis.
[Heading 2] Wartość dla klienta — porównanie   ← opcjonalna tabela
[Tabela]    Obszar | Bez rozwiązania | Z rozwiązaniem
[Normal]    **Pogrubione zamknięcie — kluczowa wartość dla klienta.**
```

---

## Workflow

### Gdy dodajesz punkt do ISTNIEJĄCEGO pliku

1. Wczytaj plik przez python-docx i wypisz aktualną strukturę (nagłówki)
2. Dopisz nowy punkt NA KOŃCU dokumentu
3. Zachowaj styl wszystkich istniejących elementów — nie modyfikuj tego, co już jest
4. Zapisz pod tą samą ścieżką (jeśli plik zamknięty) lub z sufiksem `_v<n>` (jeśli błąd Permission Denied)

```python
from docx import Document
doc = Document('/ścieżka/do/pliku.docx')
# ... dopisz nowe paragrafy ...
doc.save('/ścieżka/do/pliku.docx')
```

### Gdy tworzysz NOWY plik

Utwórz dokument z:
1. Tytułem wycentrowanym (Heading 0)
2. Podtytułem kursywą (sektor klienta)
3. Krótkim intro (1 akapit)
4. Punktami oferty (Heading 1 + treść)
5. Stopką z datą i wersją (prawa strona, kursywa, czcionka 9pt)

Szablon nazwy pliku: `Oferta_Wspolpracy_<Sektor>.docx`

### Hyperlinki

Użyj tej funkcji do wstawiania klikalnych linków:

```python
from lxml import etree
from docx.oxml.ns import qn

def add_hyperlink(paragraph, display_text, url):
    part = paragraph.part
    r_id = part.relate_to(url,
        'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink',
        is_external=True)
    hyperlink = etree.SubElement(paragraph._p, qn('w:hyperlink'))
    hyperlink.set(qn('r:id'), r_id)
    new_run = etree.SubElement(hyperlink, qn('w:r'))
    rPr = etree.SubElement(new_run, qn('w:rPr'))
    rStyle = etree.SubElement(rPr, qn('w:rStyle'))
    rStyle.set(qn('w:val'), 'Hyperlink')
    t = etree.SubElement(new_run, qn('w:t'))
    t.text = display_text
    return hyperlink
```

### Tabela porównawcza

```python
def add_comparison_table(doc, headers, rows):
    table = doc.add_table(rows=len(rows)+1, cols=len(headers))
    table.style = 'Table Grid'
    for i, h in enumerate(headers):
        cell = table.rows[0].cells[i]
        cell.text = h
        cell.paragraphs[0].runs[0].bold = True
    for i, row_data in enumerate(rows):
        for j, val in enumerate(row_data):
            table.rows[i+1].cells[j].text = val
```

---

## Sektory i konteksty

Gdy użytkownik poda sektor, dostosuj ton i przykłady:

| Sektor | Priorytety | Słowa kluczowe |
|--------|-----------|----------------|
| **Automotive** | Ciągłość produkcji, szybki incident response, linie produkcyjne | "każda minuta przestoju", "łańcuch dostaw", "linie produkcyjne" |
| **Finance** | Bezpieczeństwo, compliance, audytowalność | "regulacje", "GDPR", "ryzyko operacyjne" |
| **Healthcare** | Dostępność 24/7, dane pacjentów, SLA | "krytyczna infrastruktura", "dane wrażliwe" |
| **Retail** | Sezonowość, doświadczenie klienta, omnichannel | "szczyt sprzedażowy", "doświadczenie zakupowe" |
| **Generic** | Efektywność, koszty, skalowalność | "optymalizacja", "ROI", "time-to-market" |

---

## Ustalone punkty ofertowe (referencja)

Dokumenty ofertowe wygenerowane do tej pory trzymają ten format i są w `/mnt/d/finance-manager/`:

- `Oferta_Wspolpracy_Automotive_v2.docx` — sektor automotive, aktualna wersja robocza
- Punkty: ITIL 5 & AI Readiness, Inteligentne Workbooki & AI, Operation Eye

Gdy użytkownik prosi o "kolejny punkt" bez wskazania pliku — domyślnie użyj `Oferta_Wspolpracy_Automotive_v2.docx`.

---

## Output

Po wygenerowaniu pliku zawsze podaj:
1. Pełną ścieżkę do zapisanego pliku
2. Listę punktów w dokumencie (aktualną strukturę nagłówków)
3. Krótką informację co zostało dodane/zmienione
