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:
1 parent
011b26c37f
commit
a82540e7db
2 files changed
+211
-40
No files matched your search
+14
-6
@@ -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
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in new issue
Block a user