docs: Projektorganisation, Architekturplan und Issues pro Phase (#001)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# #001 Projekt-Setup
|
||||
**Status:** in Arbeit
|
||||
**Meilenstein:** v0.1.0
|
||||
**Labels:** chore, infrastruktur
|
||||
**Geschätzt:** 3 h **Tatsächlich:** –
|
||||
|
||||
## Ziel
|
||||
Arbeitsfähiges Repository mit Projektorganisation (Devlog, Changelog, Issues) und einem lauffähigen Next.js-Grundgerüst inklusive AdminLTE-CSS, Linting und Prisma-Grundkonfiguration.
|
||||
|
||||
## Aufgaben
|
||||
- [x] Git-Repository mit Branch `main`, `.gitignore`
|
||||
- [x] `DEVLOG.md`, `CHANGELOG.md`, `docs/issues/` mit Übersicht
|
||||
- [x] Architektur- und Umsetzungsplan (`docs/architektur.md`)
|
||||
- [x] Issues pro Phase anlegen
|
||||
- [ ] Next.js (App Router, TypeScript strict, `src/`) aufsetzen
|
||||
- [ ] Abhängigkeiten: `admin-lte`, `bootstrap`, `bootstrap-icons`, zod
|
||||
- [ ] ESLint + Prettier, `npm run lint`, `npm run typecheck`
|
||||
- [ ] Version `0.1.0-dev` in `package.json`, Versionsanzeige-Helfer
|
||||
- [ ] Vitest-Grundkonfiguration
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] `npm run dev` startet ohne Fehler
|
||||
- [ ] `npm run lint` und `npm run typecheck` sind grün
|
||||
- [ ] Keine Remote-URL in Projektdateien
|
||||
|
||||
## Abhängigkeiten
|
||||
–
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
- AdminLTE 4.9.1 (Bootstrap 5.3.8) ist stabil und jQuery-frei. Es wird **nur das CSS** eingebunden; die interaktiven Teile (Sidebar-Toggle, Treeview, Card-Widgets) werden als React-Komponenten nachgebaut, weil die AdminLTE-Plugins das DOM direkt manipulieren.
|
||||
- Node 24 LTS über nvm (Benutzerinstallation).
|
||||
@@ -0,0 +1,31 @@
|
||||
# #002 Klickbarer Prototyp
|
||||
**Status:** offen
|
||||
**Meilenstein:** v0.1.0
|
||||
**Labels:** ui, prototyp
|
||||
**Geschätzt:** 8 h **Tatsächlich:** –
|
||||
|
||||
## Ziel
|
||||
Klickbarer UI-Prototyp der Seiten „Dashboard“, „Kunden-Detail“ und „Host-Detail“ mit realistischen Beispieldaten und ohne Backend, als Abstimmungsgrundlage für Look & Feel. Die Komponenten werden in den späteren Phasen weiterverwendet.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] Logo-Komponente (Standard, Sidebar-Variante, einfarbig, Favicon 32/16) + `favicon.svg`, `favicon.ico`, PNGs, `apple-touch-icon`
|
||||
- [ ] Theme: Farb-Tokens (abgedunkelte Info/Erfolg), Source Sans 3 (16 px), Monospace-Klasse mit Kopier-Button
|
||||
- [ ] Layout: Sidebar (250 px, einklappbar, Overlay mobil), Kopfleiste, Inhaltskopf mit Breadcrumb, Footer mit Version
|
||||
- [ ] Komponenten: SmallBox, InfoBox, Card, Badge, Callout, TodoList, ProgressBar, Tabs, CopyableCode
|
||||
- [ ] Beispieldaten (`src/mock/`): 4 Kunden, ~8 Hosts (PVE/PBS/PMG), Laufzeiten, Rechnungen, Alerts
|
||||
- [ ] Dashboard: 4 Small Boxes, Callout „Nicht zugeordnete Hosts“, Card „Subscriptions nach Ablauf“, Card „Aufgaben“, Card „Rechnungsstatus je Kunde“
|
||||
- [ ] Kunden-Detail: Info-Boxen (Hosts, Einkauf, Verkauf, Marge), Host-Tabelle, Laufzeiten-Tabelle, Summen pro Jahr, Ansprechpartner, Notizen
|
||||
- [ ] Host-Detail: Profil-Card + Tabs Übersicht, Subscription-Historie, Reports, Rechnungen, Notizen
|
||||
- [ ] Warnglocke mit Dropdown, Strg+K-Suchdialog (clientseitig über Mock-Daten)
|
||||
- [ ] Dark-Mode-Umschalter (Grundfunktion)
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] Alle drei Seiten sind über Sidebar/Links erreichbar und klickbar
|
||||
- [ ] Suche nach `pve1c-a6bd21fcb6` findet Host und Kunde
|
||||
- [ ] Mobil (375 px) benutzbar: Sidebar als Overlay, Tabellen scrollbar
|
||||
- [ ] Weiße Schrift auf Info/Erfolg erfüllt 4,5:1
|
||||
|
||||
## Abhängigkeiten
|
||||
#001
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
@@ -0,0 +1,28 @@
|
||||
# #003 Datenmodell und Migrationen
|
||||
**Status:** offen
|
||||
**Meilenstein:** v0.1.0
|
||||
**Labels:** backend, datenbank
|
||||
**Geschätzt:** 5 h **Tatsächlich:** –
|
||||
|
||||
## Ziel
|
||||
Vollständiges Prisma-Schema gemäß `docs/architektur.md` Abschnitt 3, erste Migration, Seed mit Admin-User und optionalen Demo-Daten.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] Docker-Compose für lokale Entwicklung (nur PostgreSQL)
|
||||
- [ ] Prisma-Schema: Customer, Site, Host, Tag, Report, SubscriptionKey, ServerIdHistory, SubscriptionPeriod, PurchaseInvoice(+Item), SalesInvoice(+Item), Attachment, AgentToken, EnrollmentToken, Alert, Notification, AlertRuleSetting, NotificationChannel, User, AuditLog, Setting
|
||||
- [ ] Indizes für Suche (Key, Server-ID, Hostname, IP, Rechnungsnummer)
|
||||
- [ ] Erste Migration
|
||||
- [ ] Seed: Admin-User aus Umgebungsvariablen, Standard-Warnregeln, optional Demo-Daten (`SEED_DEMO=1`)
|
||||
- [ ] DB-Client-Singleton, Test-Datenbank-Setup für Vitest
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] `npx prisma migrate dev` läuft auf leerer DB durch
|
||||
- [ ] `npx prisma db seed` legt Admin und Standard-Regeln an, idempotent
|
||||
- [ ] Beträge als Decimal, Zeitstempel in UTC
|
||||
|
||||
## Abhängigkeiten
|
||||
#001
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
- Host-Identität über Agent-Token/`agentId`, nicht über Server-ID (siehe Architektur).
|
||||
- Rechnungen als eigene Entitäten mit Positionen, damit Sammelbestellungen und Sammelrechnungen abbildbar sind.
|
||||
@@ -0,0 +1,28 @@
|
||||
# #004 Agent-API
|
||||
**Status:** offen
|
||||
**Meilenstein:** v0.1.0
|
||||
**Labels:** backend, api, sicherheit
|
||||
**Geschätzt:** 6 h **Tatsächlich:** –
|
||||
|
||||
## Ziel
|
||||
Getrennte, abgesicherte API unter `/api/agent/v1`, über die sich Agents registrieren und Reports abliefern.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] Token-Bibliothek: Erzeugung (Präfix `plx_e_`/`plx_h_`), SHA-256-Hash, Prüfung, Widerruf, `lastUsedAt`
|
||||
- [ ] `POST /enroll`: Enrollment-Token prüfen (Ablauf, Nutzungen), Host anlegen oder Neuinstallation erkennen, Host-Token ausgeben, optionale Kunden-/Standort-Zuordnung
|
||||
- [ ] `POST /report`: zod-Schema (alle Felder nullable), idempotent über `reportId`, Transaktion (Report, Stammdaten, Key-Historie, Server-ID-Historie, Laufzeitvorschlag)
|
||||
- [ ] `GET /ping`
|
||||
- [ ] Rate-Limiting (pro IP und Token), `429` mit `Retry-After`
|
||||
- [ ] Einheitliche Fehlerantworten (JSON), kein Stacktrace nach außen
|
||||
- [ ] Tests: Auth (fehlend/falsch/widerrufen/abgelaufen), Validierung, Idempotenz, Key-Wechsel, Server-ID-Wechsel, Laufzeitvorschlag, Rate-Limit
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] Report mit ausschließlich `null`-Feldern (außer Pflicht-Metadaten) wird angenommen
|
||||
- [ ] Tokens liegen nur gehasht in der DB
|
||||
- [ ] UI-Session-Cookies werden von der Agent-API ignoriert
|
||||
- [ ] Alle Tests grün
|
||||
|
||||
## Abhängigkeiten
|
||||
#003
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
@@ -0,0 +1,31 @@
|
||||
# #005 Agent-Skript
|
||||
**Status:** offen
|
||||
**Meilenstein:** v0.2.0
|
||||
**Labels:** agent
|
||||
**Geschätzt:** 8 h **Tatsächlich:** –
|
||||
|
||||
## Ziel
|
||||
Schlanker Bash-Agent (nur `curl` und Proxmox-Bordmittel), der täglich per systemd-Timer seinen Status meldet, mit One-Liner-Installation.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] Produkterkennung PVE / PBS / PMG
|
||||
- [ ] Datensammlung: Subscription (key, status, level, productname, sockets, serverid, regdate, nextduedate, checktime), Hostname, FQDN, IPs, Cluster/Node, Version, Kernel, Sockets, CPU-Modell, Uptime, Updates, Agent-Version, Zeitstempel
|
||||
- [ ] JSON-Erzeugung ohne `jq` inkl. Escaping, fehlende Werte als `null`
|
||||
- [ ] Senden mit Retry/Backoff, Spool-Verzeichnis, Nachsenden
|
||||
- [ ] TLS-Verifikation, optional eigenes CA-Zertifikat
|
||||
- [ ] Logging ins Journal
|
||||
- [ ] `install.sh`: `--token`, `--url`, `--ca-cert`; Config `/etc/proxledger/agent.conf` (600); Service + Timer (`RandomizedDelaySec`); erster Report sofort
|
||||
- [ ] `--uninstall`, `--update`, `--test`
|
||||
- [ ] Auslieferung von `install.sh`/Agent über das Dashboard
|
||||
- [ ] ShellCheck sauber; Tests mit Beispielausgaben der `*subscription get`-Befehle
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] Installation per One-Liner auf PVE 8/9 und PBS 3/4 erfolgreich
|
||||
- [ ] Report scheitert nicht an fehlenden Befehlen/Feldern
|
||||
- [ ] Dashboard offline → Report wird gepuffert und beim nächsten Lauf nachgesendet
|
||||
- [ ] Uninstall entfernt Units, Config und Spool vollständig
|
||||
|
||||
## Abhängigkeiten
|
||||
#004
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
@@ -0,0 +1,27 @@
|
||||
# #006 Kunden, Standorte und Hostzuweisung
|
||||
**Status:** offen
|
||||
**Meilenstein:** v0.3.0
|
||||
**Labels:** ui, backend
|
||||
**Geschätzt:** 6 h **Tatsächlich:** –
|
||||
|
||||
## Ziel
|
||||
Kunden und Standorte pflegen, neu registrierte Hosts schnell Kunden zuweisen und Enrollment-Tokens verwalten.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] Kunden anlegen/bearbeiten/löschen (Name, Kundennummer, Ansprechpartner, E-Mail, Notizen)
|
||||
- [ ] Standorte je Kunde
|
||||
- [ ] Seite „Nicht zugeordnete Hosts“ mit Mehrfachauswahl und Schnellzuweisung (Kunde + Standort)
|
||||
- [ ] Callout auf dem Dashboard, solange nicht zugeordnete Hosts existieren
|
||||
- [ ] Enrollment-Tokens: erzeugen (Ablauf, max. Nutzungen, optional Kunde/Standort), anzeigen (einmalig), widerrufen; Install-One-Liner zum Kopieren
|
||||
- [ ] Host-Tokens widerrufen
|
||||
- [ ] Audit-Log-Einträge für alle Änderungen
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] Mehrere Hosts lassen sich in einem Schritt zuweisen
|
||||
- [ ] Mit kundengebundenem Enrollment-Token registrierte Hosts sind sofort zugeordnet
|
||||
- [ ] Widerrufener Token wird von der Agent-API abgewiesen
|
||||
|
||||
## Abhängigkeiten
|
||||
#002, #004
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
@@ -0,0 +1,25 @@
|
||||
# #007 Host-Tabelle, Suche und Detailansichten
|
||||
**Status:** offen
|
||||
**Meilenstein:** v0.4.0
|
||||
**Labels:** ui
|
||||
**Geschätzt:** 8 h **Tatsächlich:** –
|
||||
|
||||
## Ziel
|
||||
Hosts finden, filtern und vollständig einsehen.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] Host-Tabelle (serverseitig): Filter Kunde, Status, Produkt, Ablauf, Rechnungsstatus; Sortierung; Spaltenauswahl; Paginierung; CSV-Export
|
||||
- [ ] Suche nach Key, Server-ID, Hostname, IP, Proxmox-Rechnungsnummer
|
||||
- [ ] Globale Suche in der Kopfleiste und Sidebar, `Strg+K`
|
||||
- [ ] Host-Detail: Profil-Card, Tabs Übersicht, Subscription-Historie, Reports, Rechnungen, Notizen; Tags
|
||||
- [ ] Kopier-Buttons für Key, Server-ID, Rechnungsnummer
|
||||
- [ ] Badge „Keine Meldung“
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] Eingabe `pve1c-a6bd21fcb6` liefert direkt Host und Kunde
|
||||
- [ ] Filter bleiben in der URL erhalten (teilbar, Zurück-Button funktioniert)
|
||||
|
||||
## Abhängigkeiten
|
||||
#006
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
@@ -0,0 +1,28 @@
|
||||
# #008 Laufzeiten und Rechnungen
|
||||
**Status:** offen
|
||||
**Meilenstein:** v0.5.0
|
||||
**Labels:** ui, backend, buchhaltung
|
||||
**Geschätzt:** 10 h **Tatsächlich:** –
|
||||
|
||||
## Ziel
|
||||
Lizenzjahre mit Proxmox-Einkaufsrechnung und Kundenrechnung erfassen und den Status schnell pflegen.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] Laufzeitvorschlag bei neuem `nextduedate` bestätigen/verwerfen
|
||||
- [ ] Laufzeit manuell anlegen/bearbeiten
|
||||
- [ ] Proxmox-Rechnung erfassen (auch Sammelrechnung über mehrere Laufzeiten), PDF-Upload
|
||||
- [ ] Kundenrechnung erfassen (auch Sammelrechnung), PDF-Upload
|
||||
- [ ] Marge pro Laufzeit, Kunde und Jahr berechnen
|
||||
- [ ] Rechnungsübersicht: alle Laufzeiten, Umschalter „Proxmox bezahlt“ / „Kundenrechnung erstellt“ direkt in der Zeile, Filter Offen/Erledigt/Alle, Kunde, Zeitraum
|
||||
- [ ] Sidebar-Badge offene Rechnungspunkte
|
||||
- [ ] Aufgaben-Card auf dem Dashboard mit echten Aktionen
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] Umschalten in der Tabelle wirkt sofort und wird im Audit-Log protokolliert
|
||||
- [ ] Summen Einkauf/Verkauf/Marge stimmen mit Einzelwerten überein (Tests)
|
||||
- [ ] Nur PDF bis 10 MB wird angenommen
|
||||
|
||||
## Abhängigkeiten
|
||||
#007
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
@@ -0,0 +1,25 @@
|
||||
# #009 Kundenübersicht, Dashboard und Jahresbahn
|
||||
**Status:** offen
|
||||
**Meilenstein:** v0.6.0
|
||||
**Labels:** ui
|
||||
**Geschätzt:** 8 h **Tatsächlich:** –
|
||||
|
||||
## Ziel
|
||||
Überblick über Kunden, Kennzahlen und anstehende Abläufe mit Echtdaten.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] Kundenübersicht: Anzahl Hosts, aktive Subscriptions, nächster Ablauf, offene Warnungen, Rechnungs-Ampel
|
||||
- [ ] Kunden-Detail mit Echtdaten (Info-Boxen, Hosts, Laufzeiten, Summen pro Jahr)
|
||||
- [ ] Dashboard mit Echtdaten: Small Boxes (inkl. „Mehr Infos“-Links auf gefilterte Listen), Kacheln ohne Subscription, ohne Meldung, ohne Kunde, offene Proxmox-Rechnungen, fehlende Kundenrechnungen
|
||||
- [ ] Card „Rechnungsstatus je Kunde“
|
||||
- [ ] Ablauf-Kalender: nächste 90 Tage
|
||||
- [ ] Jahresbahn: Timeline der nächsten 12 Monate, „Heute“-Linie, gruppiert nach Kunde
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] Kennzahlen stimmen mit den gefilterten Listen überein
|
||||
- [ ] Jahresbahn mobil horizontal scrollbar
|
||||
|
||||
## Abhängigkeiten
|
||||
#008
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
@@ -0,0 +1,22 @@
|
||||
# #010 Export CSV und PDF
|
||||
**Status:** offen
|
||||
**Meilenstein:** v0.6.0
|
||||
**Labels:** export
|
||||
**Geschätzt:** 5 h **Tatsächlich:** –
|
||||
|
||||
## Ziel
|
||||
Daten für Kundenunterlagen und Buchhaltung exportieren.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] CSV (UTF-8 mit BOM, Semikolon, deutsches Zahlenformat): Host-Liste, Kundenübersicht, Rechnungsliste pro Jahr
|
||||
- [ ] PDF mit einfarbigem Logo: Host-Liste, Kundenübersicht (Anlage für einen Kunden), Rechnungsliste pro Jahr mit Summen
|
||||
- [ ] Export berücksichtigt aktive Filter
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] CSV öffnet sich in Excel ohne Umlautfehler
|
||||
- [ ] PDF-Summen entsprechen der Rechnungsübersicht
|
||||
|
||||
## Abhängigkeiten
|
||||
#009
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
@@ -0,0 +1,26 @@
|
||||
# #011 Warnregeln
|
||||
**Status:** offen
|
||||
**Meilenstein:** v0.7.0
|
||||
**Labels:** backend, alerts
|
||||
**Geschätzt:** 8 h **Tatsächlich:** –
|
||||
|
||||
## Ziel
|
||||
Konfigurierbare Warnregeln, die Alerts öffnen und automatisch schließen.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] Regel-Engine: reine Funktionen, Fingerprint, Abgleich offen/neu/erledigt
|
||||
- [ ] Regeln: Ablauf 30/14/7, Status ≠ active, Sockets-Abweichung, keine Meldung 48 h, Server-ID geändert, Key mehrfach, Host ohne Kunde, Proxmox-Rechnung fällig, Kundenrechnung fehlt, Kundenrechnung unbezahlt nach X Tagen
|
||||
- [ ] Worker-Prozess mit Scheduler (stündlich) + Auswertung nach jedem Report
|
||||
- [ ] Einstellungsseite: Regeln aktivieren, Schwellwerte ändern
|
||||
- [ ] Warnglocke und Alert-Liste (offen/erledigt, quittieren)
|
||||
- [ ] Tests für jede Regel inkl. Grenzfälle
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] Kein doppelter offener Alert für denselben Sachverhalt
|
||||
- [ ] Alerts schließen sich automatisch, wenn die Ursache behoben ist
|
||||
- [ ] Alle Regel-Tests grün
|
||||
|
||||
## Abhängigkeiten
|
||||
#008
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
@@ -0,0 +1,25 @@
|
||||
# #012 Benachrichtigungen
|
||||
**Status:** offen
|
||||
**Meilenstein:** v0.8.0
|
||||
**Labels:** backend, alerts
|
||||
**Geschätzt:** 6 h **Tatsächlich:** –
|
||||
|
||||
## Ziel
|
||||
Über neue Alerts per E-Mail und Webhook informieren, plus regelmäßige Zusammenfassung.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] SMTP (STARTTLS, M365/Exchange Online getestet), HTML-Mail mit Logo
|
||||
- [ ] Generischer Webhook (JSON, optional HMAC-Signatur, eigene Header)
|
||||
- [ ] Deduplizierung: nur bei neuem Alert oder Eskalation
|
||||
- [ ] Tägliche/wöchentliche Zusammenfassung
|
||||
- [ ] Einstellungsseite mit „Test senden“
|
||||
- [ ] Wiederholung bei Versandfehler, Versandprotokoll
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] Testmail über Exchange Online kommt an
|
||||
- [ ] Derselbe offene Alert erzeugt keine zweite Benachrichtigung
|
||||
|
||||
## Abhängigkeiten
|
||||
#011
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
@@ -0,0 +1,26 @@
|
||||
# #013 Authentifizierung und Audit-Log
|
||||
**Status:** offen
|
||||
**Meilenstein:** v0.9.0
|
||||
**Labels:** sicherheit
|
||||
**Geschätzt:** 6 h **Tatsächlich:** –
|
||||
|
||||
## Ziel
|
||||
Zugriff auf das Dashboard absichern und Änderungen nachvollziehbar machen.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] Auth.js: OIDC (authentik), lokaler Admin als Fallback (argon2id)
|
||||
- [ ] Middleware schützt alle UI-Routen, nicht die Agent-API
|
||||
- [ ] Login-Seite im AdminLTE-Stil mit Logo
|
||||
- [ ] Rollen admin / readonly
|
||||
- [ ] Audit-Log-Ansicht mit Filter
|
||||
- [ ] Login-Rate-Limit, Security-Header
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] Ohne Login ist keine UI-Seite erreichbar
|
||||
- [ ] Login über authentik funktioniert; lokaler Admin auch bei ausgefallenem OIDC
|
||||
- [ ] readonly-Benutzer kann nichts ändern
|
||||
|
||||
## Abhängigkeiten
|
||||
#006
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
@@ -0,0 +1,26 @@
|
||||
# #014 Deployment und Dokumentation
|
||||
**Status:** offen
|
||||
**Meilenstein:** v0.10.0
|
||||
**Labels:** deployment, docs
|
||||
**Geschätzt:** 8 h **Tatsächlich:** –
|
||||
|
||||
## Ziel
|
||||
ProxLedger einfach per Docker Compose oder als LXC-Container auf Proxmox betreiben.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] Dockerfile (Multi-Stage, Standalone-Output, Non-root)
|
||||
- [ ] `docker-compose.yml` (web, worker, postgres), `.env.example`
|
||||
- [ ] Migrationen beim Start, Healthcheck
|
||||
- [ ] LXC-Installer im Stil der Community-Scripts (Debian, Ressourcenabfrage, systemd-Dienste)
|
||||
- [ ] Reverse-Proxy-Beispiele (Caddy, nginx, Traefik)
|
||||
- [ ] README (Deutsch): Dashboard installieren → Enrollment-Token → Agent ausrollen
|
||||
- [ ] Backup-/Restore-Anleitung für die Datenbank und Uploads
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] `docker compose up -d` auf frischem System ergibt lauffähiges Dashboard
|
||||
- [ ] LXC-Installer auf PVE 9 erfolgreich
|
||||
|
||||
## Abhängigkeiten
|
||||
#013
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
@@ -0,0 +1,24 @@
|
||||
# #015 Feinschliff für 1.0
|
||||
**Status:** offen
|
||||
**Meilenstein:** v1.0.0
|
||||
**Labels:** ui, sicherheit
|
||||
**Geschätzt:** 6 h **Tatsächlich:** –
|
||||
|
||||
## Ziel
|
||||
Produktionsreife: Dark-Mode, Mobilansicht, Barrierefreiheit und Sicherheitsprüfung.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] Dark-Mode vollständig (alle Seiten, PDF bleibt hell)
|
||||
- [ ] Mobil: Tabellen als Karten, Touch-Ziele ≥ 44 px
|
||||
- [ ] Kontrast- und Tastaturprüfung
|
||||
- [ ] Sicherheits-Review (Abhängigkeiten, Header, Uploads, Tokens)
|
||||
- [ ] Performance-Check mit 200 Hosts / 5 Jahren Reports
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] Alle Seiten in Hell und Dunkel lesbar
|
||||
- [ ] Keine bekannten kritischen Schwachstellen in Abhängigkeiten
|
||||
|
||||
## Abhängigkeiten
|
||||
#014
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
@@ -0,0 +1,22 @@
|
||||
# Issue-Übersicht
|
||||
|
||||
Details und Architektur: [../architektur.md](../architektur.md). Zeiten werden aus dem [DEVLOG](../../DEVLOG.md) übernommen.
|
||||
|
||||
| Nr. | Titel | Status | Meilenstein | Geschätzt | Tatsächlich |
|
||||
|---|---|---|---|---|---|
|
||||
| [#001](001-projekt-setup.md) | Projekt-Setup | in Arbeit | v0.1.0 | 3 h | – |
|
||||
| [#002](002-prototyp.md) | Klickbarer Prototyp | offen | v0.1.0 | 8 h | – |
|
||||
| [#003](003-datenmodell.md) | Datenmodell und Migrationen | offen | v0.1.0 | 5 h | – |
|
||||
| [#004](004-agent-api.md) | Agent-API | offen | v0.1.0 | 6 h | – |
|
||||
| [#005](005-agent-skript.md) | Agent-Skript | offen | v0.2.0 | 8 h | – |
|
||||
| [#006](006-kunden-hostzuweisung.md) | Kunden, Standorte und Hostzuweisung | offen | v0.3.0 | 6 h | – |
|
||||
| [#007](007-hosts-detailansichten.md) | Host-Tabelle, Suche und Detailansichten | offen | v0.4.0 | 8 h | – |
|
||||
| [#008](008-laufzeiten-rechnungen.md) | Laufzeiten und Rechnungen | offen | v0.5.0 | 10 h | – |
|
||||
| [#009](009-kundenuebersicht-dashboard-jahresbahn.md) | Kundenübersicht, Dashboard und Jahresbahn | offen | v0.6.0 | 8 h | – |
|
||||
| [#010](010-export.md) | Export CSV und PDF | offen | v0.6.0 | 5 h | – |
|
||||
| [#011](011-warnregeln.md) | Warnregeln | offen | v0.7.0 | 8 h | – |
|
||||
| [#012](012-benachrichtigungen.md) | Benachrichtigungen | offen | v0.8.0 | 6 h | – |
|
||||
| [#013](013-authentifizierung.md) | Authentifizierung und Audit-Log | offen | v0.9.0 | 6 h | – |
|
||||
| [#014](014-deployment.md) | Deployment und Dokumentation | offen | v0.10.0 | 8 h | – |
|
||||
| [#015](015-feinschliff-v1.md) | Feinschliff für 1.0 | offen | v1.0.0 | 6 h | – |
|
||||
| | **Summe** | | | **101 h** | **–** |
|
||||
Reference in New Issue
Block a user