Ersetze Docusaurus vollständig durch Nuxt-Content-Docs-App
All checks were successful
Build and Push Docker Images / verify-docs-sync (push) Successful in 9s
Build and Push Docker Images / build-backend (push) Successful in 14s
Build and Push Docker Images / build-frontend (push) Successful in 13s
Build and Push Docker Images / build-docs (push) Successful in 1m47s

This commit is contained in:
2026-04-22 18:16:00 +02:00
parent d704e343fc
commit 8c458f4953
28 changed files with 837 additions and 233 deletions

View File

@@ -0,0 +1,238 @@
# Backend API Funktionskatalog
Automatisch generiert (deterministisch, ohne Zeitstempel).
Hinweis: Diese Datei wird durch `docs/scripts/sync-funktionsdoku.mjs` erzeugt.
## backend/src/routes/admin.ts
| Methode | Pfad |
|---|---|
| POST | `/admin/add-user-to-tenant` |
| POST | `/admin/customers/:customerId/invite-portal-user` |
| GET | `/admin/overview` |
| POST | `/admin/tenants` |
| PUT | `/admin/tenants/:tenant_id` |
| GET | `/admin/user-tenants/:user_id` |
| POST | `/admin/users` |
| PUT | `/admin/users/:user_id` |
| PUT | `/admin/users/:user_id/access` |
## backend/src/routes/auth/auth-authenticated.ts
| Methode | Pfad |
|---|---|
| POST | `/auth/password/change` |
| POST | `/auth/refresh` |
## backend/src/routes/auth/auth.ts
| Methode | Pfad |
|---|---|
| POST | `/auth/login` |
| POST | `/auth/logout` |
| POST | `/auth/password/reset` |
| POST | `/auth/register` |
## backend/src/routes/auth/me.ts
| Methode | Pfad |
|---|---|
| GET | `/me` |
## backend/src/routes/auth/user.ts
| Methode | Pfad |
|---|---|
| GET | `/user/:id` |
| PUT | `/user/:id/profile` |
## backend/src/routes/banking.ts
| Methode | Pfad |
|---|---|
| GET | `/banking/iban/:iban` |
| GET | `/banking/institutions/:bic` |
| GET | `/banking/link/:institutionid` |
| GET | `/banking/requisitions/:reqId` |
| POST | `/banking/statements` |
| DELETE | `/banking/statements/:id` |
| GET | `/banking/statements/:id/suggestions` |
## backend/src/routes/devices/rfid.ts
| Methode | Pfad |
|---|---|
| POST | `/rfid/createevent/:terminal_id` |
## backend/src/routes/emailAsUser.ts
| Methode | Pfad |
|---|---|
| GET | `/email/accounts/:id?` |
| POST | `/email/accounts/:id?` |
| POST | `/email/send` |
## backend/src/routes/exports.ts
| Methode | Pfad |
|---|---|
| GET | `/exports` |
| POST | `/exports/datev` |
| POST | `/exports/sepa` |
## backend/src/routes/files.ts
| Methode | Pfad |
|---|---|
| GET | `/files/:id?` |
| POST | `/files/download/:id?` |
| POST | `/files/presigned/:id?` |
| POST | `/files/upload` |
## backend/src/routes/functions.ts
| Methode | Pfad |
|---|---|
| GET | `/functions/changelog` |
| GET | `/functions/check-zip/:zip` |
| POST | `/functions/pdf/:type` |
| POST | `/functions/serial/finish/:execution_id` |
| POST | `/functions/serial/start` |
| POST | `/functions/services/backfillfiletext` |
| POST | `/functions/services/bankstatementsync` |
| POST | `/functions/services/prepareincominginvoices` |
| POST | `/functions/services/syncdokubox` |
| GET | `/functions/timeevaluation/:user_id` |
| GET | `/functions/usenextnumber/:numberrange` |
| POST | `/print/label` |
## backend/src/routes/health.ts
| Methode | Pfad |
|---|---|
| GET | `/ping` |
## backend/src/routes/helpdesk.inbound.email.ts
| Methode | Pfad |
|---|---|
| POST | `/helpdesk/inbound-email` |
## backend/src/routes/helpdesk.inbound.ts
| Methode | Pfad |
|---|---|
| POST | `/helpdesk/inbound/:public_token` |
## backend/src/routes/helpdesk.ts
| Methode | Pfad |
|---|---|
| POST | `/helpdesk/channels` |
| POST | `/helpdesk/contacts` |
| GET | `/helpdesk/conversations` |
| POST | `/helpdesk/conversations` |
| GET | `/helpdesk/conversations/:id` |
| GET | `/helpdesk/conversations/:id/messages` |
| POST | `/helpdesk/conversations/:id/messages` |
| POST | `/helpdesk/conversations/:id/reply` |
| PATCH | `/helpdesk/conversations/:id/status` |
## backend/src/routes/history.ts
| Methode | Pfad |
|---|---|
| GET | `/history` |
## backend/src/routes/internal/auth.m2m.ts
| Methode | Pfad |
|---|---|
| POST | `/auth/m2m/token` |
## backend/src/routes/internal/tenant.ts
| Methode | Pfad |
|---|---|
| GET | `/tenant/:id` |
| GET | `/tenant/:id/profiles` |
| GET | `/tenant/users` |
## backend/src/routes/internal/time.ts
| Methode | Pfad |
|---|---|
| POST | `/staff/time/event` |
| GET | `/staff/time/spans` |
## backend/src/routes/notifications.ts
| Methode | Pfad |
|---|---|
| POST | `/notifications/trigger` |
## backend/src/routes/profiles.ts
| Methode | Pfad |
|---|---|
| GET | `/profiles/:id` |
| PUT | `/profiles/:id` |
## backend/src/routes/publiclinks/publiclinks-authenticated.ts
| Methode | Pfad |
|---|---|
| POST | `/publiclinks` |
## backend/src/routes/publiclinks/publiclinks-non-authenticated.ts
| Methode | Pfad |
|---|---|
| GET | `/workflows/context/:token` |
| POST | `/workflows/submit/:token` |
## backend/src/routes/resources/main.ts
| Methode | Pfad |
|---|---|
| GET | `/resource/:resource` |
| POST | `/resource/:resource` |
| PUT | `/resource/:resource/:id` |
| GET | `/resource/:resource/:id/:no_relations?` |
| GET | `/resource/:resource/paginated` |
## backend/src/routes/resourcesSpecial.ts
| Methode | Pfad |
|---|---|
| GET | `/resource-special/:resource` |
## backend/src/routes/staff/time.ts
| Methode | Pfad |
|---|---|
| POST | `/staff/time/approve` |
| POST | `/staff/time/edit` |
| GET | `/staff/time/evaluation` |
| POST | `/staff/time/event` |
| POST | `/staff/time/reject` |
| GET | `/staff/time/spans` |
| POST | `/staff/time/submit` |
## backend/src/routes/tenant.ts
| Methode | Pfad |
|---|---|
| GET | `/tenant` |
| GET | `/tenant/api-keys` |
| POST | `/tenant/api-keys` |
| DELETE | `/tenant/api-keys/:id` |
| PATCH | `/tenant/api-keys/:id` |
| PUT | `/tenant/numberrange/:numberrange` |
| PUT | `/tenant/other/:id` |
| GET | `/tenant/profiles` |
| POST | `/tenant/switch` |
| GET | `/tenant/users` |
Gesamtzahl erkannter Endpunkte: **93**

