docs: ServerSettings-UI, Avatar-Offset, konfigurierbarer Port, appsettings.Production.json Verwaltung
This commit is contained in:
1 parent
dc2709b3cd
commit
23c2bde8d4
3 files changed
+32
-14
No files matched your search
+23
-10
@@ -266,8 +266,8 @@ Message (1) ─── (*) SharedMessage
|
||||
|-------------------|-----------------------------------------------------|
|
||||
| `users` | Benutzer (username, password_hash, persona, settings, default_path) |
|
||||
| `tokens` | Auth-Tokens (token → user_id) |
|
||||
| `agents` | AI-Agenten (model, soul, identity, memory, tools, avatar_scale) |
|
||||
| `sessions` | Chat-Sessions (workspace, context, telegram-config, avatar_scale, telegram_allowed_chat_ids, review_agent_id, max_review_iterations) |
|
||||
| `agents` | AI-Agenten (model, soul, identity, memory, tools, avatar_scale, avatar_offset_x/y) |
|
||||
| `sessions` | Chat-Sessions (workspace, context, telegram-config, avatar_scale, avatar_offset_x/y, telegram_allowed_chat_ids, review_agent_id, max_review_iterations) |
|
||||
| `chains` | Request-Chains (model, tokens, iterations, timing) |
|
||||
| `messages` | Einzelne Nachrichten (text, tool_use, tool_result) |
|
||||
| `attachments` | Datei-Anhänge (base64, image/document) |
|
||||
@@ -309,8 +309,8 @@ Die `Program.cs` ist der zentrale Einstiegspunkt und konfiguriert:
|
||||
2. **Datenbank-Initialisierung** – `DatabaseService` erstellt Schema + Migrationen
|
||||
3. **Default-User** – Wird automatisch angelegt falls keine User existieren
|
||||
4. **Middleware** – Static Files → `AuthMiddleware` → Endpoints
|
||||
5. **Endpoint-Mapping** – Alle 16 Endpoint-Gruppen registriert
|
||||
6. **Server** – Kestrel auf `http://0.0.0.0:19000`
|
||||
5. **Endpoint-Mapping** – Alle 17 Endpoint-Gruppen registriert
|
||||
6. **Server** – Kestrel auf `http://0.0.0.0:{Port}` (Port aus Config, Default 19000)
|
||||
|
||||
Initialisierungsreihenfolge:
|
||||
```
|
||||
@@ -362,6 +362,7 @@ Alle Endpoints folgen dem **Minimal API**-Pattern mit Extension Methods (`MapXxx
|
||||
| **Backup** | `/api/backup` | `POST` (Admin only, tar.gz Download) |
|
||||
| **Shared** | `/api/shared/`, `/api/messages/{id}/share` | Share erstellen, öffentlich abrufen, auflisten, löschen |
|
||||
| **Info** | `/api/info` | `GET` (Build-Zeitstempel) |
|
||||
| **ServerSettings** | `/api/admin/server-settings` | `GET`, `PUT` (Admin-only, liest/schreibt `appsettings.Production.json`) |
|
||||
|
||||
### Middleware
|
||||
|
||||
@@ -418,6 +419,7 @@ Das Frontend ist eine **Single-Page Application** ohne Build-Step, komplett in V
|
||||
| `#/profile` | `profile-page.js` | Profil |
|
||||
| `#/settings` | `settings-page.js` | App-Einstellungen |
|
||||
| `#/admin` | `admin-page.js` | Benutzerverwaltung (Admin-only) |
|
||||
| `#/server-settings` | `server-settings-page.js` | Servereinstellungen (Admin-only) |
|
||||
| `#/login` | `login-page.js` | Login |
|
||||
| `#/shared/{token}` | `shared-page.js` | Öffentliche geteilte Nachricht (kein Auth) |
|
||||
|
||||
@@ -1106,7 +1108,11 @@ Sessions und Agents können ein **Bild/Avatar** haben mit konfigurierbarem Zoom.
|
||||
| Feld | Tabellen | Beschreibung |
|
||||
|------|----------|-------------|
|
||||
| `image` / `avatar` | `sessions` / `agents` | Base64-kodiertes Bild (JPEG, max 512px via ImageService) |
|
||||
| `avatar_scale` | `sessions`, `agents` | Zoom-Faktor (0.5× – 3×, Default 1.0), angewandt via CSS `transform: scale()` |
|
||||
| `avatar_scale` | `sessions`, `agents` | Zoom-Faktor (0.5× – 3×, Default 1.0) |
|
||||
| `avatar_offset_x` | `sessions`, `agents` | Horizontale Position (-50% – +50%, Default 0), via CSS `translate()` |
|
||||
| `avatar_offset_y` | `sessions`, `agents` | Vertikale Position (-50% – +50%, Default 0), via CSS `translate()` |
|
||||
|
||||
Darstellung via CSS `transform: scale(S) translate(X%, Y%)` im `.card-image` Container (`overflow: hidden`).
|
||||
|
||||
### Avatar-Editor (`avatar-editor.js`)
|
||||
|
||||
@@ -1117,10 +1123,11 @@ const editor = AvatarEditor.init({
|
||||
previewEl: document.querySelector('.avatar-preview'),
|
||||
currentImage: existingBase64OrNull,
|
||||
currentScale: 1.0,
|
||||
onImageChange: (base64) => { /* Preview aktualisieren */ },
|
||||
onScaleChange: (scale) => { /* Live-Preview skalieren */ }
|
||||
initialOffsetX: 0,
|
||||
initialOffsetY: 0,
|
||||
onChange: (imageData, scale, offsetX, offsetY) => { /* Live-Preview */ }
|
||||
});
|
||||
// Werte auslesen: editor.getImage(), editor.getScale()
|
||||
// Werte auslesen: editor.getImage(), editor.getScale(), editor.getOffsetX(), editor.getOffsetY()
|
||||
// Aufräumen: editor.destroy()
|
||||
```
|
||||
|
||||
@@ -1129,11 +1136,12 @@ const editor = AvatarEditor.init({
|
||||
- **Paste**: Ctrl+V → Bild aus Zwischenablage einfügen
|
||||
- **AI-Generate**: Text-Prompt → Krea API → Bild generieren (nur wenn `KreaToken` konfiguriert)
|
||||
- **Scale**: Range-Slider 0.5× – 3× mit Live-Preview
|
||||
- **Offset X/Y**: Range-Slider -50% – +50% für horizontale/vertikale Positionierung
|
||||
- **Clear**: Bild entfernen
|
||||
|
||||
### Dashboard-Darstellung
|
||||
|
||||
Cards zeigen Avatare mit `transform: scale(avatarScale)` im `.card-image` Container (`overflow: hidden`).
|
||||
Cards zeigen Avatare mit `transform: scale(S) translate(X%, Y%)` im `.card-image` Container (`overflow: hidden`). Die Helper `buildAgentCard()` und `buildSessionCard()` in `ui.js` nutzen `buildTransformStyle(scale, offsetX, offsetY)` dafür.
|
||||
|
||||
---
|
||||
|
||||
@@ -1215,6 +1223,7 @@ Die Anwendung läuft als systemd Service (`gott.service`), Kestrel auf Port 1900
|
||||
|
||||
```json
|
||||
{
|
||||
"Port": 19000, // Server-Port (Default 19000, erfordert Neustart)
|
||||
"AnthropicToken": "", // Anthropic API Key (REQUIRED)
|
||||
"MaxIterations": 100, // Max Tool-Loop Iterationen pro Chat
|
||||
"PayloadLogging": false, // API-Payloads loggen (Debug)
|
||||
@@ -1224,10 +1233,14 @@ Die Anwendung läuft als systemd Service (`gott.service`), Kestrel auf Port 1900
|
||||
}
|
||||
```
|
||||
|
||||
### appsettings.Production.json
|
||||
|
||||
Überschreibt Werte aus `appsettings.json` im Production-Environment. Wird **nicht** beim Publish mitkopiert (liegt nur im `publish/`-Verzeichnis). Verwaltung über die **Admin-UI** (Servereinstellungen, `#/server-settings`).
|
||||
|
||||
### Environment
|
||||
|
||||
- `ASPNETCORE_ENVIRONMENT=Production` → lädt `appsettings.Production.json`
|
||||
- Tokens und Secrets sollten in `appsettings.Production.json` stehen (nicht in Git)
|
||||
- Tokens und Secrets werden über die Server-Settings-UI in `appsettings.Production.json` geschrieben
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in new issue
Block a user