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.
|
- Fenster koennen verschoben, minimiert, maximiert und geschlossen werden.
|
||||||
- Programme koennen sowohl globale System-Apps als auch klassische Module sein.
|
- 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
|
## Einstellungen oeffnen
|
||||||
|
|
||||||
Die Einstellungen werden aktuell ueber die App `User Self Management` bereitgestellt.
|
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`
|
- `App`
|
||||||
Ein bereitgestelltes System-Tool oder Modul. Eine App kann als Desktop-App, Menue-App, Systembar-Eintrag oder Quelle fuer Widgets/Funktionen auftreten.
|
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`
|
- `Widget`
|
||||||
Eine kleine Funktion oder Mini-Anzeige. Widgets sind nicht automatisch identisch mit Apps. Eine App kann Widgets bereitstellen, muss es aber nicht.
|
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
|
- `User Self Management` als Setup-App
|
||||||
- erster echter Modulpfad fuer klassische Module mit Modul-Discovery aus `modules/<modul>/`
|
- erster echter Modulpfad fuer klassische Module mit Modul-Discovery aus `modules/<modul>/`
|
||||||
- `Mining-Checker` als erstes angebundenes klassisches 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
|
- 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
|
- 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
|
- 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
|
- `public/` ist der Web-Root fuer die Desktop-Shell
|
||||||
- `src/Desktop/` enthaelt zentrale Desktop-Mechaniken
|
- `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
|
- `partials/desktop/` enthaelt Shell-Templates
|
||||||
- `modules/` bleibt Zielort fuer klassische Module
|
- `modules/` bleibt Zielort fuer klassische Module
|
||||||
- `temp/nexus-module-import/` ist Rohbasis fuer importierte Nexus-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`
|
- `Infobereich konfigurieren`
|
||||||
- `Apps und Desktop Type verwalten`
|
- `Apps und Desktop Type verwalten`
|
||||||
- `Module verstehen und starten`
|
- `Module verstehen und starten`
|
||||||
|
- `API-Pfade und Versionen verstehen`
|
||||||
- `Benutzerdaten und Synchronisierung`
|
- `Benutzerdaten und Synchronisierung`
|
||||||
|
|
||||||
Die Inhalte sollen spaeter moeglichst nicht neu erfunden, sondern aus den zentral gepflegten Dateien abgeleitet werden.
|
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.
|
- `Old-Nexus/` wird nicht technisch eingebunden.
|
||||||
- Skins `Windows`, `Apple`, `Linux` laufen auf einer gemeinsamen Shell.
|
- Skins `Windows`, `Apple`, `Linux` laufen auf einer gemeinsamen Shell.
|
||||||
- Keycloak bleibt das Auth-System.
|
- 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.
|
- der Theme-Handoff ist in [keycloak-theme-handoff.md](/home/lars/Schreibtisch/Projekte/desktop.kusche.berlin/docs/keycloak-theme-handoff.md) beschrieben.
|
||||||
|
|
||||||
## Dokumentationsregel
|
## Dokumentationsregel
|
||||||
@@ -49,3 +50,4 @@ Aktuell wichtig:
|
|||||||
|
|
||||||
- der Mining-Checker ist das erste als echtes Desktop-Modul angebundene Modul unter `modules/mining-checker/`
|
- 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
|
- 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
|
- App-Registry, Widget-Registry und Import-Basis sind angelegt
|
||||||
- erster echter Modulmechanismus fuer klassische Module ist vorhanden
|
- erster echter Modulmechanismus fuer klassische Module ist vorhanden
|
||||||
- `Mining-Checker` ist als erstes klassisches Modul angebunden
|
- `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
|
- Keycloak ist nur konzeptionell vorbereitet, nicht integriert
|
||||||
- Admin-Bereiche und persistente User-Desktops sind noch offen
|
- 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
|
- keine Includes, Imports, Asset-Pfade oder Laufzeitkopplung auf Altbestand
|
||||||
- klassische Module bleiben strukturell unter `modules/<modul>/`
|
- klassische Module bleiben strukturell unter `modules/<modul>/`
|
||||||
- die Desktop-Shell ist eine eigene Anwendungsschicht und kein Theme-Umbau des alten Systems
|
- 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
|
## Status Nach Datei
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ Verbindlich ist:
|
|||||||
- Nutzerdaten und Desktop-Preferences bevorzugt datenbankbasiert speichern, nicht dateibasiert
|
- Nutzerdaten und Desktop-Preferences bevorzugt datenbankbasiert speichern, nicht dateibasiert
|
||||||
- `README.md`-Dateien in Teilbereichen aktuell halten
|
- `README.md`-Dateien in Teilbereichen aktuell halten
|
||||||
- zentrale Doku bei jeder relevanten Struktur- oder Begriffsanpassung mitpflegen
|
- 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
|
## NoGo's
|
||||||
|
|
||||||
@@ -43,12 +44,14 @@ Verbindlich ist:
|
|||||||
- keine nur lokalen README-Informationen ohne zentrale Uebernahme der wichtigen Punkte
|
- keine nur lokalen README-Informationen ohne zentrale Uebernahme der wichtigen Punkte
|
||||||
- keine Hilfeinhalte nur in Chatverlaeufen oder Ad-hoc-Notizen belassen
|
- keine Hilfeinhalte nur in Chatverlaeufen oder Ad-hoc-Notizen belassen
|
||||||
- keine produktive Architekturabhaengigkeit zu `Old-Nexus/` oder vergleichbaren Altbestaenden
|
- 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
|
## Architekturregeln
|
||||||
|
|
||||||
- `modules/<modul>/` bleibt Ort fuer klassische Module
|
- `modules/<modul>/` bleibt Ort fuer klassische Module
|
||||||
- globale Desktop-Mechaniken liegen im gemeinsamen Kern
|
- globale Desktop-Mechaniken liegen im gemeinsamen Kern
|
||||||
- globale Modul-Helfer duerfen im gemeinsamen Kern liegen, Fachlogik aber nicht
|
- 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
|
- Skins definieren Darstellung und Interaktionsdetails, nicht die Fachlogik
|
||||||
- Hilfe- und Inhaltsdateien sollen spaeter maschinenlesbar oder zumindest klar strukturierbar in einen Hilfebereich ueberfuehrt werden koennen
|
- 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
|
- `docs/UMSETZUNGSSTATUS.md` nur dann als erledigt markieren, wenn es ausdruecklich freigegeben wurde
|
||||||
- Fokus liegt aktuell auf Desktop-UI und Apps
|
- Fokus liegt aktuell auf Desktop-UI und Apps
|
||||||
- Login und Keycloak sind vorerst akzeptiert und nicht der aktuelle Hauptschwerpunkt
|
- 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
|
- 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
|
- die Schriftfarbe von Desktop-Icons passt sich automatisch an den Hintergrund an
|
||||||
- Benutzerdaten sollen spaeter sauber in LDAP oder Keycloak geschrieben werden
|
- Benutzerdaten sollen spaeter sauber in LDAP oder Keycloak geschrieben werden
|
||||||
|
|||||||
@@ -276,6 +276,27 @@
|
|||||||
return formatDateByParts(value, true);
|
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) {
|
async function request(path, options) {
|
||||||
const requestOptions = options && typeof options === 'object' ? { ...options } : {};
|
const requestOptions = options && typeof options === 'object' ? { ...options } : {};
|
||||||
const debugEnabled = !!debugBus.enabled;
|
const debugEnabled = !!debugBus.enabled;
|
||||||
@@ -287,7 +308,7 @@
|
|||||||
const controller = new AbortController();
|
const controller = new AbortController();
|
||||||
const timeoutId = window.setTimeout(() => controller.abort(), timeoutMs);
|
const timeoutId = window.setTimeout(() => controller.abort(), timeoutMs);
|
||||||
|
|
||||||
const requestUrl = path;
|
const requestUrl = normalizeApiUrl(path);
|
||||||
const headers = { ...(requestOptions.headers || {}) };
|
const headers = { ...(requestOptions.headers || {}) };
|
||||||
if (debugEnabled) {
|
if (debugEnabled) {
|
||||||
headers['X-Mining-Debug'] = '1';
|
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
|
- `README.md`-Dateien in Teilbereichen pflegen
|
||||||
- wichtige Informationen aus dezentralen `README.md`-Dateien auch zentral in `docs/` halten
|
- wichtige Informationen aus dezentralen `README.md`-Dateien auch zentral in `docs/` halten
|
||||||
- `Old-Nexus/` oder Altbestand nie technisch zur Laufzeit einbinden
|
- `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
|
## Wichtige Dokumente
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user