docs: ARCHITECTURE.md + ARCHITECTURE_QUICK.md aktualisiert

Neue Kapitel in ARCHITECTURE.md:
- Admin-Benutzerverwaltung (CRUD, Impersonate)
- Avatar-System (Editor-Modal, Scale, AI-Generate)
- LaTeX/Math-Rendering (KaTeX-Pipeline)

Erweiterte Kapitel:
- Projektstruktur: WorkspaceHelper, AdminEndpoint, avatar-editor.js, admin-page.js, KaTeX-Dateien
- Tech-Stack: KaTeX 0.16.21
- Datenmodell: default_path, avatar_scale, telegram_allowed_chat_ids
- Endpoints: Admin (16 Gruppen), Workspace (mkdir/rmdir)
- Chat-Pipeline: CancellationToken-Propagierung (Stop-Button)
- Telegram: Chat-ID-Whitelist + Zugriffskontrolle
- Auth: DefaultPath als Base-Path, Impersonate
- Workspace: WorkspaceHelper, relativer Pfad-Auflösung
- Frontend: avatar-editor.js, admin-page, KaTeX, Timestamps

ARCHITECTURE_QUICK.md:
- Admin-Endpoint, WorkspaceHelper, KaTeX, DefaultPath, Impersonate, CancellationToken
This commit is contained in:
Meleki committed 2026-03-06 13:12:42 +01:00
1 parent 011b26c37f
commit a82540e7db
2 files changed
+211 -40

No files matched your search

+14 -6
View File
@@ -6,7 +6,7 @@
## Tech-Stack
**.NET 10** Minimal API · **SQLite** + Dapper · **Anthropic Claude API** (SSE Streaming) · **Vanilla JS** SPA · **Kestrel** auf Port 19000
**.NET 10** Minimal API · **SQLite** + Dapper · **Anthropic Claude API** (SSE Streaming) · **Vanilla JS** SPA · **KaTeX** (Math) · **Kestrel** auf Port 19000
---
@@ -17,7 +17,7 @@ gott/
├── Program.cs # Startup, DI, Middleware, Routing
├── appsettings.json # Tokens, API-Keys, Limits
├── Models/ # Records (reine Daten)
├── Services/ # Business-Logic (alle Singletons)
├── Services/ # Business-Logic (alle Singletons + WorkspaceHelper)
├── Endpoints/ # HTTP API (Minimal API MapXxx-Pattern)
├── Middleware/ # AuthMiddleware
├── Templates/ # Vorlagen für neue Agents (IDENTITY, SOUL, USER)
@@ -51,10 +51,10 @@ User 1──* Agent 1──* Session 1──* Chain 1──* Message 1──* At
| Tabelle | Zweck |
|---------|-------|
| `users` | Login, Persona, Settings (JSON) |
| `users` | Login, Persona, Settings (JSON), DefaultPath |
| `tokens` | Auth-Tokens → User |
| `agents` | AI-Agenten (Model, Tools, Config) |
| `sessions` | Chat-Sessions (Workspace, Context, Telegram) |
| `agents` | AI-Agenten (Model, Tools, Config, AvatarScale) |
| `sessions` | Chat-Sessions (Workspace, Context, Telegram, AvatarScale, AllowedChatIds) |
| `chains` | Ein Request-Response-Zyklus (Tokens, Timing, Iterations) |
| `messages` | Einzelne Nachrichten (text / tool_use / tool_result / error) |
| `attachments` | Base64-Anhänge (Bilder, Dokumente) |
@@ -75,7 +75,8 @@ User 1──* Agent 1──* Session 1──* Chain 1──* Message 1──* At
| History | `/api/history` | GET history, poll, archive, marks, delete |
| Sessions | `/api/sessions/` | CRUD + system-prompt, exec, git-status |
| Agents | `/api/agents/` | CRUD |
| Workspace | `/api/workspace/` | tree, file read/write, browse, agent-files |
| Admin | `/api/admin/` | User CRUD, impersonate (Admin-only) |
| Workspace | `/api/workspace/` | tree, file read/write, mkdir, rmdir, browse, agent-files |
| Telegram | `/api/telegram/` | webhook (unauth), config, registration |
| Cronjobs | `/api/cronjobs/` | CRUD + toggle, manual run |
| Krea | `/api/images/` | generate, list, file-serve |
@@ -97,6 +98,7 @@ User 1──* Agent 1──* Session 1──* Chain 1──* Message 1──* At
| **ChatService** | Chat-Kontext aufbauen, History aus DB laden |
| **AnthropicService** | Claude API: SSE Streaming + Non-Streaming |
| **ToolService** | Tool-Definitionen + Ausführung (12 Tools) |
| **WorkspaceHelper** | Workspace-Pfad-Auflösung (relativ → absolut), Path-Traversal-Schutz (static) |
| **SystemPromptBuilder** | System-Prompt aus modularen Blöcken zusammenbauen (static) |
| **MemoryService** | Agent-Gedächtnis auf Dateisystem |
| **SkillService** | Skill-Discovery aus Dateisystem |
@@ -121,11 +123,14 @@ User-Input → POST /api/chat (SSE)
→ Token-für-Token an Client streamen
→ Bei tool_use → ToolService.Execute() → Ergebnis zurück → neuer API Call
→ Loop bis end_turn oder max_iterations (100)
→ CancellationToken bei Stop-Button → client_disconnected
→ Chain + Messages in DB speichern
```
**History-Optimierung:** Ältere Chains nur Text-Messages (keine Tool-Calls). Letzte Chain vollständig. Tool-Results auf 20.000 Zeichen gekürzt. Attachments nur für letzte User-Message.
**Rendering:** Markdown via marked.js + LaTeX via KaTeX (`$$...$$` Block, `$...$` Inline). Timestamps im Format `dd.MM.yyyy HH:mm:ss` on hover.
---
## Tool-System (12 Tools)
@@ -179,6 +184,7 @@ User-Input → POST /api/chat (SSE)
| `#/cronjobs` | `cronjob-page.js` | Cronjobs |
| `#/profile` | `profile-page.js` | Profil |
| `#/settings` | `settings-page.js` | Einstellungen |
| `#/admin` | `admin-page.js` | Benutzerverwaltung (Admin) |
| `#/login` | `login-page.js` | Login |
| `#/shared/{token}` | `shared-page.js` | Geteilte Nachricht (öffentlich, kein Auth) |
@@ -189,6 +195,8 @@ User-Input → POST /api/chat (SSE)
1. `POST /api/auth/login` → Token generiert, als `gott_token` HttpOnly Cookie gesetzt
2. Jeder `/api/`-Request → `AuthMiddleware` prüft Cookie → setzt `UserId` + `IsAdmin`
3. Ausnahmen: Login, Telegram-Webhook und `GET /api/shared/{token}` brauchen kein Auth
4. **Impersonate**: Admin kann via `POST /api/admin/users/{id}/impersonate` als anderer User einloggen
5. **DefaultPath**: Pro User ein Basis-Ordner (nur vom Admin setzbar), Session-Workspaces sind relativ dazu
---