sdfsdf
This commit is contained in:
@@ -38,6 +38,17 @@ Das Startmenue ist in drei Bereiche gegliedert:
|
||||
- Fenster koennen verschoben, minimiert, maximiert und geschlossen werden.
|
||||
- Programme koennen sowohl globale System-Apps als auch klassische Module sein.
|
||||
|
||||
## API
|
||||
|
||||
Die API der Anwendung liegt aktuell bewusst auf demselben Host wie der Desktop.
|
||||
|
||||
Das Zielbild ist:
|
||||
|
||||
- `desktop.kusche.berlin/api/v1/...`
|
||||
- `staging.desktop.kusche.berlin/api/v1/...`
|
||||
|
||||
Eine getrennte API-Domain wie `api.desktop.kusche.berlin` ist derzeit nicht der Standard.
|
||||
|
||||
## Einstellungen oeffnen
|
||||
|
||||
Die Einstellungen werden aktuell ueber die App `User Self Management` bereitgestellt.
|
||||
|
||||
@@ -58,6 +58,9 @@ Diese Benennungen gelten projektweit und sollen in UI, Doku und Weiterentwicklun
|
||||
- `App`
|
||||
Ein bereitgestelltes System-Tool oder Modul. Eine App kann als Desktop-App, Menue-App, Systembar-Eintrag oder Quelle fuer Widgets/Funktionen auftreten.
|
||||
|
||||
- `API`
|
||||
Die serverseitige Programmschnittstelle der Desktop-Anwendung. Sie wird im aktuellen Projekt auf demselben Host wie die Desktop-Shell unter `/api/v1/...` bereitgestellt.
|
||||
|
||||
- `Widget`
|
||||
Eine kleine Funktion oder Mini-Anzeige. Widgets sind nicht automatisch identisch mit Apps. Eine App kann Widgets bereitstellen, muss es aber nicht.
|
||||
|
||||
@@ -82,6 +85,7 @@ Stand dieser Datei:
|
||||
- `User Self Management` als Setup-App
|
||||
- erster echter Modulpfad fuer klassische Module mit Modul-Discovery aus `modules/<modul>/`
|
||||
- `Mining-Checker` als erstes angebundenes klassisches Modul
|
||||
- versionierte API auf demselben Host unter `(staging.)desktop.kusche.berlin/api/v1/...`
|
||||
- Benutzereinstellungen fuer Desktop-Skin, App-Auswahl, Infobereich und Profildaten in einer eigenen Datenbanktabelle mit `_user_data`-Suffix
|
||||
- vorhandene JSON-Dateien dienen nur noch als Fallback oder Uebergang fuer lokale Entwicklung und Altbestaende
|
||||
- LDAP-Synchronisierung fuer Standardfelder wie Name, E-Mail, Telefon, Titel und Ort
|
||||
@@ -96,6 +100,7 @@ Aus [README.md](/home/lars/Schreibtisch/Projekte/desktop.kusche.berlin/docs/READ
|
||||
|
||||
- `public/` ist der Web-Root fuer die Desktop-Shell
|
||||
- `src/Desktop/` enthaelt zentrale Desktop-Mechaniken
|
||||
- die API bleibt auf demselben Host wie die Desktop-Shell und wird unter `/api/v1/...` versioniert
|
||||
- `partials/desktop/` enthaelt Shell-Templates
|
||||
- `modules/` bleibt Zielort fuer klassische Module
|
||||
- `temp/nexus-module-import/` ist Rohbasis fuer importierte Nexus-Module
|
||||
@@ -136,6 +141,7 @@ Fuer einen spaeteren Hilfebereich sollen Inhalte aus dieser Datei in Themenblcke
|
||||
- `Infobereich konfigurieren`
|
||||
- `Apps und Desktop Type verwalten`
|
||||
- `Module verstehen und starten`
|
||||
- `API-Pfade und Versionen verstehen`
|
||||
- `Benutzerdaten und Synchronisierung`
|
||||
|
||||
Die Inhalte sollen spaeter moeglichst nicht neu erfunden, sondern aus den zentral gepflegten Dateien abgeleitet werden.
|
||||
|
||||
@@ -33,6 +33,7 @@ Zentraler Dokumentationsindex fuer das Projekt.
|
||||
- `Old-Nexus/` wird nicht technisch eingebunden.
|
||||
- Skins `Windows`, `Apple`, `Linux` laufen auf einer gemeinsamen Shell.
|
||||
- Keycloak bleibt das Auth-System.
|
||||
- API und Desktop laufen auf demselben Host. Zielpfad ist `(staging.)desktop.kusche.berlin/api/v1/...`.
|
||||
- der Theme-Handoff ist in [keycloak-theme-handoff.md](/home/lars/Schreibtisch/Projekte/desktop.kusche.berlin/docs/keycloak-theme-handoff.md) beschrieben.
|
||||
|
||||
## Dokumentationsregel
|
||||
@@ -49,3 +50,4 @@ Aktuell wichtig:
|
||||
|
||||
- der Mining-Checker ist das erste als echtes Desktop-Modul angebundene Modul unter `modules/mining-checker/`
|
||||
- Modul-Assets koennen ueber einen gemeinsamen Auslieferungsweg aus dem Modul selbst geladen werden
|
||||
- die API bleibt vorerst auf demselben Host und wird nicht auf `api.desktop.kusche.berlin` ausgelagert
|
||||
|
||||
@@ -25,6 +25,7 @@ Aktuell ist das Projekt auf einem V1-Scaffold-Stand:
|
||||
- App-Registry, Widget-Registry und Import-Basis sind angelegt
|
||||
- erster echter Modulmechanismus fuer klassische Module ist vorhanden
|
||||
- `Mining-Checker` ist als erstes klassisches Modul angebunden
|
||||
- API soll im Zielbild auf demselben Host unter `(staging.)desktop.kusche.berlin/api/v1/...` liegen
|
||||
- Keycloak ist nur konzeptionell vorbereitet, nicht integriert
|
||||
- Admin-Bereiche und persistente User-Desktops sind noch offen
|
||||
|
||||
@@ -34,6 +35,7 @@ Aktuell ist das Projekt auf einem V1-Scaffold-Stand:
|
||||
- keine Includes, Imports, Asset-Pfade oder Laufzeitkopplung auf Altbestand
|
||||
- klassische Module bleiben strukturell unter `modules/<modul>/`
|
||||
- die Desktop-Shell ist eine eigene Anwendungsschicht und kein Theme-Umbau des alten Systems
|
||||
- API und Desktop teilen sich im aktuellen Zielbild denselben Host; Standardpfad ist `/api/v1/...`
|
||||
|
||||
## Status Nach Datei
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ Verbindlich ist:
|
||||
- Nutzerdaten und Desktop-Preferences bevorzugt datenbankbasiert speichern, nicht dateibasiert
|
||||
- `README.md`-Dateien in Teilbereichen aktuell halten
|
||||
- zentrale Doku bei jeder relevanten Struktur- oder Begriffsanpassung mitpflegen
|
||||
- API-Pfade versioniert und host-konsistent unter `(staging.)desktop.kusche.berlin/api/v1/...` halten
|
||||
|
||||
## NoGo's
|
||||
|
||||
@@ -43,12 +44,14 @@ Verbindlich ist:
|
||||
- keine nur lokalen README-Informationen ohne zentrale Uebernahme der wichtigen Punkte
|
||||
- keine Hilfeinhalte nur in Chatverlaeufen oder Ad-hoc-Notizen belassen
|
||||
- keine produktive Architekturabhaengigkeit zu `Old-Nexus/` oder vergleichbaren Altbestaenden
|
||||
- keine neue Standard-API-Domain wie `api.desktop.kusche.berlin`, solange keine ausdrueckliche Architekturentscheidung dafuer getroffen wurde
|
||||
|
||||
## Architekturregeln
|
||||
|
||||
- `modules/<modul>/` bleibt Ort fuer klassische Module
|
||||
- globale Desktop-Mechaniken liegen im gemeinsamen Kern
|
||||
- globale Modul-Helfer duerfen im gemeinsamen Kern liegen, Fachlogik aber nicht
|
||||
- API und Desktop teilen sich im aktuellen Zielbild denselben Host; offizielle Basis ist `/api/v1/...`
|
||||
- Skins definieren Darstellung und Interaktionsdetails, nicht die Fachlogik
|
||||
- Hilfe- und Inhaltsdateien sollen spaeter maschinenlesbar oder zumindest klar strukturierbar in einen Hilfebereich ueberfuehrt werden koennen
|
||||
|
||||
@@ -67,6 +70,7 @@ Bei jeder groesseren Aenderung ist zu pruefen:
|
||||
- `docs/UMSETZUNGSSTATUS.md` nur dann als erledigt markieren, wenn es ausdruecklich freigegeben wurde
|
||||
- Fokus liegt aktuell auf Desktop-UI und Apps
|
||||
- Login und Keycloak sind vorerst akzeptiert und nicht der aktuelle Hauptschwerpunkt
|
||||
- API-Zielpfade sollen auf `(staging.)desktop.kusche.berlin/api/v1/...` vereinheitlicht werden
|
||||
- Desktop-Icons sind frei verschiebbar und werden pro Benutzer und Skin lokal gespeichert
|
||||
- die Schriftfarbe von Desktop-Icons passt sich automatisch an den Hintergrund an
|
||||
- Benutzerdaten sollen spaeter sauber in LDAP oder Keycloak geschrieben werden
|
||||
|
||||
@@ -276,6 +276,27 @@
|
||||
return formatDateByParts(value, true);
|
||||
}
|
||||
|
||||
function normalizeApiUrl(rawUrl) {
|
||||
const url = String(rawUrl || '');
|
||||
if (!url || !apiBase.includes('?path=')) {
|
||||
return url;
|
||||
}
|
||||
|
||||
if (!url.startsWith(apiBase)) {
|
||||
return url;
|
||||
}
|
||||
|
||||
const [baseRoot, basePath = ''] = apiBase.split('?path=');
|
||||
const suffix = url.slice(apiBase.length);
|
||||
const [routeSuffix, extraQuery = ''] = suffix.split('?');
|
||||
const normalizedPath = [basePath, routeSuffix]
|
||||
.map((part) => String(part || '').replace(/^\/+|\/+$/g, ''))
|
||||
.filter(Boolean)
|
||||
.join('/');
|
||||
|
||||
return `${baseRoot}?path=${encodeURIComponent(normalizedPath)}${extraQuery ? `&${extraQuery}` : ''}`;
|
||||
}
|
||||
|
||||
async function request(path, options) {
|
||||
const requestOptions = options && typeof options === 'object' ? { ...options } : {};
|
||||
const debugEnabled = !!debugBus.enabled;
|
||||
@@ -287,7 +308,7 @@
|
||||
const controller = new AbortController();
|
||||
const timeoutId = window.setTimeout(() => controller.abort(), timeoutMs);
|
||||
|
||||
const requestUrl = path;
|
||||
const requestUrl = normalizeApiUrl(path);
|
||||
const headers = { ...(requestOptions.headers || {}) };
|
||||
if (debugEnabled) {
|
||||
headers['X-Mining-Debug'] = '1';
|
||||
|
||||
1
start.md
1
start.md
@@ -44,6 +44,7 @@ Danach bei Bedarf die fachlichen Projektanweisungen lesen:
|
||||
- `README.md`-Dateien in Teilbereichen pflegen
|
||||
- wichtige Informationen aus dezentralen `README.md`-Dateien auch zentral in `docs/` halten
|
||||
- `Old-Nexus/` oder Altbestand nie technisch zur Laufzeit einbinden
|
||||
- API-Pfade im aktuellen Projektziel unter `(staging.)desktop.kusche.berlin/api/v1/...` halten und keine separate Standard-API-Domain annehmen
|
||||
|
||||
## Wichtige Dokumente
|
||||
|
||||
|
||||
Reference in New Issue
Block a user