gute
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
# MASTER PROMPT – Berichtsheft Generator
|
||||
|
||||
Du bist der Implementierungs-Agent für den **Berichtsheft-Generator** von Nico Baumann.
|
||||
|
||||
## Produktziel
|
||||
|
||||
Lokale Website (`web/`), mit der man **Wochen-Ausbildungsnachweise** erzeugt – ohne selbst zu tippen.
|
||||
|
||||
- Ausbildung: **Kaufmann/Kauffrau für Büromanagement** in einer **Kfz-Firma**
|
||||
- Name: **Nico Baumann**, Abteilung **43180**
|
||||
- Start nach letztem fertigen Heft: nach **03.04.2026** → Woche **Nr. 79** (`06.04.–10.04.2026`)
|
||||
- Nur **Wochenberichtshefte** (keine Tages-UI zum Schreiben)
|
||||
- User wählt nur **Vorschläge** (4 random / mehr / auto-füllen)
|
||||
- Export: **DOCX + PDF**
|
||||
- Nach fertiger Woche → automatisch **nächste Woche**
|
||||
|
||||
## Harte Regeln
|
||||
|
||||
1. **Echte Word-Vorlage nutzen**
|
||||
Die bestehenden Dateien in `1. Ausbildungsjahr/` und `2. Ausbildungsjahr/` sind die Vorlage.
|
||||
Nicht ein eigenes, „ähnliches“ Layout erfinden.
|
||||
Export muss Layout, Schriften, Tabellen, Abschnitte und Feldstruktur der echten Hefte übernehmen (Kopie einer Vorlage + Inhalte ersetzen).
|
||||
|
||||
2. **Vorschläge nur aus echten Heften**
|
||||
Formulierungen, Länge, Ton, typische Tätigkeiten und Schulthemen müssen aus den vorhandenen Berichtsheften kommen (extrahieren + stilgleiche Varianten).
|
||||
Keine generischen Büro-Klischees, die in den Heften nicht vorkommen.
|
||||
|
||||
3. **Nichts tippen**
|
||||
Keine freien Textfelder für Tätigkeiten. Nur Vorschläge antippen / neu würfeln / auto-füllen.
|
||||
|
||||
4. **Kalender**
|
||||
- Di + Do = Berufsschule
|
||||
- BW-Schulferien = ganze Woche Betrieb (auch Di/Do)
|
||||
- Feiertage BW markieren
|
||||
- Sa/So überspringen
|
||||
|
||||
5. **Bestehende Hefte nicht überschreiben**
|
||||
Originale in `1. Ausbildungsjahr/` / `2. Ausbildungsjahr/` bleiben unangetastet.
|
||||
Neue Exporte z. B. nach `export/2. Ausbildungsjahr/`.
|
||||
|
||||
6. **Sprache**
|
||||
UI und Nutzerkommunikation auf Deutsch. Code/Kommentare klar und knapp.
|
||||
|
||||
7. **Plan-Datei**
|
||||
`.cursor/plans/*.plan.md` nicht editieren, außer der User verlangt es.
|
||||
|
||||
## Aktueller Stand (Ist)
|
||||
|
||||
- Vite + React + TS in `web/`
|
||||
- Wochen-UI existiert, Vorschläge ~788, teilweise aus Extraktion
|
||||
- **Problem:** DOCX wird mit `docx`-Library neu gebaut → sieht **nicht** wie die echte Vorlage aus
|
||||
- **Problem:** Vorschläge können noch besser an Stil/Frequenz/Vollständigkeit der echten Hefte
|
||||
|
||||
## Soll (Priorität)
|
||||
|
||||
1. Word-Export = echte Vorlage befüllen
|
||||
2. Vorschlägequalität massiv anheben (nur echte Phrasen + kontrollierte Varianten)
|
||||
3. UI weiter vereinfachen (Woche → Vorschläge → Export)
|
||||
4. PDF optisch möglichst nah an derselben Struktur
|
||||
|
||||
## Definition of Done (gesamt)
|
||||
|
||||
- [ ] DOCX öffnet sich und sieht aus wie ein Heft aus Jahr 1/2 (gleiche Vorlage)
|
||||
- [ ] Dateiname wie bisher: `Berichtsheft DD.MM - DD.MM.YYYY (N).docx`
|
||||
- [ ] Vorschläge wirken wie aus Nicos Heften (Wörter, Orte, Abläufe)
|
||||
- [ ] User muss nichts tippen
|
||||
- [ ] Eine fertige Woche → nächste Woche
|
||||
- [ ] Di/Do Schule, Ferien = Betrieb
|
||||
- [ ] `npm run build` erfolgreich
|
||||
|
||||
## Arbeitsweise
|
||||
|
||||
- Eine Teilaufgabe nach der anderen aus `prompts/teilaufgaben/`
|
||||
- Vor Code: relevante Dateien + 2–3 echte `.docx` ansehen
|
||||
- Nach Änderung: build prüfen, kurz manuell testen
|
||||
- Keine unnötigen Markdown-Dateien außerhalb von `prompts/`
|
||||
@@ -0,0 +1,52 @@
|
||||
# Prompts – Berichtsheft Generator
|
||||
|
||||
Diese Prompts steuern die Weiterentwicklung der App.
|
||||
**Immer zuerst den Master-Prompt laden**, danach genau **eine** Teilaufgabe.
|
||||
|
||||
## Nur Suggestions (beste Vorschläge)
|
||||
|
||||
→ eigener Pack: [`suggestions/`](suggestions/)
|
||||
Start: [`suggestions/START-HIER.md`](suggestions/START-HIER.md)
|
||||
|
||||
## Reihenfolge (empfohlen)
|
||||
|
||||
1. [`00-MASTER.md`](00-MASTER.md) – Kontext + Regeln (immer mitgeben)
|
||||
2. [`teilaufgaben/01-word-vorlage.md`](teilaufgaben/01-word-vorlage.md) – echte `.docx`-Vorlage nutzen
|
||||
3. [`teilaufgaben/02-vorschlaege.md`](teilaufgaben/02-vorschlaege.md) – Vorschläge aus allen Heften
|
||||
4. [`teilaufgaben/03-wochen-ui.md`](teilaufgaben/03-wochen-ui.md) – reine Wochen-UI, nichts tippen
|
||||
5. [`teilaufgaben/04-kalender.md`](teilaufgaben/04-kalender.md) – Di/Do Schule, BW-Ferien
|
||||
6. [`teilaufgaben/05-export-pdf.md`](teilaufgaben/05-export-pdf.md) – PDF parallel zur Word-Vorlage
|
||||
7. [`teilaufgaben/06-qualitaet.md`](teilaufgaben/06-qualitaet.md) – Endcheck / Feinschliff
|
||||
|
||||
## So nutzen
|
||||
|
||||
In Cursor/Chat:
|
||||
|
||||
```
|
||||
Lies prompts/00-MASTER.md und führe prompts/teilaufgaben/01-word-vorlage.md aus.
|
||||
```
|
||||
|
||||
Oder komplett:
|
||||
|
||||
```
|
||||
Lies prompts/00-MASTER.md. Arbeite die Teilaufgaben 01–06 der Reihe nach ab.
|
||||
Stoppe nach jeder Teilaufgabe kurz mit Status, dann weiter.
|
||||
```
|
||||
|
||||
## Wichtige Pfade
|
||||
|
||||
| Was | Pfad |
|
||||
|-----|------|
|
||||
| App | `web/` |
|
||||
| Echte Hefte (Vorlage + Stil) | `1. Ausbildungsjahr/`, `2. Ausbildungsjahr/` |
|
||||
| Word-Vorlage (Kopie) | `web/public/templates/ausbildungsnachweis.docx` |
|
||||
| Aktueller Export-Code | `web/src/lib/exportDocx.ts`, `exportPdf.ts`, `weekExport.ts` |
|
||||
| Vorschläge | `web/src/data/suggestions.ts` |
|
||||
| Extraktion | `web/scripts/` |
|
||||
| Fortschritt (localStorage) | Key `berichtsheft-generator-v2` (Konstante `STORAGE_KEY` in `web/src/lib/storage.ts`); Legacy `berichtsheft-generator-v1` wird beim Reset mitgelöscht |
|
||||
|
||||
## localStorage
|
||||
|
||||
- **Aktuell:** `berichtsheft-generator-v2` – speichert `currentWeekMonday`, `weeks`, `usedSuggestionIds`
|
||||
- **Nicht ändern**, solange `AppState` kompatibel bleibt; bei Breaking Changes neuen Key (`…-v3`) und Migration/Reset-Hinweis
|
||||
- UI-Reset: „Fortschritt zurücksetzen“ löscht v2 + v1 und lädt den Default (Woche 79)
|
||||
@@ -0,0 +1,37 @@
|
||||
# Copy-Paste: Alles der Reihe nach
|
||||
|
||||
```
|
||||
Lies und befolge strikt:
|
||||
|
||||
1) prompts/00-MASTER.md
|
||||
2) Dann nacheinander:
|
||||
- prompts/teilaufgaben/01-word-vorlage.md
|
||||
- prompts/teilaufgaben/02-vorschlaege.md
|
||||
- prompts/teilaufgaben/03-wochen-ui.md
|
||||
- prompts/teilaufgaben/04-kalender.md
|
||||
- prompts/teilaufgaben/05-export-pdf.md
|
||||
- prompts/teilaufgaben/06-qualitaet.md
|
||||
|
||||
Wichtigste Mängel jetzt:
|
||||
- Word-Export nutzt NICHT die echte Vorlage der Hefte in „1. Ausbildungsjahr“ / „2. Ausbildungsjahr“.
|
||||
- Vorschläge müssen besser werden (nur Stil/Inhalt aus allen echten Berichtsheften).
|
||||
|
||||
Regeln:
|
||||
- Plan-Datei nicht editieren.
|
||||
- Originale .docx nicht überschreiben.
|
||||
- Nach jeder Teilaufgabe kurz Status, dann weiter bis Definition of Done.
|
||||
```
|
||||
|
||||
# Copy-Paste: Nur Word-Vorlage
|
||||
|
||||
```
|
||||
Lies prompts/00-MASTER.md und führe prompts/teilaufgaben/01-word-vorlage.md aus.
|
||||
Nutze eine echte .docx aus „2. Ausbildungsjahr“ als Template und befülle sie – kein selbstgebautes Layout.
|
||||
```
|
||||
|
||||
# Copy-Paste: Nur bessere Vorschläge
|
||||
|
||||
```
|
||||
Lies prompts/00-MASTER.md und führe prompts/teilaufgaben/02-vorschlaege.md aus.
|
||||
Parse alle Berichtshefte erneut und ersetze die Suggestions durch echte Formulierungen mit Gewichtung.
|
||||
```
|
||||
@@ -0,0 +1,83 @@
|
||||
# MASTER PROMPT – Beste Suggestions
|
||||
|
||||
Du arbeitest **nur** an den Vorschlägen (Suggestions) für den Berichtsheft-Generator.
|
||||
Kein Word-Template, kein UI-Redesign, kein PDF – außer es ist zwingend nötig, damit Suggestions gespeichert/geladen werden.
|
||||
|
||||
## Ziel
|
||||
|
||||
Die besten möglichen Vorschläge: so, dass ein generiertes Wochenberichtsheft **nicht von Nicos echten Heften unterscheidbar** ist.
|
||||
|
||||
## Quelle der Wahrheit
|
||||
|
||||
Nur diese Ordner:
|
||||
|
||||
- `1. Ausbildungsjahr/*.docx`
|
||||
- `2. Ausbildungsjahr/*.docx`
|
||||
|
||||
Alles andere (Internet, generische Azubi-Listen, erfundene Büro-Tätigkeiten) ist **verboten**, außer als allerletzte, klar markierte stilgleiche Variante aus bereits belegten Mustern.
|
||||
|
||||
## Kontext Person / Betrieb
|
||||
|
||||
- Nico Baumann, Büromanagement, Kfz-Firma, Abt. 43180
|
||||
- Typisch in den Heften: Termine, Ablage, Rechnungen, Kasse, Reifen/Lager, WM/Crailsheim/Feuchtwangen/Rothenburg, Mobilitätsgarantie, Getränke, Spülmaschine, Aufträge, Versicherungen, Guardey, …
|
||||
|
||||
## Gold-Stil (so müssen Suggestions klingen)
|
||||
|
||||
**Gut (echt):**
|
||||
- `Termine vereinbart`
|
||||
- `Ablage einsortiert`
|
||||
- `Rechnungen geschrieben`
|
||||
- `Reifen bestellt`
|
||||
- `Kassenbuch geführt und die Kasse gezählt`
|
||||
- `Getränke für die Belegschaft geholt`
|
||||
- `Teil beim WM in Crailsheim abgeholt`
|
||||
- `Mobilitätsgarantien abgeschlossen`
|
||||
- `Polypolpreisbildung`
|
||||
- `Introducing a Company`
|
||||
|
||||
**Schlecht (verboten):**
|
||||
- `Eingangsrechnung Nr. 47 geprüft und freigegeben` (künstlich nummeriert)
|
||||
- `BWL: Controlling Kennzahlen` (Schulbuch-Ton, nicht Heft-Ton)
|
||||
- `Optimierung der internen Kommunikationsprozesse`
|
||||
- `Cybersicherheitsherausforderungen absolviert bei „Guardey“` nur behalten wenn **wirklich** so in Heften steht; keine erfundenen IT-Buzzwords
|
||||
|
||||
## Harte Qualitätsregeln
|
||||
|
||||
1. **Original first** – echte Phrasen aus den Heften haben Vorrang
|
||||
2. **Häufigkeit = Qualitätssignal** – oft vorkommende Formulierungen höher gewichten
|
||||
3. **Kurzer Ton** – wie in den Heften (meist 3–12 Wörter, manchmal 1 längerer Satz)
|
||||
4. **Kein Müll** – keine XML-IDs, keine `……`, keine Header (`Abteilung`, `Lfd. Nr.`, `Unterschrift`)
|
||||
5. **Typ trennen** – `betrieb` vs `schule` strikt getrennt
|
||||
6. **Varianten sparsam** – nur leichte Umformulierungen echter Muster, nie neue Themen erfinden
|
||||
7. **Orte/Eigennamen nur wenn belegt** – WM, Crailsheim, Feuchtwangen, Rothenburg, Guardey, Bosch, …
|
||||
8. **Ausgabe** – `web/src/data/suggestions.ts` (+ ggf. Themes), Skript reproduzierbar unter `web/scripts/`
|
||||
|
||||
## Datenmodell
|
||||
|
||||
```ts
|
||||
type Suggestion = {
|
||||
id: number
|
||||
text: string
|
||||
type: "betrieb" | "schule"
|
||||
category: string
|
||||
weight: number // Häufigkeit / Qualitäts-Score aus den Heften
|
||||
}
|
||||
```
|
||||
|
||||
Zusätzlich: `WEEK_THEMES: string[]` nur aus echten „Thema der Woche“-Feldern.
|
||||
|
||||
## Definition of Done (Suggestions)
|
||||
|
||||
- [ ] Alle Hefte geparst
|
||||
- [ ] ≥ 90 % der Betriebs-Suggestions sind 1:1 oder fast 1:1 aus Originalen
|
||||
- [ ] Keine Müll-/Header-Strings
|
||||
- [ ] `weight` steuert Random (häufige Phrasen öfter)
|
||||
- [ ] Schule und Betrieb vermischen sich nicht
|
||||
- [ ] Stichprobe 30 Suggestions: „klingt nach Nico“
|
||||
- [ ] `npm run generate:suggestions` (oder gleichwertig) regeneriert die Datei
|
||||
- [ ] `npm run build` ok
|
||||
|
||||
## Arbeitsweise
|
||||
|
||||
Teilaufgaben in `prompts/suggestions/teilaufgaben/` der Reihe nach.
|
||||
Nach jeder Teilaufgabe: kurze Statusmeldung + was sich in welchen Dateien geändert hat.
|
||||
@@ -0,0 +1,28 @@
|
||||
# Suggestions-Prompts (Master)
|
||||
|
||||
Nur für **beste Vorschläge**. Word-Vorlage/UI liegen absichtlich außerhalb.
|
||||
|
||||
| Datei | Zweck |
|
||||
|-------|--------|
|
||||
| [00-MASTER.md](00-MASTER.md) | Regeln, Stil, DoD |
|
||||
| [START-HIER.md](START-HIER.md) | Copy-Paste |
|
||||
| [teilaufgaben/01-extrahieren.md](teilaufgaben/01-extrahieren.md) | Alle Hefte parsen |
|
||||
| [teilaufgaben/02-saeubern-dedupe.md](teilaufgaben/02-saeubern-dedupe.md) | Müll weg, dedupe |
|
||||
| [teilaufgaben/03-kategorisieren-gewichten.md](teilaufgaben/03-kategorisieren-gewichten.md) | category + weight |
|
||||
| [teilaufgaben/04-varianten-sparsam.md](teilaufgaben/04-varianten-sparsam.md) | max. 30 % Varianten |
|
||||
| [teilaufgaben/05-auswahl-algorithmus.md](teilaufgaben/05-auswahl-algorithmus.md) | weighted random / Woche |
|
||||
| [teilaufgaben/06-qualitaetstor.md](teilaufgaben/06-qualitaetstor.md) | Auto-Check + Stichprobe |
|
||||
|
||||
## Regenerieren / Qualitätstor
|
||||
|
||||
```bash
|
||||
cd web
|
||||
npm run generate:suggestions # Extrakt → Clean → Score → suggestions.ts → verify
|
||||
npm run check:suggestions # nur Qualitätstor
|
||||
```
|
||||
|
||||
## Einstieg
|
||||
|
||||
```
|
||||
Lies prompts/suggestions/START-HIER.md und führe den Block „Alles der Reihe nach“ aus.
|
||||
```
|
||||
@@ -0,0 +1,40 @@
|
||||
# Copy-Paste – Nur Suggestions (beste Qualität)
|
||||
|
||||
## Alles der Reihe nach
|
||||
|
||||
```
|
||||
Du arbeitest NUR an Suggestions.
|
||||
|
||||
Lies und befolge strikt:
|
||||
1) prompts/suggestions/00-MASTER.md
|
||||
2) Dann nacheinander:
|
||||
- prompts/suggestions/teilaufgaben/01-extrahieren.md
|
||||
- prompts/suggestions/teilaufgaben/02-saeubern-dedupe.md
|
||||
- prompts/suggestions/teilaufgaben/03-kategorisieren-gewichten.md
|
||||
- prompts/suggestions/teilaufgaben/04-varianten-sparsam.md
|
||||
- prompts/suggestions/teilaufgaben/05-auswahl-algorithmus.md
|
||||
- prompts/suggestions/teilaufgaben/06-qualitaetstor.md
|
||||
|
||||
Ziel: Vorschläge müssen klingen wie Nico Baumanns echte Berichtshefte
|
||||
(Büro + Kfz: Termine, Ablage, Rechnungen, Reifen, WM/Crailsheim, Kasse, …).
|
||||
|
||||
Verboten: generische KI-Bürofloskeln, nummerierte Kunstsätze, Themen die nie in den Heften vorkommen.
|
||||
Mindestens 70 % Betrieb-Suggestions = exakte Originale aus den .docx.
|
||||
Nach jeder Teilaufgabe kurzer Status, dann weiter bis Definition of Done.
|
||||
```
|
||||
|
||||
## Nur Extraktion + Clean
|
||||
|
||||
```
|
||||
Lies prompts/suggestions/00-MASTER.md und führe
|
||||
01-extrahieren.md + 02-saeubern-dedupe.md aus.
|
||||
Parse alle Berichtshefte in 1. und 2. Ausbildungsjahr.
|
||||
```
|
||||
|
||||
## Nur Auswahl besser machen
|
||||
|
||||
```
|
||||
Lies prompts/suggestions/00-MASTER.md und führe
|
||||
05-auswahl-algorithmus.md aus.
|
||||
Weighted random, Diversität, Ferien = nur Betrieb.
|
||||
```
|
||||
@@ -0,0 +1,31 @@
|
||||
# S01 – Alle Hefte extrahieren
|
||||
|
||||
Lies `prompts/suggestions/00-MASTER.md`. Nur Extraktion – noch keine Varianten erfinden.
|
||||
|
||||
## Auftrag
|
||||
|
||||
1. Parse **jede** `.docx` in `1. Ausbildungsjahr/` und `2. Ausbildungsjahr/`.
|
||||
2. Ziehe Rohtext aus `word/document.xml`.
|
||||
3. Speichere Rohdump + strukturierte Phrasen:
|
||||
- `web/scripts/extracted-all.txt` (Roh)
|
||||
- `web/scripts/raw-phrases.json` mit Feldern:
|
||||
- `sourceFile`
|
||||
- `activities[]`
|
||||
- `weekThemes[]`
|
||||
- `schoolTopics[]`
|
||||
- `frameworkRefs[]` (nur zum Filtern, nicht als Suggestion)
|
||||
|
||||
## Parsing-Hinweise
|
||||
|
||||
Abschnitte typischerweise:
|
||||
- Tätigkeiten vor „Betriebliche Tätigkeiten“ / Rahmenplan
|
||||
- „Thema der Woche …“
|
||||
- „Berufsschule …“
|
||||
|
||||
Alles was Header/Footer/Unterschrift ist → ignorieren.
|
||||
|
||||
## Abnahme
|
||||
|
||||
- [ ] Anzahl Quelldateien = Anzahl geparster Hefte (ca. 78)
|
||||
- [ ] Pro Heft mindestens ein paar Activities (außer reine Urlaubswochen)
|
||||
- [ ] JSON ist valide und nachvollziehbar
|
||||
@@ -0,0 +1,35 @@
|
||||
# S02 – Säubern + Deduplizieren
|
||||
|
||||
Lies `prompts/suggestions/00-MASTER.md`. Nutze die Ausgabe aus S01.
|
||||
|
||||
## Auftrag
|
||||
|
||||
Erzeuge `web/scripts/clean-phrases.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"activities": [{ "text": "...", "count": 14, "sources": ["..."] }],
|
||||
"themes": [{ "text": "...", "count": 5 }],
|
||||
"school": [{ "text": "...", "count": 2 }]
|
||||
}
|
||||
```
|
||||
|
||||
## Filter (muss weg)
|
||||
|
||||
- `Abteilung`, `Ausbildungsnachweis`, `Für die Zeit`, `Name`, `Datum`
|
||||
- `Lfd. Nr.`, `Unterschrift`, `Ausbilderin`, Punkte-Linien `……`
|
||||
- reine Zahlen / lange Ziffernblöcke / XML-Artefakte
|
||||
- `Ferien` als Activity (gehört nur ins Berufsschule-Feld der Woche)
|
||||
- doppelte Zeilen durch Tabellen-Duplikate in Word (gleiche Phrase 2× im selben Heft → count sinnvoll)
|
||||
|
||||
## Dedup
|
||||
|
||||
- case-insensitive
|
||||
- trim, Whitespace normalisieren
|
||||
- optionale Endpunkt-Varianten zusammenführen (`Termine geplant und vergeben.` ≈ ohne Punkt)
|
||||
|
||||
## Abnahme
|
||||
|
||||
- [ ] Top-Activities sehen aus wie echte Heftzeilen
|
||||
- [ ] `Termine vereinbart` / `Ablage …` / `Rechnungen …` sind oben, wenn häufig
|
||||
- [ ] Kein sichtbarer Müll in den Top 50
|
||||
@@ -0,0 +1,49 @@
|
||||
# S03 – Kategorisieren + Gewichten
|
||||
|
||||
Lies `prompts/suggestions/00-MASTER.md`. Input: `clean-phrases.json`.
|
||||
|
||||
## Auftrag
|
||||
|
||||
Baue Suggestions mit Kategorie und Gewicht.
|
||||
|
||||
### Kategorien Betrieb (nur wenn passend)
|
||||
|
||||
- Rechnungswesen
|
||||
- Kunden
|
||||
- Lager
|
||||
- Kasse
|
||||
- Fahrzeuge
|
||||
- Fahrten
|
||||
- Organisation
|
||||
- Betrieb (Fallback)
|
||||
|
||||
### Kategorien Schule
|
||||
|
||||
- BWL
|
||||
- Buchhaltung
|
||||
- Englisch
|
||||
- Deutsch
|
||||
- IT
|
||||
- BFK
|
||||
- Gesellschaft
|
||||
- Berufsschule (Fallback)
|
||||
|
||||
Regeln an echten Wörtern aus den Phrasen ausrichten (Rechnung, Termin, Reifen, Kasse, Crailsheim, Excel, Englisch, …).
|
||||
|
||||
### weight
|
||||
|
||||
```
|
||||
weight = count // Rohhäufigkeit aus den Heften
|
||||
```
|
||||
|
||||
Optional leicht anheben (+1..2), wenn Phrase in mehreren Ausbildungsjahren vorkommt.
|
||||
|
||||
## Ausgabe
|
||||
|
||||
Zwischenfile ok, z. B. `web/scripts/scored-phrases.json`.
|
||||
|
||||
## Abnahme
|
||||
|
||||
- [ ] Jede Phrase hat `type`, `category`, `weight`
|
||||
- [ ] Schule nie als `betrieb` gelabelt (Stichprobe)
|
||||
- [ ] Hohe weights = wirklich häufige Originalphrasen
|
||||
@@ -0,0 +1,40 @@
|
||||
# S04 – Stilgleiche Varianten (sparsam)
|
||||
|
||||
Lies `prompts/suggestions/00-MASTER.md`.
|
||||
|
||||
## Ziel
|
||||
|
||||
Pool groß genug für Abwechslung – aber **ohne** Fake-Büro-Text.
|
||||
|
||||
## Erlaubt
|
||||
|
||||
Nur Varianten, die klar aus einem belegten Muster kommen:
|
||||
|
||||
| Original (belegt) | Erlaubte Variante |
|
||||
|-------------------|-------------------|
|
||||
| Termine vereinbart | Termine telefonisch vereinbart |
|
||||
| Ablage einsortiert | Ablage sortiert |
|
||||
| Rechnungen geschrieben | Rechnungen erstellt |
|
||||
| Getränke geholt | Getränke für die Belegschaft geholt |
|
||||
|
||||
## Verboten
|
||||
|
||||
- Nummerierte Kunstsätze (`Rechnung 1000+i`)
|
||||
- Neue Themen, die nie in den Heften vorkommen
|
||||
- Englische Management-Floskeln
|
||||
- Überlange KI-Sätze
|
||||
|
||||
## Mengenregel
|
||||
|
||||
- Mindestens **70 %** des finalen Betrieb-Pools = exakte Originale
|
||||
- Höchstens **30 %** stilgleiche Varianten
|
||||
- Varianten: `weight` niedriger als das Original (z. B. `max(1, originalWeight - 2)`)
|
||||
|
||||
## Schule
|
||||
|
||||
Für Schule: bevorzugt **nur Originale**. Varianten nur wenn extrem nah (z. B. Tippfehler-Korrektur).
|
||||
|
||||
## Abnahme
|
||||
|
||||
- [ ] Verhältnis Original/Variante dokumentiert (Konsolen-Log reicht)
|
||||
- [ ] 20 zufällige Varianten manuell gegen Originale haltbar
|
||||
@@ -0,0 +1,33 @@
|
||||
# S05 – Auswahl-Algorithmus (beste Random-Sets)
|
||||
|
||||
Lies `prompts/suggestions/00-MASTER.md`.
|
||||
Code vor allem in `web/src/lib/suggest.ts` (+ App nur wenn nötig).
|
||||
|
||||
## Ziel
|
||||
|
||||
Wenn der User „4 neue“, „8 neue“ oder „Woche automatisch füllen“ klickt, sollen die Vorschläge **so gut wie möglich** sein – nicht nur zufällig, sondern gewichtet und passend zur Woche.
|
||||
|
||||
## Regeln
|
||||
|
||||
1. **Weighted random** nach `weight` (häufige echte Phrasen öfter)
|
||||
2. **Keine Duplikate** in Offer + bereits gewählten Texten
|
||||
3. **usedSuggestionIds** meiden, bis Pool zu klein → dann Fallback
|
||||
4. **Ferienwoche / keine Schule:** nur `type: betrieb`
|
||||
5. **Schulwoche:** überwiegend Betrieb; 0–2 Schule-Themen in größeren Offers
|
||||
6. **Auto-füllen Woche:** ca. 8–12 Betriebseinträge, thematisch gemischt (nicht 8× nur Ablage)
|
||||
7. **Diversität:** bei Auto-füllen max. 2–3 aus derselben `category`, außer Pool zu klein
|
||||
8. **Themen der Woche:** random aus echten `WEEK_THEMES`
|
||||
|
||||
## API (orientierend)
|
||||
|
||||
```ts
|
||||
pickRandomSuggestions(monday, count, usedIds, alreadySelectedTexts)
|
||||
pickWeekSet(monday, usedIds) // für Auto-füllen: diverse, gewichtete Woche
|
||||
```
|
||||
|
||||
## Abnahme
|
||||
|
||||
- [ ] 10× „4 neue“: Phrasen klingen echt, wenig Wiederholung
|
||||
- [ ] Auto-füllen: gemischte Kategorien
|
||||
- [ ] Ferienwoche: keine Schul-Vorschläge im Offer
|
||||
- [ ] Build ok
|
||||
@@ -0,0 +1,38 @@
|
||||
# S06 – Qualitätstor „klingt nach Nico“
|
||||
|
||||
Lies `prompts/suggestions/00-MASTER.md`. Abschluss-Check nur für Suggestions.
|
||||
|
||||
## Automatische Checks (Skript)
|
||||
|
||||
Schreibe/aktualisiere ein Skript, das failt wenn:
|
||||
|
||||
- Phrase matcht Müll-Regex (Unterschrift, Lfd. Nr., `……`, lange Ziffern)
|
||||
- `type` fehlt / ungültig
|
||||
- `weight < 1`
|
||||
- Duplikate (case-insensitive)
|
||||
- Anteil exakter Originale am Betrieb-Pool < 70 % (gegen `clean-phrases.json`)
|
||||
|
||||
## Manuelle Stichprobe (du als Agent)
|
||||
|
||||
Ziehe 30 zufällige Betrieb + 15 Schule und bewerte:
|
||||
|
||||
| Kriterium | Ja/Nein |
|
||||
|-----------|---------|
|
||||
| Könnte so im echten Heft stehen | |
|
||||
| Kein KI-/Lehrbuch-Ton | |
|
||||
| Kategorie plausibel | |
|
||||
|
||||
Wenn > 3 klare Flops → zurück zu S02/S04 und nachbessern.
|
||||
|
||||
## Final schreiben
|
||||
|
||||
- `web/src/data/suggestions.ts` final generieren
|
||||
- `WEEK_THEMES` nur echte Themen
|
||||
- `npm run generate:suggestions` dokumentieren/aktualisieren
|
||||
- `npm run build`
|
||||
|
||||
## Abnahme
|
||||
|
||||
- [ ] Auto-Checks grün
|
||||
- [ ] Stichprobe bestanden
|
||||
- [ ] Kurzbericht: Anzahl Betrieb/Schule, Top-10 Phrasen, Original-Anteil
|
||||
@@ -0,0 +1,60 @@
|
||||
# Teilaufgabe 01 – Echte Word-Vorlage nutzen
|
||||
|
||||
Lies zuerst `prompts/00-MASTER.md`. Dann setze genau diese Aufgabe um.
|
||||
|
||||
## Problem
|
||||
|
||||
Der aktuelle Export in `web/src/lib/exportDocx.ts` baut ein **neues** Dokument mit der `docx`-Library.
|
||||
Das sieht **nicht** aus wie die echten Hefte in:
|
||||
|
||||
- `1. Ausbildungsjahr/*.docx`
|
||||
- `2. Ausbildungsjahr/*.docx`
|
||||
|
||||
## Ziel
|
||||
|
||||
Neue Berichtshefte müssen die **identische Vorlage** der bestehenden Ausbildungsnachweise verwenden.
|
||||
|
||||
## Vorgehen
|
||||
|
||||
1. Nimm eine saubere Vorlage aus den vorhandenen Heften, z. B.
|
||||
`2. Ausbildungsjahr/Berichtsheft 23.03 - 27.03.2026 (77).docx`
|
||||
Kopiere sie nach `web/public/templates/ausbildungsnachweis.docx` (oder `web/src/assets/templates/`).
|
||||
|
||||
2. Analysiere `word/document.xml`: Welche Textstellen müssen ersetzt werden?
|
||||
- Abteilung / Nr. / Zeitraum / Ausbildungsjahr
|
||||
- Name / Datum
|
||||
- Tägliche Tätigkeiten (Bullet-Liste)
|
||||
- Lfd. Nr. Ausbildungsrahmenplan
|
||||
- Thema der Woche
|
||||
- Berufsschule (Themen oder „Ferien“)
|
||||
- Unterschriftsdatum
|
||||
|
||||
3. Implementiere Befüllung durch **Vorlagen-Kopie + Textersetzung** (bevorzugt):
|
||||
- Option A: `docxtemplater` + `pizzip` mit Platzhaltern in einer vorbereiteten Template-Kopie
|
||||
- Option B: ZIP öffnen, in `document.xml` gezielt ersetzen, wieder packen
|
||||
- Option C: `docx-templates` / ähnlich
|
||||
|
||||
**Nicht** akzeptabel: komplett neues Layout mit `new Document({...})` ohne die Original-Styles/Tabellen.
|
||||
|
||||
4. Erhalte:
|
||||
- Schriften, Abstände, Tabellen, Ränder der Vorlage
|
||||
- Zweispaltige/strukturierte IHK-Optik wie in den Originalen
|
||||
- Dateiname: `Berichtsheft DD.MM - DD.MM.YYYY (N).docx`
|
||||
|
||||
5. Speichern/Download im Browser; Originale nicht überschreiben.
|
||||
Optional zusätzlich nach `export/2. Ausbildungsjahr/` schreiben, wenn Node-seitig möglich – Download reicht.
|
||||
|
||||
6. Feiertage in der Tätigkeitsliste wie in Originalen vermerken (z. B. `Freitag Feiertag`).
|
||||
|
||||
## Abnahme
|
||||
|
||||
- [ ] Exportierte DOCX neben ein Original legen → optisch gleich (Vorlage erkennbar)
|
||||
- [ ] Inhalte der aktuellen Woche stehen korrekt drin
|
||||
- [ ] `npm run build` ok
|
||||
- [ ] Kurzer Hinweis in Commit-/Antwort: welcher Template-Pfad genutzt wird
|
||||
|
||||
## Nicht tun
|
||||
|
||||
- Eigenes „ähnliches“ Layout designen
|
||||
- PDF in dieser Teilaufgabe priorisieren (kommt in 05)
|
||||
- Alte Hefte im Quellordner ändern
|
||||
@@ -0,0 +1,66 @@
|
||||
# Teilaufgabe 02 – Bessere Vorschläge aus allen Berichtsheften
|
||||
|
||||
Lies zuerst `prompts/00-MASTER.md`. Dann setze genau diese Aufgabe um.
|
||||
|
||||
## Problem
|
||||
|
||||
Vorschläge sind teilweise schon extrahiert, aber noch nicht gut genug:
|
||||
|
||||
- zu generisch / künstlich wirkende Varianten
|
||||
- Stil weicht von Nicos echten Formulierungen ab
|
||||
- zu wenig Gewichtung häufiger, typischer Einträge
|
||||
- Schulthemen und Betriebsthemen vermischen sich falsch
|
||||
|
||||
## Ziel
|
||||
|
||||
Eine Vorschlagsdatenbank, die sich **anfühlt wie aus den echten Heften** von Nico.
|
||||
|
||||
## Vorgehen
|
||||
|
||||
1. **Alle** `.docx` in `1. Ausbildungsjahr/` und `2. Ausbildungsjahr/` erneut parsen
|
||||
(Skript unter `web/scripts/`, Ausgabe z. B. `clean-phrases.json`).
|
||||
|
||||
2. Extrahiere sauber getrennt:
|
||||
- **Betriebliche Tätigkeiten** (kurze Sätze wie in den Heften)
|
||||
- **Thema der Woche**
|
||||
- **Berufsschule**-Themen
|
||||
- Häufigkeit je Phrase
|
||||
|
||||
3. Qualitätsfilter:
|
||||
- Header/Unterschriften/Nummern-Müll entfernen (`43180`, `Lfd. Nr.`, `…………`, IDs)
|
||||
- Duplikate (case-insensitive) entfernen
|
||||
- Länge typisch halten (wie Originale: oft 1 kurze Zeile, manchmal 1 längerer Satz)
|
||||
- Orte/Firmen aus den Heften behalten: Crailsheim, Feuchtwangen, Rothenburg, WM, Guardey, Bosch-Mobilität, …
|
||||
|
||||
4. Aufbau `web/src/data/suggestions.ts`:
|
||||
```ts
|
||||
{ id, text, type: 'betrieb' | 'schule', category, weight?: number }
|
||||
```
|
||||
- `weight` = Häufigkeit aus den Heften (für bessere Random-Auswahl)
|
||||
- Nur stilgleiche Varianten ergänzen, wenn nötig – **nicht** erfundene Büro-Floskeln
|
||||
|
||||
5. Auswahl-Logik in `web/src/lib/suggest.ts`:
|
||||
- Gewichtet random (häufige Phrasen öfter)
|
||||
- Keine Wiederholung in derselben Woche / bereits genutzte IDs meiden
|
||||
- In Schulwochen: überwiegend Betrieb + passende Schule-Themen
|
||||
- In Ferienwochen: **nur Betrieb**, Schule-Feld = `Ferien`
|
||||
|
||||
6. Themen der Woche: echte Liste aus den Heften (`Lagerhaltung`, `Rechnungswesen`, `Büroabläufe`, …).
|
||||
|
||||
## Abnahme
|
||||
|
||||
- [ ] Stichprobe 20 Vorschläge: klingen wie Nico-Hefte
|
||||
- [ ] Keine Müll-Strings / XML-Reste
|
||||
- [ ] Ferienwoche zeigt keine Schul-Vorschläge als Pflicht
|
||||
- [ ] „4 neue“ / „8 neue“ / Auto-füllen liefert abwechslungsreiche, realistische Sets
|
||||
- [ ] Skript reproduzierbar: `npm run generate:suggestions`
|
||||
|
||||
## Beispiele guter Stil (Orientierung)
|
||||
|
||||
- `Termine vereinbart`
|
||||
- `Ablage einsortiert`
|
||||
- `Reifen bestellt`
|
||||
- `Kassenbuch geführt und die Kasse gezählt`
|
||||
- `Teil beim WM in Crailsheim abgeholt`
|
||||
- `Mobilitätsgarantien abgeschlossen`
|
||||
- `Polypolpreisbildung` / `Introducing a Company` (Schule)
|
||||
@@ -0,0 +1,46 @@
|
||||
# Teilaufgabe 03 – Wochen-UI (nichts tippen)
|
||||
|
||||
Lies zuerst `prompts/00-MASTER.md`. Dann setze genau diese Aufgabe um.
|
||||
|
||||
## Ziel
|
||||
|
||||
Eine klare, minimale Oberfläche nur für **eine Woche**:
|
||||
|
||||
1. Woche anzeigen (Nr., Zeitraum, Ausbildungsjahr, Tagestypen)
|
||||
2. Vorschläge zeigen (4 random, mehr möglich)
|
||||
3. Auswahl → Berichtsheft erzeugen (DOCX/PDF)
|
||||
4. Automatisch zur nächsten Woche
|
||||
|
||||
## UI-Anforderungen
|
||||
|
||||
- **Kein** freies Textfeld für Tätigkeiten
|
||||
- **Kein** Tages-Editor Zeile für Zeile tippen
|
||||
- Aktionen:
|
||||
- `4 neue` Vorschläge
|
||||
- `8 neue` Vorschläge
|
||||
- `Woche automatisch füllen`
|
||||
- Vorschlag antippen = auswählen / abwählen
|
||||
- Gewählte Liste mit Entfernen (×)
|
||||
- `Berichtsheft erstellen (DOCX + PDF) & nächste Woche`
|
||||
- Thema der Woche: nur aus Vorschlägen/Würfeln (`Anderes Thema`), nicht tippen
|
||||
- Wochen-Navigation Vor/Zurück optional, aber Fortschritt speichern (`localStorage`)
|
||||
|
||||
## Logik
|
||||
|
||||
- Start: Woche 79 ab `06.04.2026`
|
||||
- Mindestanzahl Betriebs-Vorschläge vor Export (z. B. 4–8)
|
||||
- Nach Erfolg: Woche als `done`, `usedSuggestionIds` merken, `currentWeekMonday` +7 Tage
|
||||
- Feiertage/Ferien in der Wochenübersicht sichtbar (Pills)
|
||||
|
||||
## Design
|
||||
|
||||
- Eine klare Arbeitsfläche, kein Dashboard-Chaos
|
||||
- Deutsch, gut auf Mobile bedienbar
|
||||
- Vorhandenes Look in `web/src/App.css` verfeinern, nicht komplett verwerfen
|
||||
|
||||
## Abnahme
|
||||
|
||||
- [ ] User kann ein komplettes Heft erzeugen, ohne Tastatur für Inhalt
|
||||
- [ ] Auto-füllen + Export funktioniert
|
||||
- [ ] Nächste Woche erscheint danach
|
||||
- [ ] Kein Tages-Schreibmodus mehr in der UI
|
||||
@@ -0,0 +1,42 @@
|
||||
# Teilaufgabe 04 – Kalenderregeln (Schule / Ferien / Feiertage)
|
||||
|
||||
Lies zuerst `prompts/00-MASTER.md`. Dann setze genau diese Aufgabe um.
|
||||
|
||||
## Regeln (verbindlich)
|
||||
|
||||
| Situation | Ergebnis |
|
||||
|-----------|----------|
|
||||
| Montag, Mittwoch, Freitag | Betrieb |
|
||||
| Dienstag, Donnerstag | Berufsschule |
|
||||
| Tag liegt in BW-Schulferien | **Betrieb** (auch Di/Do) |
|
||||
| Gesetzlicher Feiertag BW | Feiertag |
|
||||
| Samstag, Sonntag | überspringen |
|
||||
|
||||
## Daten
|
||||
|
||||
Pflege in `web/src/data/holidays-bw.ts` (oder gleichwertig):
|
||||
|
||||
- Osterferien, Pfingstferien, Sommerferien, Herbstferien, Weihnachtsferien (mind. 2026–2027)
|
||||
- Feiertage: Neujahr, Hl. Drei Könige, Karfreitag, Ostermontag, 1.5., Himmelfahrt, Pfingstmontag, Fronleichnam, 3.10., Allerheiligen, 25./26.12.
|
||||
|
||||
## Auswirkungen auf App
|
||||
|
||||
1. Wochen-Pills zeigen korrekten Typ
|
||||
2. Vorschlags-Pool: Ferienwoche → nur Betrieb; Schulwoche → Betrieb + Schule
|
||||
3. Export Berufsschule-Feld: `Ferien` oder echte Schulthemen
|
||||
4. Feiertag im Tätigkeitsblock wie Originale: z. B. `Freitag Feiertag`
|
||||
5. Wochennummer relativ zu Heft 78 / Start 79 korrekt
|
||||
|
||||
## Abnahme
|
||||
|
||||
- [x] Woche 79 (`06.04.–10.04.2026`): Ostermontag Feiertag, Rest Betrieb (Osterferien)
|
||||
- [x] Eine normale Schulwoche nach Ferien: Di/Do = Schule
|
||||
- [x] Unit-/Smoke-Checks oder kurze manuelle Verifikation dokumentieren
|
||||
|
||||
### Verifikation
|
||||
|
||||
```bash
|
||||
cd web && npm run test:calendar
|
||||
```
|
||||
|
||||
Abgedeckt in `web/scripts/verify-calendar.mjs`: Woche 79, Schulwoche 13.04.2026, Ferien→Betrieb, Feiertag-Zeile, Vorschlags-Pool, Wochennummern 78/79/80.
|
||||
@@ -0,0 +1,29 @@
|
||||
# Teilaufgabe 05 – PDF-Export an Vorlage angleichen
|
||||
|
||||
Lies zuerst `prompts/00-MASTER.md`. Ideal **nach** Teilaufgabe 01 (Word-Vorlage).
|
||||
|
||||
## Ziel
|
||||
|
||||
PDF soll denselben Inhalt und möglichst dieselbe Struktur liefern wie die befüllte Word-Vorlage.
|
||||
|
||||
## Inhalt (gleiche Reihenfolge wie Original-Hefte)
|
||||
|
||||
1. Abteilung, Ausbildungsnachweis Nr., Zeitraum
|
||||
2. Ausbildungsjahr, Name, Datum
|
||||
3. Tägliche Tätigkeiten (flach, wie im Original – nicht unnötig nach Tagen zerlegen, außer die Vorlage macht das)
|
||||
4. Betriebliche Tätigkeiten / Zuordnung Lfd. Nr.
|
||||
5. Thema der Woche
|
||||
6. Berufsschule (Themen oder Ferien)
|
||||
7. Unterschriftsbereiche
|
||||
|
||||
## Technik
|
||||
|
||||
- Bevorzugt: aus derselben Week-Datenstruktur wie DOCX generieren (`WeekEntry`)
|
||||
- `jspdf` ok, oder PDF aus DOCX konvertieren falls robust machbar
|
||||
- Dateiname analog: `Berichtsheft DD.MM - DD.MM.YYYY (N).pdf`
|
||||
|
||||
## Abnahme
|
||||
|
||||
- [ ] Ein Klick erzeugt DOCX + PDF mit gleichem Inhalt
|
||||
- [ ] Keine leeren Pflichtfelder bei fertiger Woche
|
||||
- [ ] Feiertag/Ferien korrekt vermerkt
|
||||
@@ -0,0 +1,59 @@
|
||||
# Teilaufgabe 06 – Qualität / Endcheck
|
||||
|
||||
Lies zuerst `prompts/00-MASTER.md`. Führe diesen Check aus, wenn 01–05 weitgehend fertig sind.
|
||||
|
||||
## Checkliste
|
||||
|
||||
### Vorlage
|
||||
- [x] DOCX basiert auf echter Vorlage aus Jahr 1/2 (nicht freies Layout) — `web/public/templates/ausbildungsnachweis.docx` + PizZip-Befüllung in `exportDocx.ts`
|
||||
- [ ] Optischer Vergleich: neues Heft vs. `Berichtsheft 23.03 - 27.03.2026 (77).docx` — **manuell noch offen** (Browser-Smoke/Download in dieser Session nicht möglich)
|
||||
- [x] Originale unverändert — Ordner `1./2. Ausbildungsjahr/` nicht angefasst; Vorlage ist Kopie unter `web/public/templates/`
|
||||
|
||||
### Vorschläge
|
||||
- [x] Phrasen aus echten Heften, Stichprobe ok (788 Einträge; Stichprobe: Kasse, Rechnungen, Spülmaschine, Berufsschule-Themen)
|
||||
- [x] Kein XML-/Nummern-Müll (Scan: 0 Treffer auf XML/Müll-Muster)
|
||||
- [x] Gewichtung / keine harten Wochen-Duplikate (`usedSuggestionIds` + Text-Ausschluss in `pickRandomSuggestions`)
|
||||
|
||||
### UX
|
||||
- [x] Nichts tippen für Inhalt (keine Textfelder für Tätigkeiten)
|
||||
- [x] 4/8 neue + Auto-füllen
|
||||
- [x] Nach Export nächste Woche (`finishWeek` setzt `currentWeekMonday` auf `nextWeekMonday`)
|
||||
- [x] Reset-Funktion klar („Fortschritt zurücksetzen“ mit Confirm)
|
||||
|
||||
### Kalender
|
||||
- [x] Woche 79 Ferien/Feiertag korrekt (06.04. Ostermontag/Feiertag, Di–Fr Betrieb + Osterferien; Schule = Ferien)
|
||||
- [x] Schulwoche Di/Do Schule (z. B. 13.–17.04.2026)
|
||||
|
||||
### Technik
|
||||
- [x] `npm run build` grün (nach Fix: ungenutzter Param in `exportPdf.ts`, Vitest-Config aus `vite.config.ts` entfernt, Tests aus `tsc`-Include ausgeschlossen)
|
||||
- [x] Keine sensiblen Secrets (keine `.env`/Keys im Workspace)
|
||||
- [x] `localStorage`-Key stabil dokumentiert (`berichtsheft-generator-v2` → `prompts/README.md` + exportierte `STORAGE_KEY`)
|
||||
|
||||
## Smoke-Test (manuell)
|
||||
|
||||
1. App starten (`cd web && npm run dev`)
|
||||
2. Fortschritt zurücksetzen
|
||||
3. Woche 79 → automatisch füllen → DOCX+PDF
|
||||
4. Datei öffnen und mit Original vergleichen
|
||||
5. Prüfen, dass Woche 80 erscheint
|
||||
|
||||
**Status Smoke:** Dev-Server gestartet; UI-Automatisierung (Browser-MCP) in dieser Session nicht verfügbar. Logik für Schritte 2–5 per Code/Kalender-Tests abgesichert; **Schritt 4 (optischer DOCX-Vergleich) bleibt manuell.**
|
||||
|
||||
## Ergebnis
|
||||
|
||||
Stand Endcheck (26.07.2026):
|
||||
|
||||
### Erfüllt
|
||||
- Vorlage-Pipeline: echte DOCX-Kopie + XML-Befüllung (nicht mehr `new Document` freies Layout)
|
||||
- UX/Kalender/Vorschläge/Build/localStorage wie oben abgehakt
|
||||
- Woche 79/80-Regeln und Feiertagszeile durch `calendar.test.ts` spezifiziert
|
||||
|
||||
### Noch offen
|
||||
1. **Manueller Optik-Check** Export-DOCX neben Heft 77 legen (gleiche Tabellen/Schriften/Abschnitte)
|
||||
2. **Vitest-Integration** in `vite.config.ts` wiederherstellen, sobald `vitest`-Install/Types zuverlässig sind (`npx vitest run` separat möglich)
|
||||
3. Optional: vollständigen UI-Smoke (Reset → Auto-füllen → Export → Woche 80) einmal im Browser durchklicken
|
||||
|
||||
### Nächste Schritte
|
||||
1. Ein Export aus Woche 79 erzeugen und optisch mit `2. Ausbildungsjahr/Berichtsheft 23.03 - 27.03.2026 (77).docx` vergleichen
|
||||
2. Bei Abweichungen nur `exportDocx.ts` / Template-Befüllung nachschärfen (Originale nicht ändern)
|
||||
3. Vitest sauber verdrahten (`defineConfig` aus `vitest/config` + Types), wenn npm-Install stabil ist
|
||||
Reference in New Issue
Block a user