concept
This commit is contained in:
commit
e31b93df93
87
docu/concept/Readme.md
Normal file
87
docu/concept/Readme.md
Normal file
@ -0,0 +1,87 @@
|
||||
# Spezifikation Zeiterfassungs-Tool
|
||||
|
||||
## Technologie-Stack
|
||||
|
||||
### Backend
|
||||
- Go mit fp-go
|
||||
- PostgreSQL mit ORM (GORM oder Bun)
|
||||
- Swagger/OpenAPI
|
||||
- JWT-basierte Authentifizierung
|
||||
|
||||
### Frontend
|
||||
- Next.js mit fp-ts
|
||||
- React und Tailwind CSS
|
||||
- Responsive Webdesign
|
||||
- Progressive Web App (PWA)
|
||||
|
||||
## Multi-Tenancy & Rollen
|
||||
- **Mandantenfähigkeit**: Isolation von Daten je Unternehmen (Tenant)
|
||||
- **Rollen:** Admin, Company-Admin, Manager, Auditor, User
|
||||
|
||||
## Datenmodelle
|
||||
- **Company** (Tenant)
|
||||
- **User** (mit Rollen, Stundenrate)
|
||||
- **Kunde**
|
||||
- **Projekt** (mit Kundenreferenz)
|
||||
- **Tätigkeit** (Verrechnungspreis)
|
||||
- **Buchung** (Zeit, User, Projekt, Tätigkeit, Beschreibung optional, Abrechenbarkeit 0-100%)
|
||||
|
||||
## Funktionale Anforderungen
|
||||
### Version 1
|
||||
- Stammdatenverwaltung (Kunden, Projekte, Tätigkeiten, User)
|
||||
- Zeiterfassung mit Start/Stopp-Funktion und Parameterübernahme aus letzter Buchung
|
||||
- Übersichtliches Dashboard mit letzten Buchungen und Tracker
|
||||
- Aggregierte Reports nach Zeitraum, Projekt, Kunde, Mitarbeiter mit PDF-Export
|
||||
- Grafische Dashboards (Diagramme)
|
||||
|
||||
### Version 2
|
||||
- Projektverwaltung mit Sprints, Tasks
|
||||
- Kanban-Boards zur Aufgabenverwaltung
|
||||
- Direkte Verknüpfung von Tasks mit Zeitbuchungen
|
||||
|
||||
## Sicherheit und Datenschutz
|
||||
- Tenant-Isolation
|
||||
- TLS-Verschlüsselung und verschlüsselte Speicherung sensibler Daten
|
||||
- Audit-Logs (lückenlose Protokollierung)
|
||||
- DSGVO-konform (Datenexport, Recht auf Vergessen)
|
||||
|
||||
## Technische Umsetzung
|
||||
### Backend-Architektur
|
||||
- Modulare Pakete:
|
||||
- Auth
|
||||
- Tenant
|
||||
- User
|
||||
- TimeTracking
|
||||
- Customer
|
||||
- Project
|
||||
- Billing
|
||||
- Reporting
|
||||
- RESTful API mit Middleware zur Tenant-Isolation
|
||||
|
||||
### Frontend-Komponenten
|
||||
- Dashboard (Tracker, letzte Buchungen)
|
||||
- Buchungsformular und Historie
|
||||
- Stammdatenverwaltung (Kunden, Projekte, Tätigkeiten)
|
||||
- Reporting-Seiten mit PDF-Export
|
||||
- Admin-Oberfläche
|
||||
|
||||
## Deployment & DevOps
|
||||
- Docker, Docker-Compose (Entwicklung)
|
||||
- Kubernetes-Manifeste für Produktion
|
||||
- CI/CD mit automatischen Tests und Deployment
|
||||
- Monitoring und Logging (Prometheus, Grafana, ELK)
|
||||
- Regelmäßige Backups, Disaster-Recovery
|
||||
|
||||
## Erweiterbarkeit und Integrationen
|
||||
- API für externe Abrechnungssysteme und Kalenderintegration
|
||||
- Single Sign-On (Google, Microsoft, SAML)
|
||||
- Plugin-System und Custom Fields für Erweiterbarkeit
|
||||
- Analytics und BI-Export
|
||||
|
||||
## Zusätzliche Funktionen
|
||||
- Audit-Logs wichtiger Aktionen
|
||||
- Benachrichtigungssystem (E-Mail, In-App)
|
||||
- Lokalisierung (Mehrsprachigkeit, Zeit- und Datumsformate)
|
||||
|
||||
Diese aktualisierte Spezifikation berücksichtigt alle relevanten Punkte für eine modulare, erweiterbare und sichere Implementierung.
|
||||
|
103
docu/concept/files.md
Normal file
103
docu/concept/files.md
Normal file
@ -0,0 +1,103 @@
|
||||
timetracker-frontend/
|
||||
├── public/ # Statische Dateien
|
||||
│ ├── assets/
|
||||
│ │ ├── images/
|
||||
│ │ ├── icons/
|
||||
│ │ └── fonts/
|
||||
│ └── locales/ # Mehrsprachige Inhalte
|
||||
│ ├── de/
|
||||
│ └── en/
|
||||
├── src/
|
||||
│ ├── app/ # Next.js 13+ App Router
|
||||
│ │ ├── api/ # API-Routen (falls nötig)
|
||||
│ │ ├── (auth)/ # Authentifizierungsseiten
|
||||
│ │ │ ├── login/
|
||||
│ │ │ └── register/
|
||||
│ │ ├── dashboard/ # Dashboard-Seiten
|
||||
│ │ │ ├── page.tsx
|
||||
│ │ │ └── layout.tsx
|
||||
│ │ ├── time-tracking/ # Zeiterfassungsseiten
|
||||
│ │ │ ├── page.tsx
|
||||
│ │ │ ├── [id]/
|
||||
│ │ │ └── components/
|
||||
│ │ ├── projects/ # Projektseiten
|
||||
│ │ │ ├── page.tsx
|
||||
│ │ │ └── [id]/
|
||||
│ │ ├── customers/ # Kundenseiten
|
||||
│ │ │ ├── page.tsx
|
||||
│ │ │ └── [id]/
|
||||
│ │ ├── reports/ # Berichtsseiten
|
||||
│ │ │ ├── page.tsx
|
||||
│ │ │ └── [type]/
|
||||
│ │ ├── admin/ # Administrationsseiten
|
||||
│ │ │ ├── users/
|
||||
│ │ │ ├── companies/
|
||||
│ │ │ └── settings/
|
||||
│ │ ├── kanban/ # Kanban-Boards (Version 2)
|
||||
│ │ │ ├── page.tsx
|
||||
│ │ │ └── [id]/
|
||||
│ │ ├── layout.tsx
|
||||
│ │ └── page.tsx
|
||||
│ ├── components/ # Wiederverwendbare Komponenten
|
||||
│ │ ├── common/ # Allgemeine Komponenten
|
||||
│ │ │ ├── Button.tsx
|
||||
│ │ │ ├── Card.tsx
|
||||
│ │ │ ├── Input.tsx
|
||||
│ │ │ └── ...
|
||||
│ │ ├── layout/ # Layout-Komponenten
|
||||
│ │ │ ├── Navbar.tsx
|
||||
│ │ │ ├── Sidebar.tsx
|
||||
│ │ │ ├── Footer.tsx
|
||||
│ │ │ └── ...
|
||||
│ │ ├── dashboard/ # Dashboard-Komponenten
|
||||
│ │ │ ├── ActivityChart.tsx
|
||||
│ │ │ ├── RecentEntries.tsx
|
||||
│ │ │ └── ...
|
||||
│ │ ├── timetracker/ # Zeiterfassungskomponenten
|
||||
│ │ │ ├── Timer.tsx
|
||||
│ │ │ ├── EntryForm.tsx
|
||||
│ │ │ └── ...
|
||||
│ │ ├── reports/ # Berichtskomponenten
|
||||
│ │ │ ├── ReportFilter.tsx
|
||||
│ │ │ ├── Chart.tsx
|
||||
│ │ │ └── ...
|
||||
│ │ └── kanban/ # Kanban-Komponenten (Version 2)
|
||||
│ │ ├── Board.tsx
|
||||
│ │ ├── Column.tsx
|
||||
│ │ ├── Card.tsx
|
||||
│ │ └── ...
|
||||
│ ├── hooks/ # Custom React Hooks
|
||||
│ │ ├── useAuth.ts
|
||||
│ │ ├── useTimeTracking.ts
|
||||
│ │ ├── useProjects.ts
|
||||
│ │ └── ...
|
||||
│ ├── lib/ # Hilfsfunktionen und Bibliotheken
|
||||
│ │ ├── api.ts # API Client
|
||||
│ │ ├── auth.ts # Auth-Utilities
|
||||
│ │ ├── date-utils.ts # Date-Helpers
|
||||
│ │ └── ...
|
||||
│ ├── types/ # TypeScript-Typdefinitionen
|
||||
│ │ ├── auth.ts
|
||||
│ │ ├── user.ts
|
||||
│ │ ├── timeTracking.ts
|
||||
│ │ ├── project.ts
|
||||
│ │ └── ...
|
||||
│ ├── store/ # State Management (falls benötigt)
|
||||
│ │ ├── slices/
|
||||
│ │ └── index.ts
|
||||
│ ├── styles/ # CSS/SCSS Styles
|
||||
│ │ ├── globals.css
|
||||
│ │ └── theme.ts
|
||||
│ └── utils/ # Allgemeine Hilfsfunktionen
|
||||
│ ├── format.ts
|
||||
│ ├── validation.ts
|
||||
│ └── ...
|
||||
├── .env.local.example
|
||||
├── .eslintrc.json
|
||||
├── next.config.js
|
||||
├── package.json
|
||||
├── tailwind.config.js
|
||||
├── tsconfig.json
|
||||
├── jest.config.js # Test-Konfiguration
|
||||
├── postcss.config.js # PostCSS-Konfiguration
|
||||
└── README.md
|
143
docu/concept/structure.md
Normal file
143
docu/concept/structure.md
Normal file
@ -0,0 +1,143 @@
|
||||
Okay, ich schlage dir eine detaillierte Projektstruktur für ein Time Tracking and Management System vor, das in Go (Backend) und Next.js (Frontend) mit FPGO und FPTS umgesetzt wird. Das System soll Multi-Tenant-fähig sein, PostgreSQL als Datenbank verwenden und modular, übersichtlich sowie für die Entwicklung mit LLMs geeignet sein. Die Struktur ist in zwei Hauptteile gegliedert: Backend und Frontend. Hier ist der Vorschlag:
|
||||
|
||||
---
|
||||
|
||||
## Projektstruktur
|
||||
|
||||
### 1. Backend (Go)
|
||||
|
||||
Das Backend ist in Go geschrieben und folgt den Prinzipien von **Clean Architecture** und **Domain-Driven Design (DDD)**, um die Geschäftslogik klar von technischen Details zu trennen. Dies sorgt für Testbarkeit und Erweiterbarkeit.
|
||||
|
||||
```
|
||||
backend-go/
|
||||
├── cmd/
|
||||
│ └── server/
|
||||
│ └── main.go # Einstiegspunkt der Anwendung
|
||||
├── internal/ # Nicht-öffentlicher Code
|
||||
│ ├── domain/ # Domänen-Schicht: Geschäftlogik und Entitäten
|
||||
│ │ ├── entities/ # Domänenmodelle
|
||||
│ │ │ ├── user.go
|
||||
│ │ │ ├── company.go
|
||||
│ │ │ ├── project.go
|
||||
│ │ │ ├── client.go
|
||||
│ │ │ ├── activity.go
|
||||
│ │ │ ├── employee.go
|
||||
│ │ │ └── booking.go
|
||||
│ │ ├── repositories/ # Interfaces für Datenpersistenz
|
||||
│ │ │ ├── user_repository.go
|
||||
│ │ │ ├── company_repository.go
|
||||
│ │ │ ├── project_repository.go
|
||||
│ │ │ └── ...
|
||||
│ │ └── services/ # Domänenservices für Anwendungsfälle
|
||||
│ │ ├── user_service.go
|
||||
│ │ ├── booking_service.go
|
||||
│ │ └── ...
|
||||
│ ├── application/ # Anwendungsschicht: API-spezifische Logik
|
||||
│ │ └── services/
|
||||
│ │ └── api_service.go
|
||||
│ ├── infrastructure/ # Infrastrukturschicht: Externe Abhängigkeiten
|
||||
│ │ ├── persistence/ # Implementierung der Repositories mit GORM
|
||||
│ │ │ ├── gorm_user_repository.go
|
||||
│ │ │ ├── gorm_company_repository.go
|
||||
│ │ │ └── ...
|
||||
│ │ └── config/ # Konfigurationsmanagement
|
||||
│ │ └── config.go
|
||||
│ └── interfaces/ # Schnittstellenschicht: API-Handler
|
||||
│ └── http/
|
||||
│ ├── handlers/ # HTTP-Handler für API-Endpunkte
|
||||
│ │ ├── auth_handler.go
|
||||
│ │ ├── booking_handler.go
|
||||
│ │ ├── project_handler.go
|
||||
│ │ └── ...
|
||||
│ └── middleware/ # Middleware für Auth und Tenant-Isolierung
|
||||
│ ├── auth_middleware.go
|
||||
│ └── tenant_middleware.go
|
||||
├── pkg/ # Öffentliche, wiederverwendbare Packages
|
||||
│ ├── logger.go
|
||||
│ └── utils.go
|
||||
├── tests/ # Tests
|
||||
│ ├── unit/
|
||||
│ └── integration/
|
||||
├── docs/ # API-Dokumentation
|
||||
│ └── swagger.yaml
|
||||
├── go.mod
|
||||
└── go.sum
|
||||
```
|
||||
|
||||
#### Erläuterung:
|
||||
- **cmd/**: Enthält den Einstiegspunkt (`main.go`), der den Server startet.
|
||||
- **internal/**: Nicht-öffentlicher Code, unterteilt in:
|
||||
- **domain/**: Kernentitäten (z.B. `User`, `Company`), Repository-Interfaces und Domänenservices.
|
||||
- **application/**: API-spezifische Logik, die Domänenservices nutzt.
|
||||
- **infrastructure/**: Technische Implementierungen wie Datenbankzugriff (GORM für PostgreSQL) und Konfiguration.
|
||||
- **interfaces/**: HTTP-Handler (mit Gin) und Middleware für Authentifizierung und Multi-Tenant-Isolierung.
|
||||
- **pkg/**: Öffentliche Hilfsfunktionen (z.B. Logger).
|
||||
- **tests/**: Unit- und Integrationstests.
|
||||
- **docs/**: Swagger-Dokumentation für die API.
|
||||
|
||||
### 2. Frontend (Next.js)
|
||||
|
||||
Das Frontend nutzt **Next.js** mit **TypeScript** und **FPTS** für funktionale Programmierung. Die Struktur ist typisch für Next.js und fördert Wiederverwendbarkeit.
|
||||
|
||||
```
|
||||
frontend-nextjs/
|
||||
├── pages/ # Seitenkomponenten, die Routen entsprechen
|
||||
│ ├── index.tsx # Startseite
|
||||
│ ├── login.tsx
|
||||
│ ├── dashboard.tsx
|
||||
│ ├── bookings.tsx
|
||||
│ └── ...
|
||||
├── components/ # Wiederverwendbare UI-Komponenten
|
||||
│ ├── Header.tsx
|
||||
│ ├── BookingForm.tsx
|
||||
│ ├── ProjectList.tsx
|
||||
│ └── ...
|
||||
├── lib/ # Hilfsfunktionen und API-Calls
|
||||
│ ├── api.ts # Axios-Instanz für API-Anfragen
|
||||
│ ├── auth.ts # Authentifizierungslogik
|
||||
│ └── ...
|
||||
├── styles/ # Stylesheets
|
||||
│ ├── globals.css
|
||||
│ └── module.css
|
||||
├── public/ # Statische Dateien
|
||||
│ └── images/
|
||||
├── types/ # TypeScript-Typdefinitionen
|
||||
│ ├── user.ts
|
||||
│ ├── booking.ts
|
||||
│ └── ...
|
||||
├── tests/ # Tests für Komponenten und Seiten
|
||||
│ ├── components/
|
||||
│ └── pages/
|
||||
├── next.config.js
|
||||
├── package.json
|
||||
└── tsconfig.json
|
||||
```
|
||||
|
||||
#### Erläuterung:
|
||||
- **pages/**: Seiten der Anwendung (z.B. `dashboard.tsx` für `/dashboard`).
|
||||
- **components/**: Wiederverwendbare UI-Komponenten (z.B. `BookingForm.tsx`).
|
||||
- **lib/**: Hilfsfunktionen, z.B. für API-Calls mit Axios.
|
||||
- **styles/**: Globale und modulare CSS-Dateien.
|
||||
- **public/**: Statische Dateien wie Bilder.
|
||||
- **types/**: Typdefinitionen für Typsicherheit.
|
||||
- **tests/**: Tests mit Tools wie Jest oder Cypress.
|
||||
|
||||
---
|
||||
|
||||
## Multi-Tenant-Unterstützung
|
||||
|
||||
Die Multi-Tenant-Fähigkeit wird durch eine **Tenant-ID** (z.B. `company_id`) in den Datenbanktabellen umgesetzt. Das Backend verwendet ein **tenant_middleware.go**, das sicherstellt, dass Benutzer nur Daten ihres eigenen Tenants sehen, indem die `company_id` in jeder Anfrage geprüft wird.
|
||||
|
||||
## API-Dokumentation
|
||||
|
||||
Die API wird mit **Swagger** dokumentiert, gespeichert in `backend-go/docs/swagger.yaml`. Dies bietet eine klare, interaktive Übersicht der Endpunkte.
|
||||
|
||||
## Entwicklung mit LLMs
|
||||
|
||||
Für die Entwicklung mit LLMs ist der Code in kleine, klar benannte Dateien aufgeteilt (z.B. `user.go`, `booking_service.go`), die jeweils eine spezifische Aufgabe haben. Dies erleichtert LLMs das Verständnis und die Generierung von Code.
|
||||
|
||||
---
|
||||
|
||||
## Fazit
|
||||
|
||||
Diese Struktur ist modular, übersichtlich und erweiterbar. Sie nutzt bewährte Praktiken für Go und Next.js, unterstützt Multi-Tenant-Fähigkeit und ist durch die Aufteilung in kleine Module ideal für die Entwicklung mit LLMs. Wenn du Anpassungen oder mehr Details möchtest, lass es mich wissen!
|
93
docu/draft/additions/claude.md
Normal file
93
docu/draft/additions/claude.md
Normal file
@ -0,0 +1,93 @@
|
||||
# Ergänzung zur Zeiterfassungstool Spezifikation
|
||||
|
||||
## 10. Datensicherheit und Datenschutz
|
||||
|
||||
### Sicherheitsmaßnahmen
|
||||
- **Verschlüsselung**: TLS für alle Verbindungen, Verschlüsselung sensibler Daten in der Datenbank
|
||||
- **Tenant-Isolation**: Strikte Trennung der Daten zwischen verschiedenen Companies
|
||||
- **Audit-Trail**: Lückenlose Protokollierung aller relevanten Systemaktivitäten
|
||||
- **DSGVO-Konformität**: Implementierung von Datenschutzfunktionen (Recht auf Vergessen, Datenexport)
|
||||
|
||||
## 11. Deployment und DevOps
|
||||
|
||||
### Containerisierung
|
||||
- Docker-Container für Backend und Frontend
|
||||
- Docker-Compose für Entwicklungsumgebung
|
||||
- Kubernetes-Manifest für Produktionsumgebung
|
||||
|
||||
### CI/CD-Pipeline
|
||||
- Automatisierte Tests (Unit, Integration, E2E)
|
||||
- Automatisiertes Deployment
|
||||
- Versionsmanagement
|
||||
|
||||
### Monitoring und Logging
|
||||
- Prometheus für Metriken
|
||||
- Grafana für Visualisierung
|
||||
- ELK-Stack oder ähnliches für Logging
|
||||
- Alerting bei kritischen Ereignissen
|
||||
|
||||
## 12. Backup und Recovery
|
||||
|
||||
- Regelmäßige Datenbank-Backups
|
||||
- Point-in-Time-Recovery
|
||||
- Disaster-Recovery-Plan
|
||||
|
||||
## 13. Offline-Funktionalität
|
||||
|
||||
- Progressive Web App (PWA) Funktionalitäten
|
||||
- Lokale Speicherung von Zeitbuchungen bei fehlender Internetverbindung
|
||||
- Synchronisation bei Wiederherstellung der Verbindung
|
||||
|
||||
## 14. Integrationen
|
||||
|
||||
### API-Integrationen
|
||||
- **Abrechnungssysteme**: Export von Abrechnungsdaten
|
||||
- **Kalendersysteme**: Synchronisation mit Google Calendar, Outlook, etc.
|
||||
- **Projektmanagementtools**: Jira, Trello, etc. (insbesondere für Version 2)
|
||||
- **Webhooks**: Für benutzerdefinierte Integrationen
|
||||
|
||||
### Single Sign-On (SSO)
|
||||
- Integration mit gängigen Identity Providern (Google, Microsoft, SAML)
|
||||
- OAuth 2.0 / OpenID Connect
|
||||
|
||||
## 15. Erweiterbarkeit
|
||||
|
||||
### Plugin-System
|
||||
- Möglichkeit zur Erweiterung durch Plugins
|
||||
- Hooks für benutzerdefinierte Logik
|
||||
|
||||
### Custom Fields
|
||||
- Erweiterbare Datenmodelle mit benutzerdefinierten Feldern
|
||||
- Anpassbare Formulare
|
||||
|
||||
## 16. Mobile App-Unterstützung
|
||||
|
||||
- Responsive Webdesign für mobile Browser
|
||||
- Native Mobile Apps (zukünftige Erweiterung)
|
||||
- API-Design mit Mobilnutzung im Blick
|
||||
|
||||
## 17. Internationalisierung und Lokalisierung
|
||||
|
||||
- Mehrsprachige Benutzeroberfläche
|
||||
- Lokalisierte Datums- und Zeitformate
|
||||
- Währungsumrechnung
|
||||
|
||||
## 18. Abrechnung und Fakturierung
|
||||
|
||||
- Generierung von Rechnungsentwürfen basierend auf Zeitbuchungen
|
||||
- Export von Abrechnungsdaten in verschiedenen Formaten (CSV, Excel, etc.)
|
||||
- Automatisierte Erinnerungen für nicht erfasste Zeiten
|
||||
|
||||
## 19. Benachrichtigungssystem
|
||||
|
||||
- E-Mail-Benachrichtigungen
|
||||
- In-App-Benachrichtigungen
|
||||
- Erinnerungen für ausstehende Zeiterfassungen
|
||||
- Genehmigungsanfragen
|
||||
|
||||
## 20. Analytics und Business Intelligence
|
||||
|
||||
- Erweiterte Analytik für Management-Insights
|
||||
- Trendanalysen und Prognosen
|
||||
- Ressourcenauslastung und -planung
|
||||
- Exportmöglichkeiten für BI-Tools
|
22
docu/draft/additions/gpt.md
Normal file
22
docu/draft/additions/gpt.md
Normal file
@ -0,0 +1,22 @@
|
||||
Folgende Punkte könnten sinnvoll ergänzt werden:
|
||||
|
||||
- **Audit-Logs**:
|
||||
- Protokollierung wichtiger Aktionen (z.B. Änderungen an Stammdaten, Rollenänderungen).
|
||||
|
||||
- **Benachrichtigungen**:
|
||||
- E-Mail/Push bei wichtigen Ereignissen (z.B. Abweichungen, Freigaben).
|
||||
|
||||
- **Fehlerbehandlung & Validierung**:
|
||||
- Einheitliche Strategie für API-Fehler und Client-seitige Validierungen.
|
||||
|
||||
- **Internationale Lokalisierung (i18n)**:
|
||||
- Unterstützung mehrerer Sprachen für UI-Texte und Berichte.
|
||||
|
||||
- **Performance & Skalierung**:
|
||||
- Caching-Strategien (z.B. Redis).
|
||||
- Indexing-Strategien für effiziente Queries.
|
||||
|
||||
- **Backup & Restore-Konzept**:
|
||||
- Regelmäßige Backups und Wiederherstellungsszenarien.
|
||||
|
||||
Möchtest du davon etwas in die Spezifikation übernehmen?
|
93
docu/draft/additions/grok.md
Normal file
93
docu/draft/additions/grok.md
Normal file
@ -0,0 +1,93 @@
|
||||
# Ergänzung zur Zeiterfassungstool Spezifikation
|
||||
|
||||
## 10. Datensicherheit und Datenschutz
|
||||
|
||||
### Sicherheitsmaßnahmen
|
||||
- **Verschlüsselung**: TLS für alle Verbindungen, Verschlüsselung sensibler Daten in der Datenbank
|
||||
- **Tenant-Isolation**: Strikte Trennung der Daten zwischen verschiedenen Companies
|
||||
- **Audit-Trail**: Lückenlose Protokollierung aller relevanten Systemaktivitäten
|
||||
- **DSGVO-Konformität**: Implementierung von Datenschutzfunktionen (Recht auf Vergessen, Datenexport)
|
||||
|
||||
## 11. Deployment und DevOps
|
||||
|
||||
### Containerisierung
|
||||
- Docker-Container für Backend und Frontend
|
||||
- Docker-Compose für Entwicklungsumgebung
|
||||
- Kubernetes-Manifest für Produktionsumgebung
|
||||
|
||||
### CI/CD-Pipeline
|
||||
- Automatisierte Tests (Unit, Integration, E2E)
|
||||
- Automatisiertes Deployment
|
||||
- Versionsmanagement
|
||||
|
||||
### Monitoring und Logging
|
||||
- Prometheus für Metriken
|
||||
- Grafana für Visualisierung
|
||||
- ELK-Stack oder ähnliches für Logging
|
||||
- Alerting bei kritischen Ereignissen
|
||||
|
||||
## 12. Backup und Recovery
|
||||
|
||||
- Regelmäßige Datenbank-Backups
|
||||
- Point-in-Time-Recovery
|
||||
- Disaster-Recovery-Plan
|
||||
|
||||
## 13. Offline-Funktionalität
|
||||
|
||||
- Progressive Web App (PWA) Funktionalitäten
|
||||
- Lokale Speicherung von Zeitbuchungen bei fehlender Internetverbindung
|
||||
- Synchronisation bei Wiederherstellung der Verbindung
|
||||
|
||||
## 14. Integrationen
|
||||
|
||||
### API-Integrationen
|
||||
- **Abrechnungssysteme**: Export von Abrechnungsdaten
|
||||
- **Kalendersysteme**: Synchronisation mit Google Calendar, Outlook, etc.
|
||||
- **Projektmanagementtools**: Jira, Trello, etc. (insbesondere für Version 2)
|
||||
- **Webhooks**: Für benutzerdefinierte Integrationen
|
||||
|
||||
### Single Sign-On (SSO)
|
||||
- Integration mit gängigen Identity Providern (Google, Microsoft, SAML)
|
||||
- OAuth 2.0 / OpenID Connect
|
||||
|
||||
## 15. Erweiterbarkeit
|
||||
|
||||
### Plugin-System
|
||||
- Möglichkeit zur Erweiterung durch Plugins
|
||||
- Hooks für benutzerdefinierte Logik
|
||||
|
||||
### Custom Fields
|
||||
- Erweiterbare Datenmodelle mit benutzerdefinierten Feldern
|
||||
- Anpassbare Formulare
|
||||
|
||||
## 16. Mobile App-Unterstützung
|
||||
|
||||
- Responsive Webdesign für mobile Browser
|
||||
- Native Mobile Apps (zukünftige Erweiterung)
|
||||
- API-Design mit Mobilnutzung im Blick
|
||||
|
||||
## 17. Internationalisierung und Lokalisierung
|
||||
|
||||
- Mehrsprachige Benutzeroberfläche
|
||||
- Lokalisierte Datums- und Zeitformate
|
||||
- Währungsumrechnung
|
||||
|
||||
## 18. Abrechnung und Fakturierung
|
||||
|
||||
- Generierung von Rechnungsentwürfen basierend auf Zeitbuchungen
|
||||
- Export von Abrechnungsdaten in verschiedenen Formaten (CSV, Excel, etc.)
|
||||
- Automatisierte Erinnerungen für nicht erfasste Zeiten
|
||||
|
||||
## 19. Benachrichtigungssystem
|
||||
|
||||
- E-Mail-Benachrichtigungen
|
||||
- In-App-Benachrichtigungen
|
||||
- Erinnerungen für ausstehende Zeiterfassungen
|
||||
- Genehmigungsanfragen
|
||||
|
||||
## 20. Analytics und Business Intelligence
|
||||
|
||||
- Erweiterte Analytik für Management-Insights
|
||||
- Trendanalysen und Prognosen
|
||||
- Ressourcenauslastung und -planung
|
||||
- Exportmöglichkeiten für BI-Tools
|
147
docu/draft/claude.md
Normal file
147
docu/draft/claude.md
Normal file
@ -0,0 +1,147 @@
|
||||
# Zeiterfassungstool Spezifikation
|
||||
|
||||
## 1. Überblick
|
||||
|
||||
Dieses Dokument spezifiziert ein modernes Zeiterfassungstool mit Multi-Tenant-Architektur, implementiert mit Go (Backend) und NextJS (Frontend). Das System unterstützt die Erfassung von Arbeitszeiten, Projektmanagement und Reporting-Funktionen.
|
||||
|
||||
## 2. Technologie-Stack
|
||||
|
||||
### Backend
|
||||
- **Programmiersprache**: Go
|
||||
- **Architektur**: Funktional-Programmierung (FPGO)
|
||||
- **Datenbank**: PostgreSQL mit ORM
|
||||
- **API-Dokumentation**: Swagger
|
||||
|
||||
### Frontend
|
||||
- **Framework**: NextJS
|
||||
- **Architektur**: Funktional-Programmierung (FPTS - Functional Programming TypeScript)
|
||||
- **UI-Komponenten**: React mit Tailwind CSS
|
||||
|
||||
## 3. Multi-Tenant-Architektur
|
||||
|
||||
Das System unterstützt mehrere Unternehmen (Companies) mit eigenen Benutzern und Daten.
|
||||
|
||||
### Rollen und Berechtigungen
|
||||
- **Admin**: Systemweiter Administrator mit vollständigem Zugriff
|
||||
- **Company**: Unternehmensadministrator
|
||||
- **Manager**: Projektmanager mit erweiterten Rechten
|
||||
- **User**: Standardbenutzer (Mitarbeiter)
|
||||
- **Auditor**: Nur-Lese-Zugriff für Berichte und Audits
|
||||
|
||||
## 4. Datenbankmodell
|
||||
|
||||
### Hauptentitäten
|
||||
|
||||
#### Tenant-Struktur
|
||||
- **Company**: Unternehmen
|
||||
- **User**: Benutzer mit Rollen
|
||||
|
||||
#### Zeiterfassung
|
||||
- **Kunde**: Kunde einer Company
|
||||
- **Projekt**: Projekte für Kunden
|
||||
- **Tätigkeit**: Arbeitstätigkeiten
|
||||
- **Buchung**: Zeiterfassung
|
||||
- **Stundensatz**: Pro Mitarbeiter
|
||||
- **Verrechnungspreis**: Pro Tätigkeit
|
||||
|
||||
#### Projektmanagement (Version 2)
|
||||
- **Sprint**: Iterationen innerhalb eines Projekts
|
||||
- **Task**: Aufgaben innerhalb eines Sprints
|
||||
- **KanbanBoard**: Visualisierung von Tasks
|
||||
|
||||
## 5. Backend-Architektur
|
||||
|
||||
### Modularisierung
|
||||
Das Backend wird in kleine, funktionale Module aufgeteilt, um die Kontextgröße für LLM-basierte Implementierung zu optimieren.
|
||||
|
||||
#### Core-Module
|
||||
- **auth**: Authentifizierung und Autorisierung
|
||||
- **tenant**: Multi-Tenant-Verwaltung
|
||||
- **user**: Benutzerverwaltung
|
||||
- **timetracking**: Zeiterfassung
|
||||
- **customer**: Kundenverwaltung
|
||||
- **project**: Projektverwaltung
|
||||
- **billing**: Abrechnung und Verrechnungspreise
|
||||
- **reporting**: Report-Generierung
|
||||
|
||||
### API-Design
|
||||
- RESTful API mit Swagger-Dokumentation
|
||||
- JWT-basierte Authentifizierung
|
||||
- Tenant-Isolation durch Middleware
|
||||
|
||||
## 6. Frontend-Architektur
|
||||
|
||||
### Komponentenstruktur
|
||||
- Modulare React-Komponenten
|
||||
- State Management mit Context API oder Redux
|
||||
- Responsive Design
|
||||
|
||||
### Hauptseiten
|
||||
- Dashboard (Übersicht)
|
||||
- Zeiterfassung mit Tracker
|
||||
- Kunden- und Projektverwaltung
|
||||
- Reporting und Auswertungen
|
||||
- Administrationsoberfläche
|
||||
|
||||
## 7. Funktionsumfang (Version 1)
|
||||
|
||||
### Unternehmensverwaltung
|
||||
- Anlegen und Verwalten von Companies (Multi-Tenant)
|
||||
- Benutzerverwaltung mit Rollenzuweisung
|
||||
|
||||
### Stammdatenverwaltung
|
||||
- Kunden anlegen und verwalten
|
||||
- Projekte anlegen und verwalten
|
||||
- Tätigkeiten definieren mit Verrechnungspreisen
|
||||
- Mitarbeiter-Stundensätze hinterlegen
|
||||
|
||||
### Zeiterfassung
|
||||
- Zeiten buchen mit Angaben zu:
|
||||
- Zeitraum (Start/Ende oder Dauer)
|
||||
- Projekt (Wohin)
|
||||
- Tätigkeit (Wofür)
|
||||
- Benutzer (Wer)
|
||||
- Beschreibung (optional)
|
||||
- Verrechnungspreis
|
||||
- Abrechenbarkeit (0-100% Slider)
|
||||
- Zeittracker mit Start/Stop-Funktion
|
||||
- Übernahme der letzten Buchungsparameter
|
||||
|
||||
### Reporting
|
||||
- Kumulation von Buchungen nach:
|
||||
- Projekten
|
||||
- Mitarbeitern
|
||||
- Kunden
|
||||
- Zeiträumen
|
||||
- PDF-Export von Reports
|
||||
- Dashboards mit Visualisierungen
|
||||
|
||||
## 8. Funktionsumfang (Version 2)
|
||||
|
||||
### Projektmanagement
|
||||
- Sprints innerhalb von Projekten
|
||||
- Task-Items in Sprints
|
||||
- Kanban-Boards für visuelle Darstellung
|
||||
- Zuweisung von Tasks zu Benutzern
|
||||
- Direkte Verknüpfung von Tasks mit Zeitbuchungen
|
||||
|
||||
## 9. Implementierungsplan
|
||||
|
||||
### Phase 1: Grundlegende Infrastruktur
|
||||
- Aufsetzen der Go-Backend-Struktur
|
||||
- Implementierung der Datenbank mit ORM
|
||||
- NextJS-Frontend-Grundgerüst
|
||||
- Authentifizierung und Autorisierung
|
||||
|
||||
### Phase 2: Version 1 Features
|
||||
- Stammdatenverwaltung
|
||||
- Zeiterfassung
|
||||
- Reporting
|
||||
- Dashboard
|
||||
|
||||
### Phase 3: Version 2 Features
|
||||
- Projektmanagement
|
||||
- Kanban-Boards
|
||||
- Task-Tracking
|
||||
|
||||
|
91
docu/draft/gpt4_5.md
Normal file
91
docu/draft/gpt4_5.md
Normal file
@ -0,0 +1,91 @@
|
||||
# Spezifikation Zeiterfassungs-Tool
|
||||
|
||||
## Technische Rahmenbedingungen
|
||||
- **Backend:** Go mit fp-go
|
||||
- **Frontend:** Next.js mit fp-ts
|
||||
- **Datenbank:** PostgreSQL mit ORM (z.B. GORM oder Bun)
|
||||
- **API-Dokumentation:** Swagger/OpenAPI
|
||||
- **PDF-Generierung:** serverseitig
|
||||
|
||||
## Multi-Tenancy & Rollen
|
||||
- **Mandantenfähig**: Separierung aller Daten nach Unternehmen (Company)
|
||||
- **Rollen:**
|
||||
- Admin (systemweit)
|
||||
- Company (Unternehmensebene)
|
||||
- Manager
|
||||
- Auditor (Read-only Zugriff auf Reports)
|
||||
- User (regulärer Mitarbeiter)
|
||||
|
||||
## Datenmodelle (DB Entities)
|
||||
- **Company**
|
||||
- Kunden (Clients)
|
||||
- Projekte (Projects)
|
||||
- Tätigkeiten (Activities)
|
||||
- **User**
|
||||
- Stundenrate
|
||||
- Rolle
|
||||
- **Projekt**
|
||||
- Kundenreferenz
|
||||
- Beschreibung
|
||||
- **Tätigkeit**
|
||||
- Name
|
||||
- Verrechnungspreis
|
||||
- **Buchung**
|
||||
- Zeit (Start, Ende, Dauer)
|
||||
- User
|
||||
- Projekt
|
||||
- Tätigkeit
|
||||
- Beschreibung (optional)
|
||||
- Abrechenbarkeit (0-100%)
|
||||
- Verrechnungspreis (berechnet)
|
||||
|
||||
## Funktionale Anforderungen
|
||||
### Version 1
|
||||
- Verwaltung von Kunden, Projekten, Tätigkeiten
|
||||
- Mitarbeiterverwaltung mit Stundensatz
|
||||
- Erstellung von Zeitbuchungen mit optionaler Beschreibung und wählbarer Abrechenbarkeit
|
||||
- Automatische Übernahme der Parameter (Projekt, Tätigkeit, Beschreibung) der letzten Buchung
|
||||
- Live-Tracker mit Start-/Stopp-Funktion auf Dashboard
|
||||
- Reporting-Funktion
|
||||
- Aggregation der Buchungen nach Zeitraum, Projekt, Kunde, Mitarbeiter
|
||||
- Export als PDF
|
||||
- Grafische Dashboards (Kreis-/Balkendiagramme, Zeitverläufe)
|
||||
- Persönliches Dashboard
|
||||
- Liste vergangener Buchungen
|
||||
- Schnellstart-Tracker
|
||||
|
||||
### Version 2 (Ausblick)
|
||||
- Projektverwaltung mit Sprints und Task-Items
|
||||
- Kanban-Board zur Verwaltung von Tasks
|
||||
- Zuordnung von Tasks direkt bei Buchungsauswahl
|
||||
|
||||
## API-Endpunkte
|
||||
- Authentifizierung & Autorisierung (JWT o.ä.)
|
||||
- CRUD-Operationen für alle Entities
|
||||
- Endpunkte für Zeiterfassung, Buchungen starten/stoppen
|
||||
- Reporting-Endpoints mit Filterparametern (Zeitraum, Kunde, Projekt, Mitarbeiter)
|
||||
|
||||
## Frontend-Komponenten
|
||||
- **Dashboard**
|
||||
- Tracker-Komponente
|
||||
- Liste letzter Buchungen
|
||||
- Schnelleinstieg für häufige Aktionen
|
||||
- **Buchungs-Management**
|
||||
- Buchungsformular
|
||||
- Historie
|
||||
- **Verwaltungsseiten**
|
||||
- Kunden, Projekte, Tätigkeiten, User
|
||||
- **Reporting-Ansicht**
|
||||
- Interaktive Filtermöglichkeiten
|
||||
- Grafische Darstellung (Charts)
|
||||
- PDF-Export
|
||||
|
||||
## Technische Umsetzung
|
||||
- Modularer Aufbau (separate Pakete für Entities, Services, Controllers)
|
||||
- DDD-Prinzipien für saubere Trennung von Geschäftslogik
|
||||
- APIs sauber nach Verantwortlichkeiten getrennt (RESTful Design)
|
||||
- Swagger zur API-Dokumentation (generiert aus Annotationen)
|
||||
- Strukturierter und übersichtlicher Code (kleine Dateien, Single Responsibility)
|
||||
|
||||
Diese Struktur ermöglicht eine überschaubare Implementierung mit optimaler Unterstützung durch LLMs.
|
||||
|
232
docu/draft/grok.md
Normal file
232
docu/draft/grok.md
Normal file
@ -0,0 +1,232 @@
|
||||
Ich habe Ihre Anfrage analysiert und die bestehende Dokumentation aktualisiert, um Ihre Anforderungen für ein Zeiterfassungstool zu berücksichtigen. Das Tool soll als Multi-Tenant-Lösung fungieren, in Go (Backend) und Next.js (Frontend) mit FPGO und FPTS für funktionale Programmierung umgesetzt werden. PostgreSQL wird als Datenbank mit einem ORM verwendet, und eine Swagger-Dokumentation wird für die API erstellt. Der Code wird in kleinere, übersichtliche Module und Dateien aufgeteilt, um die Implementierung mit LLMs zu erleichtern. Im Folgenden finden Sie die überarbeitete Spezifikation, die alle Anforderungen für Version 1 sowie geplante Erweiterungen für Version 2 abdeckt.
|
||||
|
||||
---
|
||||
|
||||
# Software Requirements Specification
|
||||
## für das Time Tracking and Management System
|
||||
**Version 1.3**
|
||||
**Erstellt von:** Jean Jacques Avril, Masterstudent, Informatik, Technische Hochschule Rosenheim
|
||||
**Modul:** Konzepte der Programmiersprachen
|
||||
**Datum:** 5. Januar 2025
|
||||
|
||||
---
|
||||
|
||||
## 1. Einführung
|
||||
|
||||
### 1.1 Zweck
|
||||
Dieses Software Requirements Specification (SRS) Dokument beschreibt detailliert die Anforderungen für das Time Tracking and Management System, eine Multi-Tenant-Lösung zur präzisen Erfassung und Verwaltung von Arbeitszeiten für mehrere Unternehmen. Jedes Unternehmen kann eigene Kunden, Projekte und Mitarbeiter verwalten. Das System unterstützt verschiedene Benutzerrollen (User, Manager, Auditor, Company, Admin) mit spezifischen Berechtigungen und Funktionen. Ziel ist es, eine klare Grundlage für die Entwicklung zu schaffen, die eine einfache Implementierung und Erweiterbarkeit ermöglicht.
|
||||
|
||||
### 1.2 Zielgruppe und Leseempfehlungen
|
||||
Dieses Dokument richtet sich an:
|
||||
- **Projektbeteiligte:** Für ein umfassendes Verständnis der Funktionen und Einschränkungen.
|
||||
- **Entwickler:** Zur Einsicht in funktionale und nicht-funktionale Anforderungen für eine reibungslose Umsetzung.
|
||||
- **Qualitätssicherungsteams:** Um Tests an den spezifizierten Anforderungen auszurichten.
|
||||
- **Zukünftige Mitwirkende:** Um die Systemarchitektur zu verstehen und Erweiterungen beizutragen.
|
||||
|
||||
Leser sollten zunächst die funktionalen Anforderungen durchsehen, um die Kernfunktionen zu verstehen, gefolgt von den nicht-funktionalen Anforderungen für Einblicke in Sicherheit und Performance. Entwickler mit Fokus auf Backend und Architektur sollten die Abschnitte zur Systemarchitektur und Technologie besonders beachten.
|
||||
|
||||
### 1.3 Projektumfang
|
||||
Das Time Tracking and Management System bietet eine benutzerfreundliche Plattform zur Zeiterfassung, Verwaltung von Projekten und Erstellung von Berichten in einer Multi-Tenant-Umgebung.
|
||||
|
||||
**Version 1 (Initiale Version):**
|
||||
- Multi-Tenant-Unterstützung mit Datenisolierung.
|
||||
- Benutzerverwaltung mit Rollen: User, Manager, Auditor, Company, Admin.
|
||||
- Verwaltung von Kunden, Projekten und Tätigkeiten je Unternehmen.
|
||||
- Zeiterfassung mit Buchungen (Zeit, Ort, Zweck, Mitarbeiter, Tätigkeit, Beschreibung, Verrechnungspreis, abrechenbarer Prozentsatz).
|
||||
- Berichte und Dashboards mit PDF-Export und grafischen Darstellungen.
|
||||
- Tracker auf der Startseite mit Standardwerten der letzten Buchung.
|
||||
|
||||
**Version 2 (Zukünftige Erweiterungen):**
|
||||
- Projekte mit Sprints und Task-Items.
|
||||
- Kanban-Boards zur Aufgabenzuweisung.
|
||||
- Direkte Task-Auswahl bei Buchungen.
|
||||
|
||||
Die modulare Architektur ermöglicht einfache Erweiterungen.
|
||||
|
||||
---
|
||||
|
||||
## 2. Anforderungen
|
||||
|
||||
### 2.1 Funktionale Anforderungen
|
||||
|
||||
#### FA-1: Multi-Tenant-Unterstützung
|
||||
- **Beschreibung:** Das System muss mehrere Unternehmen (Tenants) unterstützen, jedes mit isolierten Daten.
|
||||
- **Details:** Jedes Unternehmen hat eigene Kunden, Projekte, Tätigkeiten, Mitarbeiter und Buchungen.
|
||||
- **Validierung:** Kein Zugriff auf Daten anderer Tenants möglich.
|
||||
|
||||
#### FA-2: Benutzerverwaltung
|
||||
- **Beschreibung:** Benutzer können sich registrieren, anmelden und Rollen zugewiesen bekommen.
|
||||
- **Details:**
|
||||
- Rollen: User (Zeiterfassung), Manager (Projektübersicht), Auditor (Berichte einsehen), Company (Verwaltung), Admin (Systemweit).
|
||||
- Admin verwaltet Unternehmen, Company verwaltet eigene Daten.
|
||||
- **Validierung:** Eindeutige Benutzernamen und E-Mails pro Tenant.
|
||||
|
||||
#### FA-3: Kundenverwaltung
|
||||
- **Beschreibung:** Unternehmen können Kunden anlegen, bearbeiten und löschen.
|
||||
- **Details:** Kunden sind unternehmensspezifisch.
|
||||
- **Validierung:** Nur Company- und Admin-Rollen dürfen Kunden verwalten.
|
||||
|
||||
#### FA-4: Projektverwaltung
|
||||
- **Beschreibung:** Unternehmen können Projekte für Kunden anlegen, bearbeiten und löschen.
|
||||
- **Details:** Projekte sind mit Kunden und Unternehmen verknüpft.
|
||||
- **Validierung:** Nur Company- und Manager-Rollen dürfen Projekte verwalten.
|
||||
|
||||
#### FA-5: Tätigkeitsverwaltung
|
||||
- **Beschreibung:** Unternehmen können Tätigkeiten mit Verrechnungspreisen definieren.
|
||||
- **Details:** Tätigkeiten sind unternehmensspezifisch.
|
||||
- **Validierung:** Verrechnungspreise müssen positiv sein.
|
||||
|
||||
#### FA-6: Mitarbeiterverwaltung
|
||||
- **Beschreibung:** Unternehmen können Mitarbeiter mit Stundensätzen verwalten.
|
||||
- **Details:** Mitarbeiter sind unternehmensspezifisch.
|
||||
- **Validierung:** Stundensätze müssen positiv sein.
|
||||
|
||||
#### FA-7: Buchungsverwaltung
|
||||
- **Beschreibung:** Benutzer können Zeitbuchungen erfassen.
|
||||
- **Details:** Buchungen enthalten Zeit, Ort, Zweck, Mitarbeiter, Tätigkeit, optionale Beschreibung, Verrechnungspreis und abrechenbaren Prozentsatz (0-100%).
|
||||
- **Validierung:** Buchungen müssen gültige Projekte und Tätigkeiten referenzieren.
|
||||
|
||||
#### FA-8: Zeiterfassung
|
||||
- **Beschreibung:** Benutzer können einen Tracker starten und stoppen.
|
||||
- **Details:** Ohne Auswahl werden die Parameter der letzten Buchung übernommen.
|
||||
- **Validierung:** Kein Start möglich, wenn bereits aktiv.
|
||||
|
||||
#### FA-9: Berichte
|
||||
- **Beschreibung:** Berichte können über Projekte, Mitarbeiter, Kunden und Zeiträume erstellt werden.
|
||||
- **Details:** Berichte enthalten Arbeitszeit, abrechenbare Beträge und können als PDF exportiert werden.
|
||||
- **Validierung:** Nur autorisierte Rollen dürfen Berichte generieren.
|
||||
|
||||
#### FA-10: Dashboard
|
||||
- **Beschreibung:** Benutzer sehen auf der Startseite letzte Buchungen und einen Tracker.
|
||||
- **Details:** Dashboards zeigen grafische Zusammenfassungen.
|
||||
|
||||
### 2.2 Nicht-funktionale Anforderungen
|
||||
|
||||
#### NFA-1: Sicherheit
|
||||
- **Beschreibung:** Datenisolierung zwischen Tenants und sicherer Zugriff.
|
||||
- **Details:** RBAC, JWT-Authentifizierung, Verschlüsselung sensibler Daten.
|
||||
|
||||
#### NFA-2: Performance
|
||||
- **Beschreibung:** API-Antwortzeit unter 200 ms.
|
||||
- **Details:** Optimierte Datenbankabfragen und Caching.
|
||||
|
||||
#### NFA-3: Skalierbarkeit
|
||||
- **Beschreibung:** Unterstützung vieler gleichzeitiger Benutzer und Tenants.
|
||||
- **Details:** Horizontale Skalierung möglich.
|
||||
|
||||
#### NFA-4: Benutzbarkeit
|
||||
- **Beschreibung:** Intuitive und responsive Benutzeroberfläche.
|
||||
- **Details:** Kompatibel mit Desktop, Tablet und Mobilgeräten.
|
||||
|
||||
#### NFA-5: Modularität
|
||||
- **Beschreibung:** Code in kleine, überschaubare Module aufteilen.
|
||||
- **Details:** Erleichtert die Entwicklung mit LLMs.
|
||||
|
||||
---
|
||||
|
||||
## 3. Technische Spezifikation
|
||||
|
||||
### 3.1 Gesamtarchitektur
|
||||
Das System ist eine Full-Stack-Webanwendung:
|
||||
- **Frontend:** Next.js mit React und FPTS.
|
||||
- **Backend:** Go mit FPGO.
|
||||
- **Datenbank:** PostgreSQL mit GORM als ORM.
|
||||
- **API-Dokumentation:** Swagger für RESTful APIs.
|
||||
- **Kommunikation:** RESTful APIs, optional WebSockets für Echtzeitfunktionen.
|
||||
|
||||
### 3.2 Technologie-Stack
|
||||
#### 3.2.1 Frontend
|
||||
- **Next.js/React:** Für interaktive Benutzeroberflächen.
|
||||
- **FPTS:** Funktionale Programmierung in TypeScript.
|
||||
- **Axios:** Für HTTP-Anfragen.
|
||||
|
||||
#### 3.2.2 Backend
|
||||
- **Go:** Hauptsprache für Backend.
|
||||
- **FPGO:** Funktionale Programmierung in Go.
|
||||
- **GORM:** ORM für PostgreSQL.
|
||||
- **Gin:** Web-Framework für HTTP-Anfragen.
|
||||
- **JWT:** Für sichere Authentifizierung.
|
||||
|
||||
#### 3.2.3 Datenbank
|
||||
- **PostgreSQL:** Relationale Datenbank.
|
||||
|
||||
### 3.3 Entitäten
|
||||
- **Company:** Tenant-Daten.
|
||||
- **User:** Mit Rollen und Unternehmenszuordnung.
|
||||
- **Client:** Unternehmensspezifisch.
|
||||
- **Project:** Mit Kunden und Unternehmen verknüpft.
|
||||
- **Activity:** Mit Verrechnungspreis.
|
||||
- **Employee:** Mit Stundensatz.
|
||||
- **Booking:** Zeitbuchungen mit Details.
|
||||
|
||||
---
|
||||
|
||||
## 4. Systemdesign
|
||||
|
||||
### 4.1 Übersicht
|
||||
Das System folgt Domain-Driven Design (DDD) und Clean Architecture mit einer Multi-Tenant-Architektur (gemeinsame Datenbank mit Tenant-IDs).
|
||||
|
||||
### 4.2 Architekturdesign
|
||||
- **Domain-Schicht:** Geschäftlogik und Entitäten.
|
||||
- **Application-Schicht:** Services und Anwendungsfälle.
|
||||
- **Infrastructure-Schicht:** Datenbankzugriff via GORM.
|
||||
- **Interface-Schicht:** API-Handler.
|
||||
- **Frontend:** Next.js mit FPTS.
|
||||
|
||||
### 4.3 Moduldesign
|
||||
- **Benutzerverwaltung:** Registrierung, Authentifizierung.
|
||||
- **Unternehmensverwaltung:** Tenant-Daten.
|
||||
- **Projektverwaltung:** Projektzuweisungen.
|
||||
- **Buchungsverwaltung:** Zeiterfassung.
|
||||
- **Berichte:** Generierung und Export.
|
||||
|
||||
### 4.4 Datenbankdesign
|
||||
- **Companies:** id, name, created_at, updated_at.
|
||||
- **Users:** id, company_id, role, name, email, password_hash.
|
||||
- **Clients:** id, company_id, name.
|
||||
- **Projects:** id, client_id, company_id, name.
|
||||
- **Activities:** id, company_id, name, billing_rate.
|
||||
- **Employees:** id, company_id, name, hourly_rate.
|
||||
- **Bookings:** id, user_id, project_id, activity_id, start_time, end_time, description, billable_percentage.
|
||||
|
||||
---
|
||||
|
||||
## 5. API-Endpunkte
|
||||
|
||||
### 5.1 Übersicht
|
||||
RESTful API mit Swagger-Dokumentation, gesichert durch JWT und RBAC.
|
||||
|
||||
### 5.2 Endpunkte
|
||||
#### 5.2.1 Authentifizierung
|
||||
- **POST /api/auth/register:** Neuer Benutzer.
|
||||
- **POST /api/auth/login:** Login mit JWT.
|
||||
- **POST /api/auth/logout:** Logout.
|
||||
- **GET /api/auth/me:** Benutzerdetails.
|
||||
|
||||
#### 5.2.2 Unternehmensverwaltung (Admin)
|
||||
- **POST /api/companies:** Neues Unternehmen.
|
||||
- **GET /api/companies:** Liste aller Unternehmen.
|
||||
- **PUT /api/companies/{id}:** Unternehmen bearbeiten.
|
||||
- **DELETE /api/companies/{id}:** Unternehmen löschen.
|
||||
|
||||
#### 5.2.3 Buchungsverwaltung
|
||||
- **POST /api/bookings:** Neue Buchung.
|
||||
- **GET /api/bookings:** Buchungen auflisten.
|
||||
- **PUT /api/bookings/{id}:** Buchung bearbeiten.
|
||||
- **DELETE /api/bookings/{id}:** Buchung löschen.
|
||||
|
||||
#### 5.2.4 Berichte
|
||||
- **GET /api/reports:** Bericht generieren.
|
||||
- **GET /api/reports/export:** PDF-Export.
|
||||
|
||||
---
|
||||
|
||||
## 6. Sicherheitsaspekte
|
||||
- **Authentifizierung:** JWT-Token.
|
||||
- **RBAC:** Rollenbasierte Zugriffskontrolle.
|
||||
- **Datenisolierung:** Tenant-spezifischer Zugriff via Company-ID.
|
||||
- **Verschlüsselung:** Sensible Daten verschlüsselt.
|
||||
|
||||
---
|
||||
|
||||
Diese Spezifikation bietet eine klare Anleitung für die Entwicklung eines Multi-Tenant-Zeiterfassungstools mit modularer Struktur, das leicht mit LLMs implementiert werden kann. Die Version 2-Anforderungen sind als zukünftige Erweiterungen berücksichtigt.
|
Loading…
x
Reference in New Issue
Block a user