Dieses Dokument beschreibt, wie wir gemeinsam den Projektplan für das Projekt „Meldungen an das Implantateregister Deutschland (IRD)" erarbeiten. Es dient als Orientierung für die Zusammenarbeit in dieser Session sowie als Nachschlagewerk für spätere Sessions.
Um Missverständnisse zwischen Claude, Claude Code und Jörg zu vermeiden, gelten folgende Begriffe verbindlich:
| Begriff | Bedeutung |
|---|---|
| Repo | Das GitHub-Repository ird-projektplan – der zentrale, versionierte Stand |
| Working Copy | Das Verzeichnis, in dem Jörg auf den aktuellen Repo-Stand zugreift (Details zum konkreten Zugriffsweg je Projekt: siehe dessen CLAUDE.md) |
| Output | Dateien die Claude zum Download bereitstellt (/mnt/user-data/outputs/) |
| Kontext | Was Claude in der laufenden Session im Speicher hat – hochgeladene oder bearbeitete Dateien |
Claude Code arbeitet auf der Working Copy. Claude arbeitet im Kontext und liefert in den Output. Jörg ist die Brücke: er lädt Dateien aus der Working Copy zu Claude hoch und checkt Output-Dateien in die Working Copy ein.
SESSION-NOTES.md – die dort eingetragene Nummer ist verbindlich| Datei / Verzeichnis | Zweck | Status |
|---|---|---|
docs/projektplan_ird.md |
Hauptdokument – der eigentliche Projektplan | In Bearbeitung |
docs/projektplan_ird.odt |
Druckversion des Projektplans (automatisch per GitHub Action generiert) | Wird bei jedem Push auf main neu erzeugt |
qs_docs/QS-Protokoll-v1_0.md |
QS-Protokoll zur ersten Prüfrunde des Projektplans | In Bearbeitung |
ARBEITSWEISE.md |
Dieses Dokument – Konventionen und Struktur | In Bearbeitung |
BACKLOG.md |
Offene Punkte, Fragen, geplante Ergänzungen | In Bearbeitung |
README.md |
Kurzbeschreibung des Projekts und Repository-Struktur | In Bearbeitung |
Die aktuelle Verzeichnisstruktur des Repos wird von Claude Code in DATEIEN.md gepflegt und dort automatisch aktualisiert. Claude Code trägt beim Einchecken neuer Verzeichnisse oder Dateien die Struktur in DATEIEN.md ein.
Für die aktuelle Verzeichnisstruktur siehe
DATEIEN.md.
Jedes Steuerungsdokument hat eine klar abgegrenzte Rolle. Überschneidungen sind zu vermeiden.
| Dokument | Rolle | Enthält |
|---|---|---|
BACKLOG.md |
Aufgaben- und Klärungsregister | Offene Aufgaben, Klärungsbedarfe, geplante Ergänzungen – Was muss noch getan / geklärt werden? |
DATEIEN.md |
Vollständige Dateiliste | Alle Dateien im Repo mit aktuellen Versionen – Was liegt im Repo, in welcher Version? Wird von Claude Code beim Einchecken automatisch aktualisiert. |
docs/projekt/entscheidungen.md |
Entscheidungsregister | Offene und getroffene Entscheidungen mit Entscheidungsträger, Status und Datum – Was muss entschieden werden, und was wurde entschieden? |
README.md |
Repo-Übersicht | Dokumentenliste mit Versionen und Pfaden – Was gibt es im Repo? |
SESSION-NOTES.md |
Sessionübergabe | Letzter Stand, was wurde gemacht, nächste Schritte – Wo stehen wir gerade? |
Abgrenzungsregel: K-Einträge im BACKLOG die primär eine Entscheidung erfordern (kein weiterer Analyseaufwand nötig), werden in entscheidungen.md geführt und im BACKLOG nur noch referenziert.
#, ##, ###, ####)AP X.Y (X = Phase, Y = laufende Nummer)K-01–K-11, E-01–E-19 etc.) bleiben im etablierten Schema ohneird-projektplan_<ID> (z. B. ird-projektplan_K-12), gemäß der projektübergreifendendev-notes/STANDARDS.md (Kollisionsvermeidung zwischen Repos, siehe CLAUDE.md).odt-Datei wird automatisch per GitHub Action generiert und nicht manuell bearbeitetversion, stand, session) und Versionshistorie aktualisiert – unabhängig davon, ob die Änderung von Claude, Claude Code oder Jörg vorgenommen wirdClaude, Claude Code oder JörgDATEIEN.md geprüft, nicht gegen READMEversion: im Kommentar)DATEIEN.md entsprechend und committet die Datei mitDATEIEN.md – beim Anlegen neuer Verzeichnisse wird die Struktur dort aktualisiertClaude und Claude Code verlieren bei automatischer Kontextkomprimierung Informationen. Um das zu vermeiden gilt:
| Thema | Festlegung |
|---|---|
| Tool-Überführung | Der Projektplan wird nach Confluence überführt (Projektstandard). Zusätzlich Ablage auf dem Netzwerk-Laufwerk für Projekte. |
| Corporate Design / Vorlagen | PowerPoint-Vorlagen vorhanden. Für Textdokumente (Markdown, Word) freie Gestaltung. |
Die Projektdokumentation ist unter https://ird-docs.oemesrv.eu erreichbar.
Konzept:
home.md (Repo-Root) = Startseite mit vollständiger Übersicht und direkten Links zu allen SeitenRegel: Neue Seite einbinden
Wenn eine neue .md-Datei ins Repo kommt, sind zwei Stellen zu aktualisieren:
home.md – Link im passenden Abschnitt ergänzentools/wikijs_navigation.sql – Eintrag in der entsprechenden Gruppe ergänzen, dann Script auf dem VPS ausführen (siehe unten)Navigation per SQL aktualisieren (schneller als Admin-UI):
Der Repo-Klon liegt persistent unter /home/wikijs/ird-dev (gehört dem wikijs-User) –
bewusst nicht unter /tmp, das wird bei den meisten Linux-Systemen bei jedem Neustart
geleert (live aufgefallen in Session 69).
Ab dem zweiten Mal reicht ein einziger Befehl – tools/deploy_navigation.sh klont bei
Bedarf selbst (z. B. falls das Verzeichnis mal manuell gelöscht wurde), sonst pullt es nur,
spielt die Navigation ein und startet Wiki.js neu. sudo (nicht sudo -u wikijs),
weil /home/wikijs für andere User nicht lesbar ist – nur root kann das Script überhaupt
öffnen; innerhalb wechselt es für die Git-Schritte selbst per sudo -u wikijs in den
richtigen User:
sudo bash /home/wikijs/ird-dev/tools/deploy_navigation.sh
Beim allerersten Mal (das Script liegt ja erst im Klon) einmalig manuell klonen –
als wikijs-User, da nur dessen Deploy-Key (~/.ssh/wikijs_github, siehe dessen
SSH-Config) bei GitHub für dieses Repo hinterlegt ist. Der persönliche Key von oeme
funktioniert dafür nicht (Passphrase-Falle, siehe Session-69-Erfahrung):
sudo -u wikijs git clone -b develop git@github.com:oeme-github/ird-projektplan.git /home/wikijs/ird-dev
Äquivalent manuell, falls das Script mal nicht zur Hand ist:
# Repo auf develop pullen – als wikijs-User, da /home/wikijs/ird-dev diesem gehört
sudo -u wikijs git -C /home/wikijs/ird-dev pull
# SQL einspielen (sudo nötig, oeme ist nicht in der docker-Gruppe)
sudo docker exec -i wikijs_db_1 psql -U wikijs -d wiki < /home/wikijs/ird-dev/tools/wikijs_navigation.sql
# Wiki.js neu starten (Cache leeren)
cd /opt/wikijs && sudo docker-compose restart wiki
Seitenstruktur (7 Abschnitte):
| Abschnitt | Inhalt |
|---|---|
| Projektüberblick | Projektplan, README |
| Mapping-Arbeit | Mapping Übersicht + alle 7 Mapping-Sheets |
| Felder & Wertelisten | felder_* + wertelisten_ird |
| Projektdokumentation | Entscheidungen, Aufwand, Rollen, Schnittstellenentsch., Entsch.rahmen DQ |
| Terminavorbereitung | SAP, Xaxoa, Lückenanalyse |
| QS | QS-Protokoll v2.0 + v1.0 |
| Projektsteuerung | Backlog, Arbeitsweise |
Nicht in Wiki.js: SESSION-NOTES.md, DATEIEN.md (interne Wartungsdokumente), mapping_template.md
Bekannte Wiki.js-Einschränkungen (Datei- und Verzeichnisnamen):
qs ist ein reservierter Wiki.js-Pfad → nicht verwendbar (→ qs_docs).md) verhindern den Import (z.B. v1.0.md → v1_0.md)Apache Reverse Proxy (VPS-Konfiguration):
Config-Dateien (beide in /etc/apache2/sites-enabled/):
ird-docs.conf – HTTP-Redirect (Port 80)ird-docs-le-ssl.conf – HTTPS/SSL (Port 443, von Certbot verwaltet)Wichtig: mod_proxy_wstunnel muss aktiviert sein (Wiki.js nutzt WebSockets):
sudo a2enmod proxy_wstunnel
sudo systemctl reload apache2
Der HTTPS-VirtualHost muss WebSocket-Weiterleitung enthalten (vor den ProxyPass-Direktiven):
RewriteEngine On
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) "ws://localhost:3000/$1" [P,L]
Ohne diese Regeln können WebSocket-Verbindungen von Wiki.js mit 504 Gateway Timeout scheitern.
www.-Subdomain: Zertifikat deckt beide Domains ab (ird-docs.oemesrv.eu + www.ird-docs.oemesrv.eu). In ird-docs-le-ssl.conf ist ein 301-Redirect von www → non-www eingerichtet (vor den WebSocket-Regeln). Bei Certbot-Renewal bleibt das Zertifikat für beide Domains gültig.
Sicherheitskonfiguration (VPS + Wiki.js):
| Maßnahme | Status | Hinweis |
|---|---|---|
| Let's Encrypt SSL | ✅ | Automatische Erneuerung per Certbot |
| HSTS | ✅ | max-age=31536000; includeSubDomains in ird-docs-le-ssl.conf |
| mod_evasive | ✅ | Rate-Limiting gegen Scan-Versuche; Config: /etc/apache2/mods-available/evasive.conf |
| Fail2ban | ✅ | Auf VPS-Ebene eingerichtet |
| UFW Firewall | ✅ | Auf VPS-Ebene eingerichtet |
| Wiki.js 2FA | ✅ | In Admin → Security aktiviert |
| Wiki.js Self-Registration | ✅ | Deaktiviert in Admin → Authentication → Local |
| www-Redirect | ✅ | www.ird-docs.oemesrv.eu → 301 → ird-docs.oemesrv.eu; Cert deckt beide Domains ab |
mod_evasive Werte (angepasst für Wiki.js):
DOSHashTableSize 1024
DOSPageCount 20 # Standard 2 wäre zu niedrig für Wiki.js
DOSSiteCount 150
DOSBlockingPeriod 30
Technisches (Entscheidung G-06): Siehe docs/projekt/entscheidungen.md
Bei „End Session" immer:
Vollständige Versionsprüfung aller Dokumente erfolgt über
DATEIEN.md(wird von Claude Code gepflegt).
| Version | Datum | Session | Akteur | Änderung |
|---|---|---|---|---|
| 1.0 | 2026-03-12 | 2 | Claude | Erstversion |
| 1.1 | 2026-03-12 | 13 | Claude | Session-Abschluss-Regel ergänzt |
| 1.2 | 2026-03-17 | 14 | Claude | A-01/A-02: Nur .md bearbeiten; .odt wird von GitHub Action erzeugt |
| 1.3 | 2026-03-17 | 14 | Claude | A-03/A-04: Versionshistorie-Regel mit Akteur-Spalte eingeführt |
| 1.4 | 2026-03-17 | 14 | Claude | A-05: Sessiongröße-Regel ergänzt |
| 1.5 | 2026-03-17 | 15 | Claude | Begriffe-Abschnitt ergänzt (Repo, Working Copy, Output, Kontext) |
| 1.6 | 2026-03-17 | 15 | Claude | Sessionnummer-Regel ergänzt |
| 1.7 | 2026-03-17 | 16 | Claude | Sessionnummer-Regel verschärft: Claude Code darf Nummer nicht selbst hochzählen |
| 1.8 | 2026-03-17 | 18 | Claude | Verzeichnisstruktur ergänzt: docs/xaxoa/ für Xaxoa-Korrespondenz |
| 1.9 | 2026-03-17 | 21 | Claude | Session-Abschluss: README-Versionsprüfung als Pflichtschritt ergänzt |
| 2.0 | 2026-03-17 | 22 | Claude | Dokumentenrollen-Abschnitt ergänzt; Abgrenzung BACKLOG / entscheidungen.md / README / SESSION-NOTES |
| 2.1 | 2026-03-17 | 23 | Claude | Offene Fragen geschlossen: Tool-Überführung (Confluence + Netzlaufwerk) und Corporate Design als Festlegungen dokumentiert |
| 2.2 | 2026-03-17 | 23 | Claude | Versionsmismatches: Regel ergänzt – Claude fragt nach aktueller Version bevor er eine Datei bearbeitet |
| 2.3 | 2026-03-17 | 25 | Claude | Verzeichnisstruktur aktualisiert: docs/sap/ und docs/schnittstellen/mappings/ ergänzt |
| 2.4 | 2026-03-18 | 27 | Claude | DATEIEN.md eingeführt: Dokumentenrolle, Claude-Code-Regel, Versionsprüfung; Session-Abschluss angepasst |
| 2.5 | 2026-03-18 | 27 | Claude | Verzeichnisstruktur aus ARBEITSWEISE entfernt; Claude Code pflegt Struktur in DATEIEN.md |
| 2.6 | 2026-05-26 | 46 | Claude Code | Wiki.js-Abschnitt ergänzt: Konzept, Pflegeregel, Seitenstruktur |
| 2.7 | 2026-05-26 | 46 | Claude Code | Wiki.js Navigation: SQL-Script-Ansatz dokumentiert (schneller als Admin-UI) |
| 2.8 | 2026-05-28 | 47 | Claude Code | Wiki.js-Einschränkungen ergänzt: reservierter Pfad qs, Punkte in Dateinamen |
| 2.9 | 2026-06-02 | 49 | Claude Code | Apache Reverse Proxy: WebSocket-Config (mod_proxy_wstunnel) dokumentiert |
| 3.0 | 2026-06-02 | 50 | Claude Code | Sicherheitskonfiguration dokumentiert: HSTS, mod_evasive, Wiki.js 2FA + Self-Registration |
| 3.1 | 2026-06-02 | 51 | Claude Code | www-Redirect + Zertifikatserweiterung dokumentiert |
| 3.2 | 2026-06-16 | 60 | Claude Code | Header-Versionskommentar korrigiert (war veraltet auf 2.8 stehengeblieben) |
| 3.3 | 2026-09-02 | 65 | Claude Code | Sessionnummer-Regel gelockert: Entscheidung zum Hochzählen bei „End Session" statt starr nur durch Claude (Chat); Claude Code darf jetzt ebenfalls hochzählen |
| 3.4 | 2026-09-02 | 66 | Claude Code | Backlog-ID-Konvention ergänzt: neue Punkte ab sofort mit Präfix ird-projektplan_<ID> (dev-notes-Hub-Onboarding, siehe CLAUDE.md) |
| 3.5 | 2026-09-02 | 68 | Claude Code | Working-Copy-Begriff verallgemeinert (Zugriffsweg auf JoergX1 hat sich geändert: Samba-Mount der Devbox statt eigenem Klon, Details in CLAUDE.md) |
| 3.6 | 2026-09-02 | 69 | Jörg / Claude Code | Wiki.js-Navigation-Anleitung präzisiert: Erstklon muss als wikijs-User laufen (dessen Deploy-Key, nicht der persönliche Key von oeme); sudo für docker-Befehle ergänzt – live erprobt beim Nachtragen der AP-2.x-Seiten |
| 3.7 | 2026-09-02 | 69 | Jörg / Claude Code | tools/deploy_navigation.sh (Session 48, bisher nicht verlinkt) als Kurzweg in die Anleitung aufgenommen; Script selbst um sudo ergänzt (hatte dieselben Lücken wie die manuelle Anleitung) |
| 3.8 | 2026-09-02 | 69 | Jörg / Claude Code | Repo-Klon-Pfad von /tmp/ird-dev auf persistenten Pfad /home/wikijs/ird-dev geändert – /tmp wird bei Neustarts geleert (Jörgs Fund); Script selbstheilend gemacht (klont bei Bedarf selbst) |
| 3.9 | 2026-09-02 | 69 | Jörg / Claude Code | Script-Aufruf korrigiert: sudo bash ... statt sudo -u wikijs bash ... – /home/wikijs ist für andere User nicht lesbar, und wikijs selbst darf kein sudo (interner sudo -u wikijs-Aufruf im Script würde sonst scheitern) – live verifiziert |