# Project: AufmaßWeb (AufmassCreater v2.35)

## Obsidian Status-Speicherung
**WICHTIG:** Am Ende jeder Session (oder wenn der Nutzer darum bittet), speichere den aktuellen Projektstatus in Obsidian:

### Vault-Pfad
```
C:\NC_KPT\Documents\_SecondBrain\DD_KPT\Agentic OS\
```

### Was speichern
1. **Journal/<yyyy-MM-dd>.md** – Heutige Session
2. **Goals/Current.md** – Gesamtstatus (`Stand:`+ Abgeschlossen + Nächste Schritte)
3. **Chats/<yyyy-MM-dd>.md** (optional) – Detaillierte Zusammenfassung

### Manuelles Skript
Im Projekt-Root: `.\save-status.ps1`

### Wichtige Pfade
- Projekt-Root: `C:\NC_KPT\Documents\_Zwischenablage\_Coding\AufmassCreater v2.35 (20260309)`
- Web-App: `_aufmass_web\` (vollständig: `C:\NC_KPT\Documents\_Zwischenablage\_Coding\AufmassCreater v2.35 (20260309)\_aufmass_web`)
- Python: `C:\Users\FK\AppData\Local\Programs\Python\Python39\python.exe`
- Server: `http://localhost:5000`
- DB: `_aufmass_web\data\aufmass.db`

## Modul-Status
| Legacy | Größe | Python-Modul | Status |
|--------|-------|-------------|--------|
| `sasmecka` | 681 Z. | `sas_mecka.py` | ✅ Fertig |
| `neffachberg` | 1319 Z. | `neff_achberg.py` | ✅ Fertig (298 Z.) |
| `graben` | 1400+ Z. | `graben.py` | ⚠️ Stark vereinfacht |
| `ftth` | 1336 Z. | `ftth.py` | ⚠️ Stark vereinfacht |
| `gf` | 1638+ Z. | `gf_montage.py` | ⚠️ Stark vereinfacht |
| `gruben` | 1225 Z. | `gruben.py` | ⚠️ Stark vereinfacht |
| `kabelzug` | 262 Z. | `kabelzug.py` | ⚠️ Vereinfacht |
| `absperrung` | 92 Z. | `absperrung.py` | ⚠️ Leicht vereinfacht |

## Custom Module Builder (Phasen 1-5) ✅
- **Phase 1** – CustomModule + CustomModuleAssignment DB-Modelle, CRUD-Routen, Template-Import, Permission-System
- **Phase 2** – Drag & Drop Formular-Builder mit 9 Feldtypen, Conditional-Show, Live-Vorschau, Properties-Panel
- **Phase 3** – Regel-Builder mit Tabsystem, Bedingungs-Editor (8 Operatoren), Aktions-Editor (LV-Lookup, Spalten-Overrides, Formel-Parser)
- **Phase 4** – Execution Engine: Form-Renderer + Rule-Executor, HTMX-Routen (`/formular`, `/berechnen`), Integration in `bearbeiten.html`
- **Phase 5** – Drag & Drop Sortierung per Firma mit SortableJS und Batch-Sort-API
- **Seed**: "Kabelgraben Standard" mit 9 Feldern + 4 Regeln
- **15 Routen**: Index, Neu, Bearbeiten, Builder, Löschen, Importieren, Als-Vorlage, User-Toggle, Form-JSON, Rules-JSON, Available, Formular, Berechnen, Sort-Batch, Sort

## Wichtige Code-Konventionen
- **Zahlen**: `type="text" inputmode="decimal"`, `sanitizeNum()`/`parseNum()`/`germanNum()`/`validateNumField()`
- **ST/LE/STD/h/Psch**: Faktor=1,0, Menge leer+amber Highlight
- **Einfügeposition**: `rightLastClickedIdx` (nicht `:last-child`)
- **Spalten-Filter**: Reine clientseitige Ansichtsfilter, keine Server-Anfrage
- **Spalten-Resize**: `pointer-events:none` + 10px Hit-Areal
- **Export "Aktuelle Ansicht"**: `?visible_ids=1,2,3`
- **PDF-Engine**: fpdf2 mit DejaVuSans (nicht xhtml2pdf)
- **TXT-Format**: 13 Felder, `|`-separiert, Abschnitt als 1. Spalte
- **Modul-Architektur**: `_lookup_pos()` + `_make_pos()` + `berechne()`

## Letzte Änderungen (2026-06-09)
- Pfade korrigiert: `C:` statt `E:`
- NetBird VPS Clean-Rebuild + Dashboard Setup
- AGENTS.md mit korrektem Obsidian-Vault-Pfad