View File

@@ -0,0 +1,70 @@
# Frontend Web Funktionskatalog
Automatisch generiert (deterministisch, ohne Zeitstempel).
Hinweis: Diese Datei wird durch `docs/scripts/sync-funktionsdoku.mjs` erzeugt.
| Route (Nuxt) | Datei |
|---|---|
| `/` | `frontend/pages/index.client.vue` |
| `/accounting/bwa` | `frontend/pages/accounting/bwa.vue` |
| `/accounting/depreciation` | `frontend/pages/accounting/depreciation.vue` |
| `/accounting/tax` | `frontend/pages/accounting/tax.vue` |
| `/accounts` | `frontend/pages/accounts/index.vue` |
| `/accounts/show/:id` | `frontend/pages/accounts/show/[id].vue` |
| `/administration/tenants` | `frontend/pages/administration/tenants/index.vue` |
| `/administration/tenants/:id` | `frontend/pages/administration/tenants/[id].vue` |
| `/administration/users` | `frontend/pages/administration/users/index.vue` |
| `/administration/users/:id` | `frontend/pages/administration/users/[id].vue` |
| `/banking` | `frontend/pages/banking/index.vue` |
| `/banking/statements/:mode/:id?` | `frontend/pages/banking/statements/[mode]/[[id]].vue` |
| `/calendar/:mode` | `frontend/pages/calendar/[mode].vue` |
| `/createdletters/:mode/:id?` | `frontend/pages/createdletters/[mode]/[[id]].vue` |
| `/createDocument` | `frontend/pages/createDocument/index.vue` |
| `/createDocument/edit/:id?` | `frontend/pages/createDocument/edit/[[id]].vue` |
| `/createDocument/serialInvoice` | `frontend/pages/createDocument/serialInvoice.vue` |
| `/createDocument/show/:id` | `frontend/pages/createDocument/show/[id].vue` |
| `/customer-portal` | `frontend/pages/customer-portal.vue` |
| `/email/new` | `frontend/pages/email/new.vue` |
| `/export` | `frontend/pages/export/index.vue` |
| `/export/create/sepa` | `frontend/pages/export/create/sepa.vue` |
| `/files` | `frontend/pages/files/index.vue` |
| `/forms` | `frontend/pages/forms.vue` |
| `/helpdesk/:id?` | `frontend/pages/helpdesk/[[id]].vue` |
| `/historyitems` | `frontend/pages/historyitems/index.vue` |
| `/incomingInvoices` | `frontend/pages/incomingInvoices/index.vue` |
| `/incomingInvoices/:mode/:id` | `frontend/pages/incomingInvoices/[mode]/[id].vue` |
| `/login` | `frontend/pages/login.vue` |
| `/organisation/plantafel` | `frontend/pages/organisation/plantafel.vue` |
| `/password-change` | `frontend/pages/password-change.vue` |
| `/password-reset` | `frontend/pages/password-reset.vue` |
| `/projecttypes` | `frontend/pages/projecttypes/index.vue` |
| `/projecttypes/:mode/:id?` | `frontend/pages/projecttypes/[mode]/[[id]].vue` |
| `/roles` | `frontend/pages/roles/index.vue` |
| `/roles/:mode/:id?` | `frontend/pages/roles/[mode]/[[id]].vue` |
| `/settings` | `frontend/pages/settings/index.vue` |
| `/settings/admin` | `frontend/pages/settings/admin.vue` |
| `/settings/banking` | `frontend/pages/settings/banking/index.vue` |
| `/settings/emailaccounts` | `frontend/pages/settings/emailaccounts/index.vue` |
| `/settings/emailaccounts/:mode/:id?` | `frontend/pages/settings/emailaccounts/[mode]/[[id]].vue` |
| `/settings/externalDevices` | `frontend/pages/settings/externalDevices.vue` |
| `/settings/numberRanges` | `frontend/pages/settings/numberRanges.vue` |
| `/settings/ownfields` | `frontend/pages/settings/ownfields.vue` |
| `/settings/tenant` | `frontend/pages/settings/tenant.vue` |
| `/settings/texttemplates` | `frontend/pages/settings/texttemplates.vue` |
| `/staff/profiles` | `frontend/pages/staff/profiles/index.vue` |
| `/staff/profiles/:id` | `frontend/pages/staff/profiles/[id].vue` |
| `/staff/time` | `frontend/pages/staff/time/index.vue` |
| `/staff/time/:id/evaluate` | `frontend/pages/staff/time/[id]/evaluate.vue` |
| `/standardEntity/:type` | `frontend/pages/standardEntity/[type]/index.vue` |
| `/standardEntity/:type/:mode/:id?` | `frontend/pages/standardEntity/[type]/[mode]/[[id]].vue` |
| `/support` | `frontend/pages/support/index.vue` |
| `/support/:id` | `frontend/pages/support/[id].vue` |
| `/support/create` | `frontend/pages/support/create.vue` |
| `/tasks` | `frontend/pages/tasks/index.vue` |
| `/tasks/:mode/:id?` | `frontend/pages/tasks/[mode]/[[id]].vue` |
| `/test` | `frontend/pages/test.vue` |
| `/wiki/:id?` | `frontend/pages/wiki/[[id]].vue` |
| `/workflows/:token` | `frontend/pages/workflows/[token].vue` |
Gesamtzahl erkannter Web-Routen: **60**

