# Documentation Standards --- guideline_type: "project-standards" scope: "documentation-standards" audience: ["developers", "ai-assistants", "technical-writers"] last_updated: "2025-09-15" dependencies: ["master-guideline.md"] related_files: ["README*.md", "docs/**", "*.md", "openapi.yaml"] ai_context: "Documentation language standards, README structure, API documentation, and technical writing guidelines" --- ## 📝 Dokumentationsstandards ### Sprache für Dokumentation * **README-Dateien:** Alle README-Dokumentationen im Projekt müssen in **deutscher Sprache** verfasst werden. Dies gewährleistet Konsistenz und Zugänglichkeit für das deutsche Entwicklungsteam. * **Code-Kommentare:** Komplexe Geschäftslogik und fachliche Zusammenhänge sollen in deutscher Sprache kommentiert werden. * **API-Dokumentation:** OpenAPI-Beschreibungen und -Beispiele sind bevorzugt in deutscher Sprache zu verfassen, sofern keine internationalen Anforderungen bestehen. > **🤖 AI-Assistant Hinweis:** > Dokumentationssprache-Regeln: > - **README-Dateien:** Immer Deutsch > - **Code-Kommentare:** Deutsch für Geschäftslogik, Englisch für technische Details > - **API-Docs:** Deutsch bevorzugt, Englisch bei internationalen APIs > - **Technische Begriffe:** Englische Originalform wenn keine deutsche Übersetzung etabliert ### Dokumentationsstruktur * README-Dateien sollen eine einheitliche Struktur befolgen: Überblick, Architektur, Entwicklung, Tests, Deployment. * Technische Begriffe dürfen in englischer Originalform verwendet werden, wenn keine etablierte deutsche Übersetzung existiert. ## 🎯 AI-Assistenten: Documentation-Schnellreferenz ### README-Template-Struktur ```markdown # [Projekt/Modul Name] ## Überblick [Kurze Beschreibung des Zwecks und der Funktionalität] ## Architektur [Architektonische Entscheidungen und Komponenten-Übersicht] ## Entwicklung [Setup-Anweisungen für lokale Entwicklung] ### Voraussetzungen [Erforderliche Tools und Versionen] ### Installation [Schritt-für-Schritt Setup-Anleitung] ### Konfiguration [Wichtige Konfigurationsoptionen] ## Tests [Test-Ausführung und Test-Strategie] ## Deployment [Deployment-Anweisungen für verschiedene Umgebungen] ## API-Dokumentation [Links zu API-Docs oder eingebettete Dokumentation] ## Troubleshooting [Häufige Probleme und Lösungen] ``` ### Code-Kommentar-Standards #### Deutsche Geschäftslogik-Kommentare ```kotlin /** * Prüft, ob ein Mitglied für die Anmeldung zu einem Turnier berechtigt ist. * * Ein Mitglied ist berechtigt, wenn: * - Der Mitgliedsstatus AKTIV ist * - Die Lizenz gültig und nicht suspendiert ist * - Keine offenen Zahlungen vorliegen */ fun isEligibleForTournament(member: Member, tournament: Tournament): Result { // Mitgliedsstatus prüfen if (member.status != MemberStatus.ACTIVE) { return Result.Failure(ValidationError.MEMBER_NOT_ACTIVE) } // Lizenzvalidierung durchführen return validateLicense(member, tournament) } ``` #### Englische technische Kommentare ```kotlin /** * Cache implementation using Redis with TTL support * Performance: O(1) for get/set operations */ class RedisCache( private val redisClient: RedisClient, private val ttl: Duration = Duration.ofHours(1) ) : Cache { override suspend fun get(key: String): T? { // Use Redis GET command with automatic deserialization return redisClient.get(key)?.let { jsonMapper.readValue(it, typeRef()) } } } ``` ### OpenAPI-Dokumentation Standards #### Deutsche API-Beschreibungen ```yaml openapi: 3.0.0 info: title: Meldestelle API description: REST API für die Verwaltung von Pferdesport-Meldungen version: 1.0.0 paths: /members: post: summary: Neues Mitglied anlegen description: | Erstellt ein neues Mitglied in der Datenbank. Validiert alle Pflichtfelder und prüft auf Duplikate. requestBody: description: Mitgliedsdaten für die Erstellung required: true content: application/json: schema: $ref: '#/components/schemas/CreateMemberRequest' example: name: "Max Mustermann" email: "max.mustermann@example.com" licenseNumber: "12345" responses: '201': description: Mitglied erfolgreich erstellt content: application/json: schema: $ref: '#/components/schemas/Member' '400': description: Ungültige Eingabedaten content: application/json: schema: $ref: '#/components/schemas/ValidationError' components: schemas: Member: type: object description: Repräsentiert ein Mitglied im System properties: id: type: string format: uuid description: Eindeutige Mitglieds-ID example: "550e8400-e29b-41d4-a716-446655440000" name: type: string description: Vollständiger Name des Mitglieds example: "Max Mustermann" email: type: string format: email description: E-Mail-Adresse des Mitglieds example: "max.mustermann@example.com" ``` ### Dokumentations-Checkliste #### README-Dateien - [ ] **Struktur:** Folgt dem Standard-Template - [ ] **Sprache:** Auf Deutsch verfasst - [ ] **Aktualität:** Entspricht dem aktuellen Code-Stand - [ ] **Vollständigkeit:** Alle erforderlichen Abschnitte vorhanden - [ ] **Beispiele:** Konkrete Code-Beispiele und Kommandos - [ ] **Links:** Funktionierende Verweise auf verwandte Dokumentation #### API-Dokumentation - [ ] **OpenAPI-Spezifikation:** Vollständig und valide - [ ] **Deutsche Beschreibungen:** Für alle Endpunkte und Schemas - [ ] **Beispiele:** Realistische Request/Response-Beispiele - [ ] **Error-Handling:** Dokumentierte Fehlerfälle - [ ] **Authentifizierung:** Sicherheitsanforderungen dokumentiert #### Code-Kommentare - [ ] **Geschäftslogik:** Deutsche Kommentare für fachliche Aspekte - [ ] **Technische Details:** Englische Kommentare für Framework-/Library-Code - [ ] **Komplexität:** Komplexe Algorithmen sind erklärt - [ ] **TODOs:** Mit Ticket-Referenzen versehen - [ ] **Javadoc/KDoc:** Für öffentliche APIs vollständig ### Dokumentations-Patterns #### Architektur-Diagramme ### System-Architektur ```mermaid graph TB subgraph "Client Layer" WEB[Web App] MOBILE[Mobile App] end subgraph "API Gateway" GW[API Gateway] end subgraph "Service Layer" MS[Member Service] TS[Tournament Service] NS[Notification Service] end subgraph "Data Layer" PG[(PostgreSQL)] RD[(Redis)] end WEB --> GW MOBILE --> GW GW --> MS GW --> TS GW --> NS MS --> PG TS --> PG NS --> RD ``` #### Feature-Dokumentation ## Feature: Turnier-Anmeldung ### Fachlicher Überblick Die Turnier-Anmeldung ermöglicht es Mitgliedern, sich für Turniere zu registrieren. ### User Stories - Als Mitglied möchte ich mich für ein Turnier anmelden können - Als Turnierleiter möchte ich Anmeldungen verwalten können ### Technische Umsetzung #### API-Endpunkte - `POST /tournaments/{id}/registrations` - Anmeldung erstellen - `GET /tournaments/{id}/registrations` - Anmeldungen abrufen - `DELETE /registrations/{id}` - Anmeldung stornieren #### Domain-Events - `TournamentRegistrationCreated` - Bei erfolgreicher Anmeldung - `TournamentRegistrationCancelled` - Bei Stornierung ### Business Rules 1. Anmeldung nur für aktive Mitglieder möglich 2. Anmeldeschluss muss beachtet werden 3. Maximale Teilnehmerzahl darf nicht überschritten werden #### Troubleshooting-Dokumentation ## Häufige Probleme ### Problem: Service startet nicht **Symptome:** Container bleibt im Status "Restarting" **Ursachen:** - Datenbankverbindung fehlgeschlagen - Fehlende Environment-Variablen - Port bereits belegt **Lösung:** 1. Logs prüfen: `docker-compose logs service-name` 2. Environment-Variablen validieren 3. Port-Konflikte lösen: `netstat -tulpn | grep :8080` ### Problem: Langsame API-Antworten **Symptome:** Response-Zeiten > 2 Sekunden **Debugging:** ```bash # Database-Performance prüfen docker-compose exec postgres psql -c "SELECT * FROM pg_stat_activity;" # Redis-Performance prüfen docker-compose exec redis redis-cli info stats ``` **Optimierung:** - Database-Indizes überprüfen - Query-Performance analysieren - Cache-Hit-Rate optimieren ### Versionierung und Updates #### Dokumentations-Versionierung - README-Dateien werden mit dem Code versioniert - API-Dokumentation folgt Semantic Versioning - Changelog wird für breaking changes geführt #### Update-Prozess 1. **Code-Änderungen** → README aktualisieren 2. **API-Änderungen** → OpenAPI-Spec anpassen 3. **Architektur-Änderungen** → Diagramme überarbeiten 4. **Deployment-Änderungen** → Deployment-Docs aktualisieren --- **Navigation:** - [Master-Guideline](../master-guideline.md) - Übergeordnete Projektrichtlinien - [Coding-Standards](./coding-standards.md) - Code-Qualitätsstandards - [Testing-Standards](./testing-standards.md) - Test-Qualitätssicherung - [Architecture-Principles](./architecture-principles.md) - Architektur-Grundsätze