Bläddra i källkod

claude.md

master
FlorianEisenmenger 1 dag sedan
förälder
incheckning
60dac9b04a
1 ändrade filer med 40 tillägg och 2 borttagningar
  1. +40
    -2
      CLAUDE.md

+ 40
- 2
CLAUDE.md Visa fil

@@ -27,7 +27,7 @@ httpdocs/
│ ├── Repository/
│ │ ├── Central/
│ │ └── Tenant/
│ ├── Service/ # TenantContext, RegistrationService, LexofficeService, etc.
│ ├── Service/ # TenantContext, RegistrationService, LexofficeService, MiteImportService, etc.
│ ├── Doctrine/ # TenantConnectionMiddleware
│ ├── EventSubscriber/ # TenantRequestSubscriber, ArchivedUserSubscriber
│ ├── Security/ # ArchivedUserChecker, AccessDeniedHandler
@@ -172,7 +172,7 @@ Superadmin = Account-Ersteller, kann Kontoinhaber übertragen, `primaryColor` un
## Services-Injection (services.yaml)

Controller die Tenant-Entities nutzen brauchen den `tenant_entity_manager` explizit:
- `$tenantEm: '@doctrine.orm.tenant_entity_manager'` (TimeTrackingController, ReportController)
- `$tenantEm: '@doctrine.orm.tenant_entity_manager'` (TimeTrackingController, ReportController, ImportController)
- `$em: '@doctrine.orm.tenant_entity_manager'` (ClientController, ProjectController, ServiceController)

## Report-Exporte
@@ -338,6 +338,44 @@ Billable/Non-Billable Trennung via `Service.billable`. Revenue-Berechnung nutzt
- **Brand-Farbe**: Billable-Balken nutzen `--color-primary`, Non-Billable grau
- **Donut-Charts**: Drei nebeneinander (3-Spalten-Grid, responsive 1-Spalte), eigene Legende mit Farb-Dot, Name, Wert und Prozent. 8-Farben-Palette, „Rest" in Grau

## mite-Import

Import von Kunden, Projekten, Leistungen und Zeiteinträgen aus mite-Backups (XML). Erreichbar als eigener Tab in den Account-Einstellungen (nur Admin).

### Architektur

- **Backend**: `ImportController` (Preview + Execute), `MiteImportService` (Parsing, Matching, Import)
- **Frontend**: Import-Logik in `account.js`, i18n über `window.ACCOUNT.i18n`
- **Styles**: Import-spezifische Klassen in `_account.scss`
- **Template**: Import-Tab in `templates/account/index.html.twig`

### API-Endpunkte

| Route | Method | Beschreibung |
|------------------------------|--------|-------------------------------------------------|
| `/api/import/mite/preview` | POST | XML analysieren: Zähler, User-Mapping, Warnings |
| `/api/import/mite/execute` | POST | Import durchführen (Clients, Projects, Services, TimeEntries, optional User) |

### Zwei-Schritt-Flow

1. **Analyse** (`preview`): XML-Datei hochladen → `MiteImportService::analyze()` parst XML, zeigt Übersicht (Anzahl Kunden/Projekte/Services/Einträge, Zeitraum, Warnungen) und User-Mapping (bestehende User per E-Mail matchen)
2. **Import** (`execute`): `MiteImportService::execute()` importiert in einer Transaktion. Matching per Name — existierende Entities werden wiederverwendet, neue angelegt

### User-Mapping

- mite-User werden per E-Mail mit bestehenden Account-Usern gematcht
- Nicht-gematchte User: wahlweise dem aktuellen User zuordnen oder neuen System-User anlegen (`createUsers`-Parameter)
- Neue User bekommen Rolle `member` (mite `owner`/`admin`/`coworker`) oder `tracker`

### Import-Details

- Stundensätze werden von Cent (mite) in Euro konvertiert
- Gesperrte mite-Einträge (`locked`) → `invoiced = true`
- Archivierte Entities → `archivedAt` gesetzt
- Projekte ohne zugeordneten Kunden werden übersprungen
- Batch-Flush alle 100 TimeEntries (Performance)
- Max. Dateigröße: 20 MB, nur XML

## TenantConnectionMiddleware

Registriert via Service-Tag in `services.yaml` (nicht via `doctrine.yaml` — DoctrineBundle 3.x unterstützt `middlewares`-Config-Key nicht):


Laddar…
Avbryt
Spara