View File

@@ -0,0 +1,23 @@
# Funktionen
Diese Sektion dokumentiert alle Funktionen der FEDEO-Software in drei Ebenen:
- Fachliche Übersicht: `uebersicht.md`
- Technischer API-Katalog: `backend-api.md`
- Technischer Web-Katalog: `frontend-web.md`
- Technischer Mobile-Katalog: `mobile-app.md`
## Empfohlene Lesereihenfolge
1. `uebersicht.md`
2. `backend-api.md`
3. `frontend-web.md`
4. `mobile-app.md`
## Aktualisierung
Die technischen Kataloge werden mit folgendem Befehl aktualisiert:
```bash
node docs/scripts/sync-funktionsdoku.mjs
```

View File

@@ -0,0 +1,29 @@
# Mobile App Funktionskatalog
Automatisch generiert (deterministisch, ohne Zeitstempel).
Hinweis: Diese Datei wird durch `docs/scripts/sync-funktionsdoku.mjs` erzeugt.
| Route (Expo Router) | Datei |
|---|---|
| `/` | `mobile/app/index.tsx` |
| `/(tabs)` | `mobile/app/(tabs)/index.tsx` |
| `/(tabs)/explore` | `mobile/app/(tabs)/explore.tsx` |
| `/(tabs)/projects` | `mobile/app/(tabs)/projects.tsx` |
| `/(tabs)/tasks` | `mobile/app/(tabs)/tasks.tsx` |
| `/(tabs)/time` | `mobile/app/(tabs)/time.tsx` |
| `/login` | `mobile/app/login.tsx` |
| `/modal` | `mobile/app/modal.tsx` |
| `/more/account` | `mobile/app/more/account.tsx` |
| `/more/customer/:id` | `mobile/app/more/customer/[id].tsx` |
| `/more/customers` | `mobile/app/more/customers.tsx` |
| `/more/inventory` | `mobile/app/more/inventory.tsx` |
| `/more/nimbot` | `mobile/app/more/nimbot.tsx` |
| `/more/plant/:id` | `mobile/app/more/plant/[id].tsx` |
| `/more/plants` | `mobile/app/more/plants.tsx` |
| `/more/settings` | `mobile/app/more/settings.tsx` |
| `/more/wiki` | `mobile/app/more/wiki.tsx` |
| `/project/:id` | `mobile/app/project/[id].tsx` |
| `/tenant-select` | `mobile/app/tenant-select.tsx` |
Gesamtzahl erkannter Mobile-Screens: **19**

