Initial commit of the Asset Management System, including project structure, Docker configuration, database migrations, and core application files. Added user authentication, asset management features, and basic UI components.

This commit is contained in:
2025-08-22 21:41:02 +02:00
parent b43a98f0ec
commit 677f70a19c
52 changed files with 5186 additions and 2 deletions

336
README.md
View File

@@ -1,3 +1,335 @@
# ai-zensur
# Asset Management System
Ein Tool um Daten aus Dokumenten für weitere KI Verarbeitung vorzubereiten.
Ein vollwertiges Inventar- und Asset-Management-System entwickelt mit PHP, MySQL und Docker.
## Features
### 🔐 Benutzer & Rollen
- **Benutzerverwaltung**: Anlegen, Bearbeiten, Deaktivieren von Benutzern
- **Rollen**: Admin, Auditor, Mitarbeiter mit unterschiedlichen Berechtigungen
- **Authentifizierung**: Sichere Login/Logout mit Passwort-Hashing (Argon2id)
- **Passwort-Reset**: E-Mail-basierter Passwort-Reset mit Token
- **Sitzungsmanagement**: Sichere Cookies mit HttpOnly und SameSite=Strict
### 📦 Assets / Inventar
- **Vollständiges CRUD**: Erstellen, Lesen, Aktualisieren, Löschen von Assets
- **Detaillierte Felder**: Inventarnummer, Bezeichnung, Kategorie, Standort, Abteilung, Lieferant, Anschaffungsdatum, Preis, Zustand, Seriennummer, Garantie, Kostenstelle, Status, Notizen
- **Lebenszyklus**: Zuweisung an Benutzer, Check-in/Check-out, Historie
- **Dateianhänge**: Upload und Download von Dokumenten pro Asset
- **Etikettendruck**: PDF-Labels mit QR/Barcode für Inventarnummer + Bezeichnung
- **Erweiterte Suche**: Nach Standort, Kategorie, Zustand, Status, Volltext
### 🏢 Stammdaten
- **Kategorien**: Verwaltung von Asset-Kategorien
- **Standorte**: Verwaltung von Standorten mit Adressen
- **Abteilungen**: Verwaltung von Abteilungen mit Kostenstellen
### 📊 Inventur & Zählungen
- **Inventurdurchläufe**: Starten, Offene Positionen, Abgleich Ist/Soll
- **Erfassung**: Per Eingabe Inventarnummer/QR-Code
- **Abschlussbericht**: PDF mit Differenzen und Statistiken
### 📈 Berichte & Export
- **Verschiedene Reports**: Aktive Assets, nach Standort, nach Kategorie, ausgemusterte Geräte, Garantie läuft ab
- **Export-Formate**: CSV (Pflicht), XLSX (optional), PDF
- **CSV-Import**: Mit Validierung, Vorschau, Duplikat-Erkennung, transaktionale Übernahme
### 🔍 Protokollierung & Nachvollziehbarkeit
- **Audit-Log**: Vollständige Protokollierung aller CRUD-Aktionen
- **Historie**: Wer/was/wann geändert wurde
- **Nachverfolgung**: Komplette Änderungshistorie pro Asset
### 🌍 Internationalisierung
- **Mehrsprachig**: Deutsch (Standard), Englisch
- **Benutzer-spezifisch**: Umschaltbar pro Benutzer
- **PHP-Array-basiert**: Einfache Übersetzungsstruktur
### 🎨 UI/UX
- **Responsive Design**: Optimiert für Desktop, Tablet und Mobile
- **Barrierefrei**: Basis-WCAG-Konformität
- **Klare Navigation**: Dashboard, Assets, Inventur, Berichte, Stammdaten, Benutzer, Einstellungen
- **Tabellen**: Mit Paginierung, Sortierung (serverseitig), Filterfeldern
- **Druckfreundlich**: Optimierte Styles für Berichte und Etiketten
## Technische Architektur
### 🏗️ MVC-ähnliche Struktur
- **Front-Controller**: `public/index.php`
- **Router**: Einfaches URL-Routing mit Parameter-Extraktion
- **Controller**: Geschäftslogik und Request-Handling
- **Models**: Datenzugriff mit PDO und Prepared Statements
- **Views**: PHP-Templates mit Layout-System
### 🔒 Sicherheit
- **CSRF-Schutz**: Token-basiert für alle POST-Formulare
- **XSS-Schutz**: HTML-Escaping bei Ausgabe
- **SQL-Injection-Schutz**: Prepared Statements überall
- **Upload-Validierung**: Whitelist-MIME, Größenlimit, sichere Speicherung
- **Rate-Limiting**: IP-basiert für Login-Versuche
- **Rollenbasierte Zugriffskontrolle**: Middleware auf Controller-Ebene
### 🚀 Leistung
- **Indizes**: Optimierte Datenbank-Indizes
- **Pagination**: Serverseitige Paginierung
- **Caching**: File-basiertes Caching für Stammdaten
- **OPcache**: PHP-Bytecode-Caching aktiviert
## Installation & Setup
### Voraussetzungen
- Docker und Docker Compose
- Mindestens 4GB RAM
- 2GB freier Speicherplatz
### Schnellstart
1. **Repository klonen**
```bash
git clone <repository-url>
cd asset-management
```
2. **Umgebungsvariablen konfigurieren**
```bash
cp env.example .env
# Bearbeiten Sie .env nach Ihren Bedürfnissen
```
3. **Anwendung starten**
```bash
docker compose up -d --build
```
4. **Auf Anwendung zugreifen**
- **Hauptanwendung**: http://localhost:8080
- **phpMyAdmin**: http://localhost:8081
### Standard-Anmeldedaten
- **E-Mail**: admin@example.com
- **Passwort**: Admin!234
- **⚠️ Wichtig**: Ändern Sie das Passwort beim ersten Login!
## Konfiguration
### Umgebungsvariablen (.env)
```env
# Application Settings
APP_ENV=production
APP_URL=http://localhost:8080
APP_DEBUG=false
APP_KEY=base64:your-secret-key-here
# Database Settings
DB_HOST=db
DB_PORT=3306
DB_NAME=inventory
DB_USER=inventory
DB_PASS=changeMe
DB_ROOT_PASS=rootPassword123
# Session Settings
SESSION_SECURE=false
SESSION_LIFETIME=3600
# File Upload Settings
UPLOAD_MAX_SIZE=50M
ALLOWED_FILE_TYPES=pdf,jpg,jpeg,png,gif,doc,docx,xls,xlsx
# Security Settings
CSRF_TOKEN_LIFETIME=3600
PASSWORD_MIN_LENGTH=8
LOGIN_MAX_ATTEMPTS=5
LOGIN_LOCKOUT_TIME=900
```
### Docker Services
- **nginx**: Web-Server (Port 8080)
- **php**: PHP-FPM 8.2 mit allen Extensions
- **mysql**: MySQL 8.0 Datenbank (Port 3306)
- **phpmyadmin**: Datenbank-Verwaltung (Port 8081)
## Verwendung
### Dashboard
Das Dashboard zeigt eine Übersicht über:
- Gesamtzahl der Assets
- Aktive vs. ausgemusterte Assets
- Gesamtwert des Inventars
- Letzte Aktivitäten
- Assets mit ablaufender Garantie
- Offene Inventuren
### Asset-Verwaltung
1. **Asset erstellen**: Klicken Sie auf "Neues Asset" und füllen Sie alle Felder aus
2. **Asset bearbeiten**: Klicken Sie auf das Bearbeiten-Symbol bei einem Asset
3. **Asset zuweisen**: Verwenden Sie die Zuweisungs-Funktion für Benutzer
4. **Dateien anhängen**: Laden Sie Dokumente, Bilder oder andere Dateien hoch
5. **Etiketten drucken**: Generieren Sie QR/Barcode-Etiketten für Assets
### Inventur
1. **Inventur starten**: Erstellen Sie einen neuen Inventurdurchlauf
2. **Assets scannen**: Verwenden Sie die Scan-Funktion mit Inventarnummer oder QR-Code
3. **Status erfassen**: Markieren Sie Assets als gefunden, nicht gefunden, defekt oder verschoben
4. **Inventur abschließen**: Generieren Sie einen Abschlussbericht mit Differenzen
### Berichte
- **Asset-Berichte**: Nach verschiedenen Kriterien gefiltert
- **Garantie-Berichte**: Assets mit ablaufender Garantie
- **Standort-Berichte**: Assets nach Standort gruppiert
- **Export-Funktionen**: CSV, Excel, PDF-Export
## Backup & Restore
### Datenbank-Backup
```bash
# Backup erstellen
docker compose exec db mysqldump -u root -p inventory > backup_$(date +%Y%m%d_%H%M%S).sql
# Backup wiederherstellen
docker compose exec -T db mysql -u root -p inventory < backup_file.sql
```
### Uploads-Backup
```bash
# Uploads-Ordner sichern
tar -czf uploads_backup_$(date +%Y%m%d_%H%M%S).tar.gz storage/uploads/
# Uploads wiederherstellen
tar -xzf uploads_backup_file.tar.gz
```
## Wartung
### Logs anzeigen
```bash
# Alle Services
docker compose logs
# Spezifischer Service
docker compose logs php
docker compose logs nginx
docker compose logs db
```
### Datenbank-Migrationen
```bash
# Migrationen manuell ausführen
docker compose exec php php scripts/migrate.php
# Seeder manuell ausführen
docker compose exec php php scripts/seed.php
```
### Cache leeren
```bash
# Storage-Cache leeren
docker compose exec php rm -rf storage/cache/*
```
## Entwicklung
### Projektstruktur
```
asset-management/
├── app/
│ ├── Controllers/ # Controller-Klassen
│ ├── Models/ # Datenmodelle
│ ├── Views/ # PHP-Templates
│ ├── Services/ # Geschäftslogik
│ ├── Middleware/ # HTTP-Middleware
│ ├── Helpers/ # Hilfsfunktionen
│ └── Core/ # Framework-Core
├── config/ # Konfigurationsdateien
├── database/
│ ├── migrations/ # Datenbank-Migrationen
│ └── seeds/ # Testdaten
├── public/ # Web-Root
│ ├── assets/ # CSS, JS, Bilder
│ └── index.php # Front-Controller
├── storage/ # Uploads, Logs, Cache
├── lang/ # Übersetzungsdateien
├── scripts/ # CLI-Skripte
├── docker-compose.yml # Docker-Konfiguration
└── README.md # Diese Datei
```
### Neue Features hinzufügen
1. **Controller erstellen**: Erben Sie von `BaseController`
2. **Model erstellen**: Verwenden Sie PDO mit Prepared Statements
3. **View erstellen**: PHP-Template mit Layout-System
4. **Route hinzufügen**: In `config/routes.php` definieren
5. **Migration erstellen**: Für Datenbankänderungen
### Code-Standards
- **PSR-4**: Autoloading-Standard
- **PSR-12**: Coding Style
- **Prepared Statements**: Für alle Datenbankabfragen
- **CSRF-Schutz**: Für alle POST-Requests
- **Audit-Logging**: Für alle CRUD-Operationen
## Troubleshooting
### Häufige Probleme
**Anwendung nicht erreichbar**
```bash
# Services Status prüfen
docker compose ps
# Logs prüfen
docker compose logs nginx
docker compose logs php
```
**Datenbank-Verbindung fehlgeschlagen**
```bash
# Datenbank-Container Status
docker compose logs db
# Datenbank-Verbindung testen
docker compose exec db mysql -u inventory -p
```
**Upload-Fehler**
```bash
# Berechtigungen prüfen
docker compose exec php ls -la storage/uploads/
# Berechtigungen korrigieren
docker compose exec php chown -R www-data:www-data storage/
```
**Performance-Probleme**
```bash
# OPcache Status prüfen
docker compose exec php php -m | grep opcache
# Cache leeren
docker compose exec php php -r "opcache_reset();"
```
## Support
Bei Problemen oder Fragen:
1. **Logs prüfen**: `docker compose logs`
2. **Dokumentation**: Diese README-Datei
3. **Issues**: GitHub Issues verwenden
## Lizenz
Dieses Projekt steht unter der MIT-Lizenz. Siehe LICENSE-Datei für Details.
## Changelog
### Version 1.0.0
- Initiale Version
- Vollständige Asset-Verwaltung
- Inventur-System
- Benutzer- und Rollenverwaltung
- Berichte und Export-Funktionen
- Docker-Integration
- Mehrsprachigkeit (DE/EN)