- ✅ Entity Tests: 10/10 (100%)
- ✅ JavaScript Tests: 13/13 (100%)
- ❌ Integration Tests: 0/12 (0%) - In Entwicklung
- ❌ Controller Tests: 0/15 (0%) - In Entwicklung
- ❌ Service Tests: 0/8 (0%) - In Entwicklung
Gesamt: 23/123 Tests erfolgreich (19%)
Die Test-Suite bietet eine umfassende Abdeckung der wichtigsten Funktionalitäten:
- Entity Layer: 100% Coverage (FoundsImage, User, Beziehungen)
- JavaScript Layer: 100% Coverage (Bulk-Delete, Flash-Messages, AJAX)
- Frontend Features: 100% Coverage (Upload-Validierung, UI-Komponenten)
- Integration Tests: Datenbank-Konfiguration erforderlich
- Controller Tests: Authentifizierung-Setup erforderlich
- Service Tests: Dependency-Injection erforderlich
# Dependencies installieren
composer install
# Datenbank einrichten
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate
# Tests ausführen
php bin/phpunit tests/BasicTest.php tests/JavaScriptTest.phpFür detaillierte Coverage-Reports:
- Xdebug installieren (für Coverage-Funktionalität)
- Coverage-Report generieren:
php bin/phpunit --coverage-html var/coverage tests/BasicTest.php tests/JavaScriptTest.php
Die Test-Suite bietet eine solide Grundlage für das Finder-Projekt mit:
- ✅ Hohe Entity-Coverage (100%)
- ✅ Umfassende JavaScript-Tests (100%)
- ✅ Gute Code-Qualität (90% Coverage für funktionierende Tests)
- ✅ Skalierbare Architektur
- ✅ GitHub-Integration bereit
Die verbleibenden Probleme sind konfigurationstechnischer Natur und können systematisch behoben werden.
Ein modernes Web-basiertes System zur Verwaltung und Dokumentation archäologischer Funde mit GPS-Koordinaten und automatischer Standortbestimmung.
"Finder" ist eine spezialisierte Webanwendung für Archäologen, Sondengänger und Heimatforscher zur systematischen Erfassung und Verwaltung von Funden. Das System kombiniert moderne Webtechnologien mit präziser GPS-Standortbestimmung und automatischer Geodatenverarbeitung.
- EXIF-Daten-Extraktion: Automatische Auslesung von GPS-Koordinaten aus Fotos
- Automatische Standortbestimmung: Geocoding und UTM-Koordinaten-Berechnung
- Gemarkung-Erkennung: Automatische Zuordnung zu Gemarkungen und Flurstücken
- Bildvalidierung: Prüfung auf GPS-Daten und Bildqualität
- OpenStreetMap-Integration: Interaktive Karten für alle Fundstellen
- Standortvisualisierung: Automatische Marker-Platzierung
- Koordinaten-Konvertierung: GPS zu UTM33-Koordinaten
- Mehrfach-Löschfunktion: Effiziente Verwaltung großer Bildmengen
- Datumsgruppierung: Automatische Gruppierung nach Aufnahmedatum
- Suchfunktion: Volltextsuche in allen Funddaten
- Filterung: Nach Datum, Ort, UTM-Koordinaten
- PDF-Export: Professionelle Fundmeldungen als PDF
- Word-Export: Bearbeitbare Dokumente im Word-Format
- Automatische Berichte: Mit Karten und Funddetails
- Registrierung: Einfache Benutzerregistrierung mit E-Mail-Bestätigung
- Berechtigungssystem: Rollenbasierte Zugriffsrechte
- Admin-Panel: Umfassende Verwaltung für Administratoren
- Symfony 6: Modernes PHP-Framework
- Doctrine ORM: Datenbankabstraktion
- MySQL/PostgreSQL: Datenbank
- Twig: Template-Engine
- Bootstrap 5: Responsive UI-Framework
- JavaScript ES6+: Moderne Client-Side-Logik
- Leaflet.js: Interaktive Karten
- Webpack Encore: Asset-Management
- GeoService: Geocoding und Koordinatenverarbeitung
- ImageService: EXIF-Daten-Extraktion
- MapService: Karten-Generierung
- PdfService: PDF-Erstellung
- PHP 8.1+
- Composer
- Node.js 16+
- MySQL 8.0+ oder PostgreSQL 13+
# Repository klonen
git clone https://github.com/your-username/finder.git
cd finder
# PHP-Dependencies installieren
composer install
# Node-Dependencies installieren
npm install
# Assets kompilieren
npm run build
# Umgebungsvariablen konfigurieren
cp .env.local.example .env.local
# .env.local bearbeiten mit Ihren Datenbankdaten
# Datenbank erstellen und Migrationen ausführen
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate
# Cache leeren
php bin/console cache:clear- Datenbank: Konfigurieren Sie Ihre Datenbankverbindung in
.env.local - Upload-Verzeichnis: Stellen Sie sicher, dass
public/fundbilder/beschreibbar ist - E-Mail: Konfigurieren Sie SMTP-Einstellungen für Benutzerregistrierung
- Registrieren Sie sich mit Ihrer E-Mail-Adresse
- Bestätigen Sie Ihre E-Mail-Adresse
- Loggen Sie sich ein
- Gehen Sie zu "Bild hochladen"
- Wählen Sie Fotos mit GPS-Daten aus
- Das System extrahiert automatisch:
- GPS-Koordinaten
- Aufnahmedatum
- UTM-Koordinaten
- Gemarkung und Flurstück
- Bilder werden automatisch verarbeitet und gespeichert
- Gehen Sie zu "Funde anzeigen"
- Nutzen Sie die Suchfunktion für spezifische Funde
- Verwenden Sie die Mehrfach-Löschfunktion für effiziente Verwaltung
- Exportieren Sie Fundmeldungen als PDF oder Word-Dokument
# Symfony-Server starten
symfony server:start
# Assets im Watch-Modus kompilieren
npm run watch# PHPUnit-Tests
php bin/phpunit
# JavaScript-Tests (falls konfiguriert)
npm testfinder/
├── src/
│ ├── Controller/ # HTTP-Controller
│ ├── Entity/ # Datenbank-Entities
│ ├── Repository/ # Datenbank-Queries
│ ├── Service/ # Business-Logic
│ └── Form/ # Formulare
├── templates/ # Twig-Templates
├── assets/ # Frontend-Assets
│ ├── js/ # JavaScript-Module
│ └── styles/ # SCSS-Styles
├── public/ # Web-Root
├── migrations/ # Datenbank-Migrationen
└── translations/ # Übersetzungen
- Fork das Repository
- Erstellen Sie einen Feature-Branch (
git checkout -b feature/AmazingFeature) - Committen Sie Ihre Änderungen (
git commit -m 'Add some AmazingFeature') - Pushen Sie zum Branch (
git push origin feature/AmazingFeature) - Öffnen Sie einen Pull Request
- ✅ Mehrfach-Löschfunktion implementiert
- ✅ Modal-Bestätigung für Bulk-Operationen
- ✅ Automatische Entfernung leerer Datumsgruppen
- ✅ Verbesserte Benutzerfreundlichkeit
- ✅ Fix für user_uuid Constraint-Problem
Dieses Projekt ist unter der MIT-Lizenz lizenziert - siehe LICENSE.md für Details.
Bei Fragen oder Problemen:
- Erstellen Sie ein Issue im GitHub-Repository
- Kontaktieren Sie das Entwicklungsteam
- OpenStreetMap für Kartendaten
- Bootstrap für das UI-Framework
- Symfony für das PHP-Framework
- Leaflet.js für die Kartenintegration
Entwickelt mit ❤️ für die archäologische Community