View File

@@ -0,0 +1,70 @@
# Funktionsübersicht
## Zielbild
FEDEO besteht funktional aus drei zentralen Schichten:
- Backend-API (Geschäftslogik, Daten, Integrationen)
- Web-Frontend (administrative und operative Arbeitsoberfläche)
- Mobile-App (mobile Nutzung für operative Prozesse)
Die technische Detailauflistung wird automatisiert erzeugt:
- [Backend-API](./backend-api.md)
- [Frontend Web](./frontend-web.md)
- [Mobile-App](./mobile-app.md)
## Funktionsbereiche
### 1) Authentifizierung und Mandantenfähigkeit
- Login, Session, Nutzerkontext
- Rollen, Rechte, Profile
- Mandantenbezogene Datenabgrenzung
### 2) Stammdaten und Ressourcen
- Kunden, Kontakte, Projekte, Teams
- Materialien, Leistungen, Fahrzeuge, Standorte
- Erweiterbare Standard-Entitäten
### 3) Operative Prozesse
- Aufgabenmanagement
- Zeiterfassung und Zeitauswertung
- Dokumentenerstellung und Ablage
- Verlauf/Historie
### 4) Finanz- und Abrechnungsfunktionen
- Buchhaltungssichten
- Bankdaten und Zuordnungen
- Exporte (z. B. DATEV/SEPA)
- Rechnungskontexte
### 5) Kommunikation und Service
- Helpdesk und Nachrichten
- Benachrichtigungen
- E-Mail-bezogene Prozesse
### 6) Wissensmanagement
- Wiki-Seiten
- Strukturierte Inhalte für internes Wissen
### 7) Geräteschnittstellen und Integrationen
- RFID-/Geräteendpunkte
- S3-Dateispeicher
- Mail- und externe API-Integrationen
## Dokumentationsprinzip
- Fachliche Beschreibung in dieser Datei
- Technische Vollständigkeit in den automatisch erzeugten Katalogen
- Änderungsnachweis über die Doku-Versionierung
## Pflegehinweis
Wenn Funktionen hinzugefügt, umbenannt oder entfernt werden, ist die technische Dokumentation immer per Skript zu aktualisieren und zu committen.