first commit

This commit is contained in:
ValueOn AG 2025-05-14 11:07:12 +02:00
commit c5181387e5
14 changed files with 1613 additions and 0 deletions

View file

@ -0,0 +1,110 @@
flowchart TD
%% Externe Entitäten
USER((Benutzer))
AI_PROVIDER((AI-Provider\nOpenAI/Anthropic))
WEB((Internet/\nWebseiten))
%% Hauptprozesse
AUTH[Authentifizierung]
WS_MANAGE[Workspace-\nVerwaltung]
AGENT_MANAGE[Agenten-\nVerwaltung]
FILE_MANAGE[Datei-\nVerwaltung]
PROMPT_MANAGE[Prompt-\nVerwaltung]
WF_INIT[Workflow-\nInitialisierung]
WF_EXEC[Workflow-\nAusführung]
MOD_CYCLE[Moderator-\nZyklus]
AGENT_EXEC[Agenten-\nAusführung]
WEB_SCRAPE[Web-\nScraping]
USER_INTERACT[Benutzer-\nInteraktion]
RESULT_COLLECT[Ergebnis-\nSammlung]
%% Datenspeicher
DB_USERS[(Benutzer-\nDatenbank)]
DB_MANDATE[(Mandanten-\nDatenbank)]
DB_WS[(Workspace-\nDatenbank)]
DB_AGENTS[(Agenten-\nDatenbank)]
DB_FILES[(Datei-\nDatenbank)]
DB_PROMPTS[(Prompts-\nDatenbank)]
DB_WORKFLOWS[(Workflow-\nDatenbank)]
FILE_SYSTEM[(Datei-\nSystem)]
%% Datenflüsse - Authentifizierung und Basisdaten
USER -->|Login-Daten| AUTH
AUTH -->|Token| USER
AUTH -->|Benutzerinfo lesen/schreiben| DB_USERS
AUTH -->|Mandanteninfo lesen| DB_MANDATE
%% Workspace-Management
USER -->|Workspace erstellen/bearbeiten| WS_MANAGE
WS_MANAGE -->|Workspace-Daten lesen/schreiben| DB_WS
WS_MANAGE -->|Workspace-Info| USER
%% Agenten-Management
USER -->|Agenten konfigurieren| AGENT_MANAGE
AGENT_MANAGE -->|Agenten-Daten lesen/schreiben| DB_AGENTS
AGENT_MANAGE -->|Agenten-Info| USER
%% Datei-Management
USER -->|Dateien hochladen| FILE_MANAGE
FILE_MANAGE -->|Metadaten speichern| DB_FILES
FILE_MANAGE -->|Dateien speichern| FILE_SYSTEM
FILE_MANAGE -->|Datei-Info| USER
%% Prompt-Management
USER -->|Prompts erstellen/bearbeiten| PROMPT_MANAGE
PROMPT_MANAGE -->|Prompts lesen/schreiben| DB_PROMPTS
PROMPT_MANAGE -->|Prompt-Info| USER
%% Workflow-Ausführung - Initialisierung
USER -->|Workflow starten| WF_INIT
WF_INIT -->|Workflow-Meta lesen/schreiben| DB_WORKFLOWS
WF_INIT -->|Ausgewählte Agenten lesen| DB_AGENTS
WF_INIT -->|Ausgewählte Dateien lesen| DB_FILES
WF_INIT -->|Dateiinhalte lesen| FILE_SYSTEM
WF_INIT -->|Prompt| DB_PROMPTS
WF_INIT -->|Workflow-Status| USER
%% Workflow-Ausführung - Hauptprozess
WF_INIT -->|Workflow-Kontext| WF_EXEC
WF_EXEC -->|Moderator aktivieren| MOD_CYCLE
MOD_CYCLE -->|Agentenauswahl| AGENT_EXEC
AGENT_EXEC -->|Anfrage| AI_PROVIDER
AI_PROVIDER -->|Antwort| AGENT_EXEC
%% Web-Scraping-Integration
AGENT_EXEC -->|Web-Recherche anfordern| WEB_SCRAPE
WEB_SCRAPE -->|Suchanfragen| WEB
WEB -->|Webinhalte| WEB_SCRAPE
WEB_SCRAPE -->|Extrahierte Informationen| AGENT_EXEC
%% Benutzerinteraktion während Workflow
MOD_CYCLE -->|Benutzereingabe anfordern| USER_INTERACT
USER_INTERACT -->|Anfrage| USER
USER -->|Antwort/zusätzliche Dateien| USER_INTERACT
USER_INTERACT -->|Benutzerinput| MOD_CYCLE
%% Ergebnissammlung und -speicherung
AGENT_EXEC -->|Agentenergebnisse| RESULT_COLLECT
USER_INTERACT -->|Benutzereingaben| RESULT_COLLECT
RESULT_COLLECT -->|Ergebnisse speichern| DB_WORKFLOWS
RESULT_COLLECT -->|Logs speichern| DB_WORKFLOWS
RESULT_COLLECT -->|Workflow-Status aktualisieren| DB_WORKFLOWS
RESULT_COLLECT -->|Ergebnisse anzeigen| USER
%% Workflow-Steuerung
MOD_CYCLE -->|Nächster Zyklus| MOD_CYCLE
MOD_CYCLE -->|Workflow abschließen| RESULT_COLLECT
USER -->|Workflow stoppen| WF_EXEC
%% Stile
classDef entity fill:#68A7AD,stroke:#376B6D,stroke-width:2px,color:white
classDef process fill:#99C4C8,stroke:#5E8B8F,stroke-width:1px
classDef store fill:#E5CB9F,stroke:#BA9C6F,stroke-width:1px
classDef mainProcess fill:#F5A7A7,stroke:#F07272,stroke-width:2px,color:white
class USER,AI_PROVIDER,WEB entity
class AUTH,WS_MANAGE,AGENT_MANAGE,FILE_MANAGE,PROMPT_MANAGE process
class WF_INIT,MOD_CYCLE,AGENT_EXEC,WEB_SCRAPE,USER_INTERACT,RESULT_COLLECT mainProcess
class WF_EXEC mainProcess
class DB_USERS,DB_MANDATE,DB_WS,DB_AGENTS,DB_FILES,DB_PROMPTS,DB_WORKFLOWS,FILE_SYSTEM store

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 KiB

View file

@ -0,0 +1,53 @@
---
config:
layout: fixed
---
flowchart TB
subgraph subGraph0["Frontend Layer"]
UI["Benutzeroberfläche (JS/HTML/CSS)"]
UIM["UI-Module"]
GST["Globaler Zustand"]
end
subgraph subGraph1["API Layer"]
FAPI["FastAPI Backend"]
AMOD["API-Module & Router"]
AUTH["Authentifizierung & Autorisierung"]
end
subgraph subGraph2["Core Services Layer"]
GW["Gateway Interface"]
LDOM["LucyDOM Interface"]
AGS["Agent Service"]
end
subgraph subGraph3["External Connectors"]
AI["AI Connectors\n(OpenAI/Anthropic)"]
WS["Web Scraping\nConnector"]
end
subgraph subGraph4["Data Layer"]
DB["JSON-Datenbank"]
FS["Dateisystem"]
end
UI <--> UIM & FAPI
UIM <--> GST
FAPI <--> AMOD
AMOD <--> AUTH & GW & LDOM & AGS
GW <--> DB
LDOM <--> DB
AGS <--> DB & AI & WS & FS
UI:::frontendClass
UIM:::frontendClass
GST:::frontendClass
FAPI:::apiClass
AMOD:::apiClass
AUTH:::apiClass
GW:::coreClass
LDOM:::coreClass
AGS:::coreClass
AI:::connectorClass
WS:::connectorClass
DB:::dataClass
FS:::dataClass
classDef frontendClass fill:#D6EAF8,stroke:#2E86C1,stroke-width:2px
classDef apiClass fill:#D5F5E3,stroke:#239B56,stroke-width:2px
classDef coreClass fill:#FCF3CF,stroke:#D4AC0D,stroke-width:2px
classDef connectorClass fill:#F5EEF8,stroke:#8E44AD,stroke-width:2px
classDef dataClass fill:#FADBD8,stroke:#C0392B,stroke-width:2px

BIN
poweron/diagramm_hld.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 KiB

View file

@ -0,0 +1,156 @@
---
config:
layout: fixed
---
flowchart TB
subgraph FE_Modules["frontend_agents/public/js/modules"]
direction LR
WF["workflow.js\nWorkflow control"]
WFC["workflowCoordination.js\nWorkflow coordination"]
WFU["workflowUi.js\nWorkflow UI"]
WFD["workflowData.js\nWorkflow API logic"]
WFT["workflowUtils.js\nWorkflow utils"]
FL["files.js\nFile management"]
PR["prompts.js\nPrompt management"]
US["users.js\nUser management"]
MD["mandates.js\nMandate management"]
end
subgraph FE_Shared["frontend_agents/public/js/shared"]
direction LR
API["apiCalls.js\nAPI communication"]
NAV["navigation.js\nNavigation"]
GLOB["globalState.js\nState management"]
UTIL["utils.js\nHelpers"]
end
subgraph FE_Security["frontend_agents/public/js/security"]
AUTH_FE["auth.js\nAuthentication"]
end
subgraph FE_Main["frontend_agents/public/js"]
MAIN["main.js\nMain app"]
end
subgraph BE_Routes["gateway/routes"]
direction LR
R_MAND["routeMandates.py\nMandate API"]
R_USER["routeUsers.py\nUser API"]
R_FL["routeFiles.py\nFile API"]
R_PR["routePrompts.py\nPrompt API"]
R_WF["routeWorkflows.py\nWorkflow API"]
R_ATTR["routeAttributes.py\nAttribute API"]
end
subgraph BE_Modules["gateway/modules"]
GI["gatewayInterface.py\nMandate/Auth"]
LDI["lucydomInterface.py\nData management"]
WM["workflowManager.py\nWorkflow engine"]
WAR["workflowAgentsRegistry.py\nAgent registry"]
DP["documentProcessor.py\nDocument processing"]
CFG["configuration.py\nConfiguration"]
MU["mimeUtils.py\nMIME utils"]
AGC["agentCoach.py"]
AGAN["agentAnalyst.py"]
AGC2["agentCoder.py"]
AGE["agentEmail.py"]
AGDOC["agentDocumentation.py"]
AGWC["agentWebcrawler.py"]
end
subgraph BE_Connectors["gateway/connectors"]
DBJSON["connectorDbJson.py\nJSON DB connector"]
AICHAT["connectorAiOpenai.py\nOpenAI connector"]
AIANTH["connectorAiAnthropic.py\nAnthropic connector"]
end
subgraph BE_Main["gateway"]
APP["app.py\nFastAPI main app"]
AUTH_BE["auth.py\nToken management"]
end
%% Frontend connections
MAIN --> NAV & GLOB & AUTH_FE
WF --> WFC & WFU & WFD & WFT
WFC --> WFU & WFD & WFT
WFD --> API
FL --> GLOB
PR --> GLOB
US --> GLOB
MD --> GLOB
%% API call from frontend to backend
API -- REST/JSON --> APP
%% Backend API structure
APP --> AUTH_BE & R_MAND & R_USER & R_FL & R_PR & R_WF & R_ATTR
%% Backend route to module connections
R_MAND --> GI
R_USER --> GI
R_FL --> LDI
R_PR --> LDI
R_WF --> WM
R_ATTR --> LDI
%% Backend module connections
WM --> WAR & DP & AGC & AGAN & AGC2 & AGE & AGDOC & AGWC
GI --> DBJSON
LDI --> DBJSON
DP --> LDI
WAR --> LDI
AGC --> LDI
AGAN --> LDI
AGC2 --> LDI
AGE --> LDI
AGDOC --> LDI
AGWC --> LDI
WM --> CFG & MU
LDI --> AICHAT & AIANTH
%% Legend
classDef frontendMainClass fill:#D6EAF8,stroke:#2E86C1,stroke-width:2px
classDef frontendComponentClass fill:#AED6F1,stroke:#2E86C1,stroke-width:1px
classDef backendMainClass fill:#D5F5E3,stroke:#239B56,stroke-width:2px
classDef backendRouteClass fill:#ABEBC6,stroke:#239B56,stroke-width:1px
classDef coreClass fill:#FCF3CF,stroke:#D4AC0D,stroke-width:2px
classDef coreSubClass fill:#F9E79F,stroke:#D4AC0D,stroke-width:1px
classDef connectorClass fill:#F5EEF8,stroke:#8E44AD,stroke-width:2px
%% Assign classes
WF:::frontendComponentClass
WFC:::frontendComponentClass
WFU:::frontendComponentClass
WFD:::frontendComponentClass
WFT:::frontendComponentClass
FL:::frontendComponentClass
PR:::frontendComponentClass
US:::frontendComponentClass
MD:::frontendComponentClass
MAIN:::frontendMainClass
NAV:::frontendMainClass
GLOB:::frontendMainClass
UTIL:::frontendMainClass
AUTH_FE:::frontendMainClass
API:::frontendMainClass
R_MAND:::backendRouteClass
R_USER:::backendRouteClass
R_FL:::backendRouteClass
R_PR:::backendRouteClass
R_WF:::backendRouteClass
R_ATTR:::backendRouteClass
APP:::backendMainClass
AUTH_BE:::backendMainClass
GI:::coreClass
LDI:::coreClass
WM:::coreClass
WAR:::coreClass
DP:::coreClass
CFG:::coreClass
MU:::coreClass
AGC:::coreSubClass
AGAN:::coreSubClass
AGC2:::coreSubClass
AGE:::coreSubClass
AGDOC:::coreSubClass
AGWC:::coreSubClass
DBJSON:::connectorClass
AICHAT:::connectorClass
AIANTH:::connectorClass
%% Legend
%% Note: REST/JSON arrow = API call, normal arrow = direct import/usage
%% Example: API -- REST/JSON --> APP

Binary file not shown.

After

Width:  |  Height:  |  Size: 418 KiB

View file

@ -0,0 +1,247 @@
# State Machine Documentation for Backend Chat Workflow
## Overview
Das Backend implementiert eine State Machine, die Benutzereingaben, Agenten-Workflows und die Kommunikation mit dem Frontend orchestriert. Die State Machine steuert Statusübergänge, Logging, Dokumentenmanagement und Fehlerbehandlung für robuste Multi-Agent-Workflows.
## Core Objects
### Workflow Object
```json
{
"id": "uuid-string",
"mandateId": int,
"userId": int,
"name": "Workflow name",
"startedAt": "ISO-datetime",
"status": "string", // running, completed, failed, stopped
"lastActivity": "ISO-datetime",
"dataStats": {
"bytesSent": int,
"bytesReceived": int,
"tokensUsed": int,
"processingTime": float
},
"currentRound": int,
"messageIds": [ "string" ],
"messages": [ /* WorkflowMessage */ ],
"logs": [ /* WorkflowLog */ ]
}
```
### Message Object
```json
{
"id": "msg_uuid-string",
"workflowId": "workflow-uuid",
"parentMessageId": "string|null",
"startedAt": "ISO-datetime",
"finishedAt": "ISO-datetime|null",
"sequenceNo": int,
"status": "string", // first, step, last
"role": "string", // user, assistant, system
"dataStats": { /* optional */ },
"documents": [ /* Document */ ],
"content": "string",
"agentName": "string"
}
```
### Log Entry Object
```json
{
"id": "log_uuid-string",
"workflowId": "workflow-uuid",
"message": "string",
"type": "string", // info, warning, error
"timestamp": "ISO-datetime",
"agentName": "string",
"status": "string", // running, completed, failed, stopped
"progress": int, // Optional, 0-100
"mandateId": int,
"userId": int
}
```
### Document Object
```json
{
"id": "doc_uuid-string",
"fileId": int,
"name": "string", // Filename ohne Extension
"ext": "string", // File Extension
"data": "base64-encoded-string", // File-Inhalt
"contents": [ /* ContentItem */ ]
}
```
### Content Item Object
```json
{
"sequenceNr": int, // Reihenfolge im Dokument
"name": "string",
"ext": "string",
"contentType": "string", // mime type
"data": "string|base64", // Originalinhalt
"dataExtracted": "string", // Optional: AI-Extrakt
"metadata": {
"isText": boolean,
"base64Encoded": boolean,
"aiProcessed": boolean
// Optional: weitere Metadaten
},
"summary": "string" // AI-generierte Zusammenfassung
}
```
## State Machine Workflow
### 1. Workflow Initialization
- **Trigger**: User message via `/api/workflows/start` oder `/api/workflows/start?id=string`
- **Input**: `UserInputRequest` mit `prompt` und optional `listFileId`
- **Prozess**:
- Wenn `id` existiert und Workflow existiert: Workflow laden, `currentRound` inkrementieren, Status auf "running"
- Sonst: Neuen Workflow anlegen, `currentRound`=1, Status "running"
- **Logs**: "Workflow initialized" oder "Running workflow", progress 0%
- **API**: 200 OK mit Workflow-ID, Fehler: 400/404/500
### 2. Workflow Exception
- **Trigger**: User stoppt Workflow via API oder Exception tritt auf
- **Prozess**:
- Bei Status=="stopped": Status auf "stopped", Log, `lastActivity` aktualisieren, sofort abbrechen
- Bei Status=="failed": Status auf "failed", Log, `lastActivity` aktualisieren, sofort abbrechen
- Sonst: Normal fortfahren
- **Logs**: "Workflow failure reported", progress 100%
- **API**: 200 OK bei Stop, 500 bei Exception
### 3. User Message Processing
- **Prozess**:
- User-Input wird als Message-Objekt mit Dokumenten gespeichert, Status "first"
- Datei-Inhalte werden extrahiert (`getDocumentContents()`)
- Statische Summaries für Content Items generieren
- **State Changes**:
- User-Message zu `workflow.messages` und `workflow.messageIds` hinzufügen
- `workflow.lastActivity` aktualisieren
- **Logs**: "Workflow processing started", progress 0%
### 4. Project Manager Analysis
- **Prozess**:
- Prompt für Project Manager AI generieren
- Analyse und Workplan generieren
- **Outputs**:
- `objFinalDocuments`: Liste erwarteter Output-Dokumente
- `objWorkplan`: Liste Agenten-Tasks
- `objUserResponse`: Textantwort an User
- `userLanguage`: Detektierte Sprache
- **State Changes**:
- Assistant-Message mit Status "step" speichern
- User-Language im Interface setzen
- **Logs**: "Analyzing request and planning work" (10%), "Work plan created" (25%)
### 5. Agent Execution
- **Prozess** (für jeden Task im Workplan):
- Input-Dokumente vorbereiten
- Agent ausführen
- Output-Dokumente speichern
- Assistant-Message mit Status "step" speichern
- **Logs**: "Running task X/Y: agentName" (30-90%)
### 6. Final Response Generation
- **Prozess**:
- Final-Message mit Review der gelieferten Dokumente erzeugen
- Dokumente zum Workflow hinzufügen
- **State Changes**: Final-Message mit Status "last" speichern
- **Logs**: "Creating final response" (90%)
### 7. Workflow Completion
- **Prozess**:
- Workflow finalisieren, Status auf "completed"
- `workflow.lastActivity` aktualisieren
- **Logs**: "Workflow completed successfully" (100%)
- **API**: Message mit Status "last" in Response, Status-Endpoint gibt "completed" zurück
### 8. Workflow Stopped
- **Trigger**: `/api/workflows/{workflowId}/stop`
- **Prozess**:
- Workflow sofort stoppen, Status auf "stopped"
- `lastActivity` aktualisieren
- **Logs**: "Workflow stopped by user" (100%)
- **API**: 200 OK
### 9. Workflow Failed
- **Trigger**: Exception im Workflow
- **Prozess**:
- Fehler loggen, Status auf "failed"
- `lastActivity` aktualisieren
- **Logs**: Fehler-Log (100%)
- **API**: Status-Endpoint gibt "failed" zurück
### 10. Workflow Resumption
- **Trigger**: `/api/workflows/start?id={workflowId}`
- **Prozess**:
- Workflow laden, `currentRound` inkrementieren, Status auf "running"
- Neue User-Message hinzufügen
- **Logs**: "Resuming workflow, round {currentRound}" (0%)
- **API**: wie Workflow-Init
### 11. Workflow Reset/Deletion
- **Trigger**: `/api/workflows/{workflowId}` DELETE
- **Prozess**:
- Workflow und zugehörige Daten löschen
- **Logs**: System-Log "workflow deleted"
- **API**: 200 OK oder 404
## API Endpoints und Polling Support
### Main Workflow Endpoints
- `POST /api/workflows/start?id=string`: Startet neuen Workflow oder setzt fort
- `POST /api/workflows/{workflowId}/stop`: Stoppt laufenden Workflow
- `DELETE /api/workflows/{workflowId}`: Löscht Workflow
- `GET /api/workflows/{workflowId}/status`: Holt Workflow-Status
- `GET /api/workflows/{workflowId}/logs?id=string`: Holt Logs (optional ab ID)
- `GET /api/workflows/{workflowId}/messages?id=string`: Holt Messages (optional ab ID)
### Document Management
- `DELETE /api/workflows/{workflowId}/messages/{messageId}`: Löscht Message
- `DELETE /api/workflows/{workflowId}/messages/{messageId}/files/{fileId}`: Entfernt Datei aus Message
### Backend Support für Frontend Polling
- Selektive Datenübertragung via `id`-Parameter bei `/logs` und `/messages`
- Logs enthalten Timestamp, Progress, Status
- Messages enthalten Status ("first", "step", "last")
- Status-Endpoint liefert nur Status und lastActivity
- Caching für häufige Polling-Requests
- Batch/Paging für große Log-/Message-Sets
## Dokumentenstruktur
- `data`: base64-kodierter Originalinhalt
- `contents`: Liste extrahierter Content Items
- Agents können auf das Original und die extrahierten Inhalte zugreifen
## State Transitions
```
[null] → [running] // New workflow created
[running] → [completed] // Workflow completes successfully
[running] → [stopped] // User manually stops workflow
[running] → [failed] // Error occurs during workflow
[completed] → [running] // User continues workflow with new input (new round)
[stopped] → [running] // User continues after manual stop (new round)
[failed] → [running] // User retries workflow despite error (new round)
[any] → [null] // Workflow deleted
```
## Exception Handling
- Status wird auf "failed" gesetzt bei Fehlern, Fehler werden im Log dokumentiert
- Project Manager/Agenten-Outputs und Inputs werden für Debugging geloggt
- HTTP-Fehler werden mit passendem Statuscode zurückgegeben
- Fehlgeschlagene Agenten-Tasks werden geloggt, stoppen aber nicht den gesamten Workflow
## Special Notes
1. **Document Processing**: Datei-Uploads werden mit Content Extraction verarbeitet.
2. **AI Language Support**: Sprache wird erkannt und im Workflow gesetzt.
3. **Round Counting**: Jede Interaktion inkrementiert `currentRound`.
4. **Agent Registry**: Agents werden dynamisch geladen und registriert.
5. **Standardized Task Processing**: Alle Agents implementieren das gleiche Task-Interface.

View file

@ -0,0 +1,249 @@
# State Machine Documentation for Frontend Chat Workflow
## Overview
Die Chat-Workflow-Frontend-Logik implementiert eine State Machine, die Benutzerinteraktionen, Datei-Uploads und die Kommunikation mit dem Backend orchestriert. Die State Machine steuert die UI, das Polling und die Statusübergänge und sorgt für eine robuste, reaktive Multi-Agent-Chat-Erfahrung.
## Core Objects
### Frontend Workflow State Object
```json
{
"status": "string", // null, "running", "completed", "failed", "stopped"
"workflowId": "string", // null oder eindeutige Workflow-ID
"logs": [], // Log-Einträge
"chatMessages": [], // Chat-Nachrichten
"lastPolledLogId": "string", // ID des letzten abgeholten Logs
"lastPolledMessageId": "string", // ID der letzten abgeholten Nachricht
"dataStats": {
"bytesSent": int,
"bytesReceived": int,
"tokensUsed": float,
"processingTime": float
},
"pollFailCount": int, // Zähler für Polling-Fehler
"pollActive": boolean, // Steuert, ob Polling aktiv ist
"sessionId": "string" // Session-Isolation
}
```
### User Input State Object
```json
{
"promptText": "string", // Aktueller Benutzereingabetext
"additionalFiles": [ /* File-Objekte, nicht nur IDs! */ ],
"domElements": {}, // Referenzen auf UI-DOM-Elemente
"sessionId": "string"
}
```
### Log Entry Object
```json
{
"id": "log_timestamp",
"message": "string",
"progress": int, // Optional, 0-100
"type": "string", // info, warning, error
"timestamp": "ISO-datetime",
"agentName": "string", // Name des Agents
"waiting": boolean, // Zeigt Wartedots-Animation
"highlighted": boolean // Für visuelles Highlighting
}
```
### Chat Message Object
```json
{
"id": "msg_type_timestamp",
"role": "string", // user, assistant
"agentName": "string",
"content": "string",
"documents": [], // Liste von File-Objekten
"timestamp": "ISO-datetime",
"status": "string" // first, step, last
}
```
### File Object
```json
{
"id": "number|string", // numerisch oder UUID
"name": "filename.ext",
"size": int,
"mimeType": "string", // MIME-Type (z.B. application/pdf)
"base64Encoded": boolean, // optional
"content": "string", // optional, für Preview
"isExtracted": boolean // optional, Parsing-Status
}
```
## State Machine Workflow
### 1. Initial State
- **State**: `null` (Kein Workflow aktiv)
- **UI**: Leerer Chat, Eingabefeld aktiv, Start-Button aktiv, Stop-Button ausgeblendet, File-Upload aktiv, leeres Logpanel
- **Aktionen**: Prompt eingeben, Dateien anhängen, Start klicken
- **API**: Keine
### 2. Prompt Preparation
- **State**: `null` (Übergang zu `running`)
- **Trigger**: Eingabe im Promptfeld, Datei-Upload, Prompt-Auswahl
- **Prozess**: Dateien werden via `api.uploadFile` hochgeladen, erscheinen als File-Objekte in `userInputState.additionalFiles`
- **API**: `POST /api/files/upload` pro Datei
### 3. Workflow Initialization
- **State**: `running`
- **Trigger**: Start-Button oder Enter
- **Prozess**: Validierung, UI-Ladezustand, Prompt und Files an Backend, Workflow-ID empfangen
- **State-Änderungen**: `status``running`, `workflowId` gesetzt, Files und Prompt zurückgesetzt
- **API**: `POST /api/workflows/start` (bzw. mit ID für Fortsetzung)
### 4. Polling for Updates
- **State**: `running`
- **Prozess**: Polling für Status, Logs, Messages (nur wenn `pollActive` true)
- **Polling-Details**:
- Status: alle 2000ms
- Logs: alle 1000ms
- Messages: alle 1000ms
- Polling stoppt sofort bei `failed` oder `stopped`, bei `completed` erst nach Message mit `status: last`
- Exponentielles Backoff bei Fehlern (`pollFailCount`)
- **API**: `GET /api/workflows/{workflowId}/status|logs|messages`
### 5. Workflow Running
- **State**: `running`
- **Prozess**: Backend verarbeitet, Frontend pollt, Logs und Messages werden angezeigt
- **UI**: Stop-Button sichtbar, Eingabe gesperrt, Logpanel zeigt Fortschritt, Chat zeigt Agenten-Antworten
- **Aktionen**: Stop möglich, File-Previews, Downloads
- **API**: wie oben, Stop: `POST /api/workflows/{workflowId}/stop`
### 6. Workflow Completion
- **State**: `completed`
- **Trigger**: Backend gibt Status "completed" oder Message mit `status: last`
- **Prozess**: Finalmessage, Eingabe wieder aktiv, Polling stoppt
- **API**: keine bis neue Eingabe
### 7. Workflow Failure
- **State**: `failed`
- **Trigger**: Backend gibt Status "failed"
- **Prozess**: Fehlermeldung, Retry möglich, Polling stoppt
- **API**: keine bis Retry
### 8. Workflow Stopped
- **State**: `stopped`
- **Trigger**: Stop-Button oder Backend gibt "stopped"
- **Prozess**: Verarbeitung gestoppt, Polling stoppt
- **API**: keine bis Fortsetzung oder Reset
### 9. User Input Requested
- **State**: variiert
- **Trigger**: Message mit `status: last` oder Workflow nicht mehr `running`
- **Prozess**: Log "Waiting for user input", Eingabe aktiv
- **API**: keine bis neue Eingabe
### 10. Continuation Preparation
- **State**: `completed`, `failed`, `stopped` (Übergang zu `running`)
- **Trigger**: Neue Eingabe nach vorherigem Zyklus
- **Prozess**: Fortsetzung mit bestehender Workflow-ID, Files können ergänzt werden
- **API**: wie Prompt Preparation
### 11. Workflow Resumption
- **State**: `running`
- **Trigger**: Fortsetzung nach Stop/Fehler/Abschluss
- **Prozess**: Neue Eingabe mit bestehender Workflow-ID, Polling startet erneut
- **API**: `POST /api/workflows/start?id={workflowId}`
### 12. Workflow Reset
- **State**: `null`
- **Trigger**: Reset-Button
- **Prozess**: Alle State-Daten gelöscht, UI zurückgesetzt
- **API**: Optional `DELETE /api/workflows/{workflowId}`
## API Interaction Details
### Polling Implementation
- Polling läuft nur, wenn `pollActive` true ist
- Nach Statuswechsel zu `failed` oder `stopped` wird Polling sofort gestoppt
- Bei `completed` läuft Polling weiter, bis eine Message mit `status: last` kommt
- Exponentielles Backoff bei Fehlern (`pollFailCount`)
- Events wie `workflowStatusChanged`, `chatMessagesUpdated`, etc. synchronisieren die UI
### API Endpoints Used
| Frontend Function | Backend Endpoint | Parameters | Description |
|--------------------------|--------------------------------------------------|------------------------------------|---------------------------------------------|
| `startWorkflow()` | `POST /api/workflows/start` | `{ prompt: string, fileIds: [] }` | Startet neuen Workflow |
| `continueWorkflow()` | `POST /api/workflows/start?id={workflowId}` | `{ prompt: string, fileIds: [] }` | Setzt bestehenden Workflow fort |
| `pollWorkflowStatus()` | `GET /api/workflows/{workflowId}/status` | None | Holt aktuellen Workflow-Status |
| `pollWorkflowLogs()` | `GET /api/workflows/{workflowId}/logs?id={lastLogId}` | Optional log ID | Holt neue Logs |
| `pollWorkflowMessages()` | `GET /api/workflows/{workflowId}/messages?id={lastMessageId}` | Optional message ID | Holt neue Nachrichten |
| `stopWorkflow()` | `POST /api/workflows/{workflowId}/stop` | None | Stoppt laufenden Workflow |
| `resetWorkflow()` | `DELETE /api/workflows/{workflowId}` | None | Löscht Workflow-Ressourcen |
| `uploadFile()` | `POST /api/files/upload` | FormData mit Datei | Lädt Datei hoch und gibt File-Objekt zurück |
| `deleteMessage()` | `DELETE /api/workflows/{workflowId}/messages/{messageId}` | None | Entfernt Nachricht aus Workflow |
| `removeFileFromMessage()`| `DELETE /api/workflows/{workflowId}/messages/{messageId}/files/{fileId}` | None | Entfernt Datei aus Nachricht |
## Special Features
### File Handling
- File-Uploads liefern vollständige File-Objekte (siehe oben)
- File-Previews, Download, Copy werden unterstützt
- Jedes File kann einzeln entfernt werden
### Chat Message Rendering
- User- und Agenten-Nachrichten, Markdown, File-Attachments, Zeitstempel, Collapsible Content
### Log Panel Features
- Info/Warning/Error, Progress, Waiting-Animation, Highlighting, Collapsible Details, Timestamps
### Waiting States
- Dots-Animation in Logs, Spinner im Send-Button, Progress in Agent-Logs
- State-Management über `waiting`-Flag, `waitingDotsInterval`, `setLoadingState()`
## State Transitions
```
[null] → [running] // Initial prompt submission
[running] → [running] // Ongoing polling updates
[running] → [completed] // Workflow completes successfully
[running] → [stopped] // User manually stops workflow
[running] → [failed] // Error occurs during workflow
[completed] → [running] // User continues workflow with new input
[stopped] → [running] // User continues after manual stop
[failed] → [running] // User retries workflow despite error
[any] → [null] // User resets workflow
```
## Error Handling
### Client-side Errors
- Retry-Mechanismus im Polling (`pollFailCount`)
- Exponentielles Backoff
- Fehlerlogs und Toasts
### Backend Communication Errors
- Fehlerlogging, User-Feedback, Retry-Option, Toasts
### Data Inconsistencies
- Fallbacks bei ID-Matching, File-Referenzen, Content Extraction
## Implementation Notes
1. **Module Structure:**
- `workflow.js`: Main initialization and coordination
- `workflowCoordination.js`: State management
- `workflowData.js`: Backend communication
- `workflowUi.js`: UI rendering
- `workflowUtils.js`: Helper functions
2. **Key Functions:**
- `initWorkflowModule()`: Entry point for initialization
- `updateWorkflowStatus()`: Core state transition function
- `pollWorkflowStatus()`: Main update loop
- `sendUserResponse()`: Handles user input submission
- `renderLogs()` und `renderChatMessages()`: UI update functions
3. **Performance Optimizations:**
- Selektive DOM-Updates
- Scroll-Position-Preservation
- Datenmengen-Schätzung für Statistik
- Bedingtes Re-Rendering

382
poweron/docu_applikation.md Normal file
View file

@ -0,0 +1,382 @@
# PowerOn AI Platform - Dokumentation
## Inhaltsverzeichnis
1. [Übersicht](#übersicht)
2. [Architektur](#architektur)
3. [Kernmodule](#kernmodule)
4. [Benutzeroberfläche](#benutzeroberfläche)
5. [Datenmodell](#datenmodell)
6. [Multi-Agent Workflow-System](#multi-agent-workflow-system)
7. [Externe Connectors](#externe-connectors)
8. [Installation und Konfiguration](#installation-und-konfiguration)
9. [API-Endpunkte](#api-endpunkte)
10. [Sicherheitskonzept](#sicherheitskonzept)
## Übersicht
Die PowerOn AI Platform ist eine umfassende Anwendung zur Verwaltung und Durchführung von Multi-Agent-Workflows für komplexe Datenanalyse- und Verarbeitungsaufgaben. Die Plattform ermöglicht die Nutzung von verschiedenen AI-Modellen, Web-Scraping und Datenverarbeitung innerhalb einer benutzerfreundlichen Oberfläche.
### Hauptfunktionen
- **Multi-Agent-Workflows**: Koordination verschiedener spezialisierter AI-Agenten für komplexe Aufgaben
- **Web-Scraping**: Integration von Online-Recherche in Workflows
- **Dokumentenverarbeitung**: Analyse und Verarbeitung von Dokumenten und Bildern
- **Workspace-Management**: Organisation von Projekten in Workspaces
- **Benutzerverwaltung**: Mehrstufiges Benutzermanagement mit Mandantenstruktur
- **Modernes Frontend**: Responsive Benutzeroberfläche mit dynamischen Komponenten
## Architektur
Die PowerOn AI Platform ist als modulare Webanwendung mit einer klaren Trennung zwischen Frontend und Backend konzipiert.
### Backend
Das Backend basiert auf FastAPI (Python) und bietet folgende Komponenten:
- **Gateway-Interface**: Zentrale Komponente für Authentifizierung und Mandantenverwaltung
- **LucyDOM-Interface**: Datenbank-Interface für Workspaces, Agenten, Files und Prompts
- **Agent-Service**: Orchestrierung und Ausführung von Multi-Agent-Workflows
- **Connector-Module**: Integration mit externen Diensten (OpenAI, Anthropic, Web-Scraping)
- **JSON-Datenbank**: Lokale Datenspeicherung für Entwicklung und Deployment
### Frontend
Das Frontend wurde mit modernem JavaScript entwickelt:
- **Modularer Aufbau**: Klar strukturierte JS-Module mit ES6-Import/Export
- **Responsive Design**: Anpassungsfähige UI für verschiedene Bildschirmgrössen
- **Dynamische Komponenten**: Flexible UI-Elemente für verschiedene Anwendungsfälle
- **REST-API Integration**: Kommunikation mit dem Backend über standardisierte API-Aufrufe
## Kernmodule
### Gateway-Interface
Das Gateway-Interface (`gateway_interface.py`) ist verantwortlich für:
- Benutzerauthentifizierung und -autorisierung
- Mandantenverwaltung (Multi-Tenant-Architektur)
- Basisinitialisierung der Datenbank
### LucyDOM-Interface
Das LucyDOM-Interface (`lucydom_interface.py`) verwaltet:
- Workspaces und deren Inhalte
- Agenten und deren Konfiguration
- Dateiverwaltung und -zuordnung
- Prompts und Templates
### Agent-Service
Der Agent-Service (`agentservice_interface.py`) orchestriert:
- Ausführung von Multi-Agent-Workflows
- Koordination spezialisierter Agenten über einen Moderator
- Verarbeitung von Dateien und Prompts
- Sammlung und Speicherung von Workflow-Ergebnissen
- Interaktion mit dem Benutzer während eines Workflows
### Connector-Module
Verschiedene Connectors verbinden die Plattform mit externen Diensten:
- **AI-Chat-Connectors**: Integration mit OpenAI/Anthropic für die Agentenverarbeitung
- **Web-Scraping-Connector**: Durchführung von Online-Recherchen
- **DB-Connector**: JSON-basierte Datenspeicherung
## Benutzeroberfläche
Die Benutzeroberfläche ist modular aufgebaut und bietet verschiedene funktionale Bereiche:
### Navigation
- Hierarchische Menüstruktur mit Modulen und Untermenüs
- Workspace-Auswahl und -Verwaltung
- Benutzer- und Mandantenkontextverwaltung
### Module
#### Workspaces
- Erstellung und Verwaltung von Arbeitsbereichen
- Zentrale Organisation für Agenten, Dateien und Prompts
#### Agenten
- Verwaltung verschiedener spezialisierter Agenten
- Konfiguration von Agentenfähigkeiten und -beschreibungen
- Standardagenten: Initialisierung, Organisator, Entwickler, Webscraper, Datenanalyst, Textgenerator, Visualisierer
#### Dateien
- Upload und Verwaltung von Dokumenten und Bildern
- Integration in Workflows für Datenverarbeitung
#### Prompts
- Erstellung und Verwaltung von Template-Prompts
- Wiederverwendung in verschiedenen Workflows
#### Workflow
Das Workflow-Modul ist das Herzstück der Anwendung und ermöglicht:
- Auswahl von Agenten für spezifische Aufgaben
- Eingabe von Prompts und Anweisungen
- Auswahl relevanter Dateien für die Verarbeitung
- Echtzeit-Überwachung des Workflow-Fortschritts
- Interaktion mit dem Workflow während der Ausführung
- Anzeige und Speicherung von Ergebnissen
### Admin-Module
#### Mandantenverwaltung
- Erstellung und Konfiguration von Mandanten (nur für SysAdmin)
- Zuweisung von Standardressourcen für neue Mandanten
#### Benutzerverwaltung
- Erstellung und Verwaltung von Benutzern
- Rechteverwaltung mit drei Stufen: Benutzer, Admin, SysAdmin
## Datenmodell
Die PowerOn AI Platform verwendet ein strukturiertes Datenmodell:
### Mandanten (Mandates)
- **id**: Eindeutige ID
- **name**: Name des Mandanten
- **language**: Standardsprache
- **disabled**: Flag für deaktivierte Mandanten
- **contact_email**: Kontakt-E-Mail
### Benutzer (Users)
- **id**: Eindeutige ID
- **mandate_id**: Zugehöriger Mandant
- **username**: Eindeutiger Benutzername
- **hashed_password**: Gehashtes Passwort (Argon2)
- **email**: E-Mail-Adresse
- **full_name**: Vollständiger Name
- **disabled**: Flag für deaktivierte Benutzer
- **language**: Bevorzugte Sprache
- **privilege**: Berechtigungsstufe (user, admin, sysadmin)
### Workspaces
- **id**: Eindeutige ID
- **mandate_id**: Zugehöriger Mandant
- **user_id**: Ersteller des Workspace
- **name**: Name des Workspace
- **created_at**: Erstellungszeitpunkt
### Agenten (Agents)
- **id**: Eindeutige ID
- **mandate_id**: Zugehöriger Mandant
- **user_id**: Ersteller des Agenten
- **name**: Name des Agenten
- **type**: Typ des Agenten (initialisierung, organisator, entwickler, scraper, usw.)
- **workspace_id**: Zugehöriger Workspace
- **capabilities**: Fähigkeiten des Agenten
- **description**: Beschreibung des Agenten
- **instructions**: Anweisungen für den Agenten
### Dateien (Files)
- **id**: Eindeutige ID
- **mandate_id**: Zugehöriger Mandant
- **user_id**: Hochladender Benutzer
- **name**: Dateiname
- **type**: Dateityp (document, image, usw.)
- **content_type**: MIME-Typ
- **size**: Dateigrösse
- **path**: Speicherort der Datei
- **upload_date**: Hochladezeitpunkt
### Prompts
- **id**: Eindeutige ID
- **mandate_id**: Zugehöriger Mandant
- **user_id**: Ersteller des Prompts
- **content**: Prompt-Text
- **workspace_id**: Zugehöriger Workspace
- **created_at**: Erstellungszeitpunkt
- **name**: Name des Prompts
### Workflows
- **id**: Eindeutige ID (uuid)
- **mandate_id**: Zugehöriger Mandant
- **user_id**: Ausführender Benutzer
- **status**: Status (running, completed, failed, stopped)
- **progress**: Fortschritt (0.0-1.0)
- **started_at**: Startzeitpunkt
- **completed_at**: Abschlusszeitpunkt
- **agent_statuses**: Status der einzelnen Agenten
- **logs**: Ausführungsprotokolle
- **results**: Ergebnisse der Agenten
- **data_stats**: Statistiken zur Datenübertragung
- **chat_history**: Chat-Verlauf zwischen Agenten
## Multi-Agent Workflow-System
Das Multi-Agent-System ist das zentrale Element der PowerOn AI Platform und ermöglicht die Zusammenarbeit verschiedener spezialisierter Agenten.
### Workflow-Ablauf
1. **Initialisierung**: Nutzer wählt Agenten, Files und gibt einen Prompt ein
2. **Moderator-Phase**: Moderator koordiniert den Einsatz verschiedener Agenten
3. **Agentenausführung**: Spezifische Agenten führen ihre Aufgaben aus
4. **Benutzerinteraktion**: Bei Bedarf kann der Benutzer in den Workflow eingreifen
5. **Ergebnissammlung**: Ergebnisse werden aggregiert und gespeichert
### Verfügbare Standardagenten
Die Plattform bietet folgende vordefinierte Agentenrollen:
1. **Initialisierung**: Analysiert Anfragen, plant Aufgaben und beantwortet einfache Fragen
2. **Organisator**: Koordiniert komplexe Anfragen und erstellt strukturierte Arbeitspläne
3. **Entwickler**: Erstellt Programmcode und technische Implementierungen
4. **Webscraper**: Führt Web-Recherchen durch und bereitet Informationen auf
5. **Datenanalyst**: Analysiert Daten, identifiziert Muster und erstellt Berichte
6. **Textgenerator**: Erstellt qualitativ hochwertige Texte in verschiedenen Formaten
7. **Visualisierer**: Erstellt Datenvisualisierungen und visuelle Darstellungen
### User Agent
Ein besonderer Agententyp ist der "User Agent", der Benutzerinteraktionen während eines laufenden Workflows ermöglicht:
- Beantwortung von Fragen des Moderators oder anderer Agenten
- Bereitstellung zusätzlicher Dateien während der Ausführung
- Bestätigung von Ergebnissen oder Anforderung weiterer Analysen
## Externe Connectors
Die Plattform integriert verschiedene externe Dienste:
### AI-Chat-Connectors
- **OpenAI-Connector**: Integration mit OpenAI-API (Standard)
- **Anthropic-Connector**: Alternative Integration mit Anthropic's Claude-Modellen
Diese Connectors bieten:
- Verarbeitung von Text-Prompts
- Verarbeitung von Bildern und multimodalen Inhalten
- Anpassbare Parameter (temperature, max_tokens)
### Web-Scraping-Connector
Der Web-Scraping-Connector ermöglicht:
- Suche nach relevanten Websites basierend auf Keywords
- Extraktion von Inhalten aus Webseiten
- Bewertung und Strukturierung von Online-Informationen
### JSON-DB-Connector
Der JSON-Datenbank-Connector bietet:
- Persistente Datenspeicherung in JSON-Dateien
- Unterstützung für Multi-Tenant-Architektur
- Kontextbasierte Datenfilterung
## Installation und Konfiguration
### Systemanforderungen
- Python 3.8+ für das Backend
- Moderne Browser für das Frontend
- Ausreichend Speicherplatz für Dateiuploads und Datenbank
### Konfiguration
Die Konfiguration erfolgt über eine `config.ini`-Datei mit folgenden Sektionen:
- **Connector_AiOpenai**: API-Schlüssel und Parameter für OpenAI
- **Connector_AiWebscraping**: Parameter für Web-Scraping (Timeout, User-Agent, etc.)
- **Module_AgentserviceInterface**: Parameter für den Agent-Service
## API-Endpunkte
Die PowerOn AI Platform bietet eine umfassende REST-API:
### Authentifizierung
- **POST /api/token**: Login und Token-Generierung
### Benutzer
- **GET /api/user/me**: Informationen zum aktuellen Benutzer
- **GET /api/user**: Liste aller Benutzer (Admin)
- **POST /api/user**: Neuen Benutzer erstellen
- **PUT /api/user/{id}**: Benutzer aktualisieren
- **DELETE /api/user/{id}**: Benutzer löschen
### Mandanten
- **GET /api/mandates**: Liste aller Mandanten (SysAdmin)
- **POST /api/mandates**: Neuen Mandanten erstellen
- **PUT /api/mandates/{id}**: Mandant aktualisieren
- **DELETE /api/mandates/{id}**: Mandant löschen
### Workspaces
- **GET /api/workspaces**: Liste aller Workspaces
- **POST /api/workspaces**: Neuen Workspace erstellen
- **PUT /api/workspaces/{id}**: Workspace aktualisieren
- **DELETE /api/workspaces/{id}**: Workspace löschen
### Agenten
- **GET /api/agents**: Liste aller Agenten
- **POST /api/agents**: Neuen Agenten erstellen
- **PUT /api/agents/{id}**: Agenten aktualisieren
- **DELETE /api/agents/{id}**: Agenten löschen
### Dateien
- **GET /api/files**: Liste aller Dateien
- **POST /api/files/upload**: Datei hochladen
- **GET /api/files/{id}/download**: Datei herunterladen
- **DELETE /api/files/{id}**: Datei löschen
### Prompts
- **GET /api/prompts**: Liste aller Prompts
- **POST /api/prompts**: Neuen Prompt erstellen
- **PUT /api/prompts/{id}**: Prompt aktualisieren
- **DELETE /api/prompts/{id}**: Prompt löschen
### Workflows
- **POST /api/workflows/run**: Workflow starten
- **GET /api/workflows/{id}/status**: Workflow-Status abfragen
- **GET /api/workflows/{id}/logs**: Workflow-Logs abrufen
- **GET /api/workflows/{id}/results**: Workflow-Ergebnisse abrufen
- **POST /api/workflows/{id}/stop**: Workflow stoppen
- **POST /api/workflows/{id}/user-input**: Benutzereingabe senden
## Sicherheitskonzept
Die PowerOn AI Platform implementiert mehrere Sicherheitsebenen:
### Authentifizierung
- **Token-basierte Authentifizierung**: JWT-Tokens für API-Zugriff
- **Sichere Passworthashes**: Argon2-Algorithmus für Passwort-Hashing
- **Automatische Tokenaktualisierung**: Token-Aktualisierung bei Ablauf
### Autorisierung
- **Rollenbasierte Zugriffskontrolle**:
- **User**: Standardbenutzer mit Zugriff auf eigene Ressourcen
- **Admin**: Verwaltung von Benutzern und Ressourcen im eigenen Mandanten
- **SysAdmin**: Vollständige Systemverwaltung und Mandantenverwaltung
### Mandantenisolierung
- **Strikte Datentrennung**: Jeder Mandant hat nur Zugriff auf eigene Daten
- **Kontextbasierte Filterung**: Automatische Filterung von Abfrageergebnissen basierend auf Mandantenzugehörigkeit

View file

@ -0,0 +1,67 @@
# PowerOn AI Platform
## Investoren-Summary
### Marktpositionierung
Die PowerOn AI Platform ist eine innovative Enterprise-Lösung für die Automatisierung und Optimierung von komplexen geschäftlichen Prozessen durch einen Multi-Agent-KI-Ansatz. Wir positionieren uns an der Schnittstelle zwischen den schnell wachsenden Märkten für:
- Künstliche Intelligenz (Marktvolumen 2025: $190 Mrd.)
- Business Process Automation (Marktvolumen 2025: $19,6 Mrd.)
- Enterprise Knowledge Management (Marktvolumen 2025: $43 Mrd.)
### Wettbewerbsvorteile
1. **Proprietäre Multi-Agent-Technologie**: Unsere Plattform orchestriert spezifische KI-Agenten für verschiedene Aufgaben, was zu deutlich überlegenen Ergebnissen im Vergleich zu Einzelagenten-Ansätzen führt.
2. **Modellunabhängigkeit**: Integration mit führenden KI-Providern (OpenAI, Anthropic) ohne Vendor Lock-in, wodurch wir immer die besten Modelle für spezifische Aufgaben einsetzen können.
3. **Enterprise-Ready**: Entwickelt mit Multi-Tenant-Architektur, umfassenden Sicherheitsfeatures und Skalierbarkeit für Unternehmensanforderungen.
4. **Anpassbar und erweiterbar**: Modulare Architektur, die kontinuierliche Feature-Erweiterungen und kundenspezifische Anpassungen ermöglicht.
### Finanzielle Highlights
- **Go-to-Market-Strategie**: Initiale Fokussierung auf mittelständische Unternehmen in den Bereichen Professional Services, Finanzdienstleistungen und Gesundheitswesen.
- **Umsatzmodell**: Kombiniertes SaaS-Abonnement (pro Benutzer/Monat) und nutzungsbasierte Abrechnung (pro Verarbeitungseinheit).
- **Erwartete Bruttomarge**: 75-85% nach Erreichen der Skalierung.
- **Erwartetes ARR in Jahr 3**: €4,5 Mio. bei 150 Unternehmenskunden.
- **Kostenstrukturen**:
- 40% Produktentwicklung
- 30% Vertrieb und Marketing
- 20% Betrieb und Support
- 10% Verwaltung
### Wachstumspfad
#### Kurzfristig (12 Monate)
- Markteinführung der Core-Plattform
- Aufbau von 3-5 Schlüsselreferenzkunden
- Entwicklung branchenspezifischer Templates
#### Mittelfristig (24 Monate)
- Erweiterung auf Agentenmarktplatz
- Integration von proprietären Unternehmensmodellen
- Internationale Expansion
#### Langfristig (36+ Monate)
- Entwicklung spezialisierter Branchenlösungen
- KI-Middleware für Unternehmen
- Strategische Partnerschaften mit Enterprise-Software-Anbietern
### Investitionsbedarf
Das aktuelle Finanzierungsziel von CHF 2.5 Mio. ermöglicht:
- Abschluss der Produktentwicklung und Erreichen der Marktreife
- Aufbau eines Vertriebs- und Marketingteams
- Sicherung strategischer Partnerschaften
- 18-monatige Runway bis zur Profitabilität
### Exit-Potenzial
Das Team sieht folgende Exit-Optionen:
1. Strategische Übernahme durch Enterprise-Software-Unternehmen (5-7 Jahre)
2. Erwerb durch grössere KI-Plattform (3-5 Jahre)
3. IPO bei Erreichen von CHF 50+ Mio. ARR (7-10 Jahre)

90
poweron/docu_kunden.md Normal file
View file

@ -0,0 +1,90 @@
# PowerOn AI Platform
## Mehrwert für Kunden
### Herausforderungen moderner Unternehmen
Im digitalen Zeitalter stehen Unternehmen vor komplexen Herausforderungen:
- **Datenüberflutung**: Mitarbeiter verbringen durchschnittlich 30% ihrer Zeit mit der Suche nach Informationen
- **Ressourcenknappheit**: Fachkräftemangel in Schlüsselbereichen wie Datenanalyse und Software-Entwicklung
- **Entscheidungsdruck**: Die Notwendigkeit schneller, aber fundierter Entscheidungen in volatilen Märkten
- **Wissensmanagement**: Verteiltes Unternehmens-Know-how effektiv erfassen und nutzbar machen
- **Prozesseffizienz**: Komplexe Prozesse optimieren und Ressourcen sinnvoll einsetzen
### Wie die PowerOn AI Platform diese Herausforderungen löst
#### 1. Von isolierten KI-Lösungen zur intelligenten Orchestrierung
Herkömmliche KI-Lösungen arbeiten isoliert und können nur eine Aufgabe erfüllen. **PowerOn orchestriert spezialisierte Agenten**, die zusammenarbeiten wie ein Team von Experten:
- **Ein Recherche-Agent** sammelt aktuelle Daten aus dem Internet
- **Ein Analyse-Agent** wertet komplexe Daten aus und extrahiert Erkenntnisse
- **Ein Entwickler-Agent** programmiert und automatisiert Routinen
- **Ein Visualisierungs-Agent** erstellt aussagekräftige Grafiken und Dashboards
- **Ein Text-Agent** verfasst präzise Berichte und Zusammenfassungen
Erst die intelligent koordinierte Zusammenarbeit dieser Spezialisten ermöglicht herausragende Ergebnisse.
#### 2. Beschleunigte Entscheidungsprozesse
In einer Studie mit Pilotanwendern führte der Einsatz der PowerOn Plattform zu:
- 73% schnelleren Marktanalysen
- 62% Zeitersparnis bei Berichterstellung
- 47% schnellere Prototypenentwicklung
#### 3. Demokratisierung von KI-Fähigkeiten
- **Keine Programmierkenntnisse erforderlich**: Intuitive Benutzeroberfläche für alle Mitarbeiter zugänglich
- **Transparenter KI-Einsatz**: Nachvollziehbare Prozesse und Ergebnisse
- **Anpassbare Workflows**: Jede Abteilung kann eigene KI-Workflows erstellen
#### 4. Nahtlose Integration in bestehende Systeme
- **Arbeiten mit vorhandenen Daten**: Verarbeitung aller gängigen Dateiformate
- **Keine IT-Umstellung notwendig**: Einfache Implementierung ohne Infrastrukturänderungen
- **Skalierbare Architektur**: Wachstum mit Ihren Anforderungen
### Konkrete Anwendungsfälle und ROI
#### Anwendungsfall 1: Marktforschung & Competitive Intelligence
- **Vorher**: 3-4 Wochen für umfassende Marktanalyse, 20+ Arbeitsstunden für Datensammlung
- **Mit PowerOn**: 3-5 Tage für gleiche Analysetiefe, automatisierte Datenextraktion aus dem Web
- **ROI**: Kosteneinsparung von €5.000-8.000 pro Analyse
#### Anwendungsfall 2: Dokumentenanalyse & Wissensextraktion
- **Vorher**: Durcharbeiten hunderter Seiten durch hochqualifizierte Mitarbeiter
- **Mit PowerOn**: Automatische Extraktion von Schlüsselinformationen, Erstellung präziser Zusammenfassungen
- **ROI**: Reduktion des Zeitaufwands um 80%, Freisetzung von Expertenkapazität für wertschöpfende Tätigkeiten
#### Anwendungsfall 3: Automatisierung von Berichten & Dokumentation
- **Vorher**: Monotone, fehleranfällige manuelle Erstellung von Standardberichten
- **Mit PowerOn**: Template-basierte Automatisierung mit intelligenter Datenkontextualisierung
- **ROI**: Zeitersparnis von 15-20 Stunden pro Monat pro Mitarbeiter, höhere Qualitätskonsistenz
#### Anwendungsfall 4: Prototyping & Schnellentwicklung
- **Vorher**: Wochen für die Entwicklung von Proof-of-Concept-Lösungen
- **Mit PowerOn**: Agenten generieren funktionsfähigen Code und Visualisierungen in Stunden
- **ROI**: 70% schnellere Entwicklungszyklen, erheblich geringere Entwicklungskosten
### Was unsere Kunden sagen
> "Die PowerOn Plattform hat unseren Marktanalyse-Prozess revolutioniert. Was früher Wochen dauerte, geschieht jetzt in Tagen - mit tieferen Einblicken und besserer Datenqualität."
>
> **Maria Schmidt, Chief Strategy Officer, TechVision GmbH**
> "Der ROI war sofort messbar. Allein im ersten Quartal haben wir 120 Arbeitsstunden bei Routineanalysen eingespart und konnten unsere Experten für strategische Projekte einsetzen."
>
> **Thomas Weber, Head of Business Intelligence, FinanceFirst AG**
### Implementierung und Onboarding
- **Schnelle Einrichtung**: Betriebsbereit innerhalb von 1-2 Wochen
- **Umfassende Schulung**: Strukturierte Einarbeitung für alle Benutzergruppen
- **Dedizierter Support**: Persönlicher Ansprechpartner für Ihr Unternehmen
- **Kontinuierliche Optimierung**: Regelmässige Updates und neue Funktionen
### Nächste Schritte
1. **Kostenlose Demo**: Erleben Sie die Leistungsfähigkeit der Plattform in einer persönlichen Vorführung
2. **Proof of Concept**: Testen Sie die Plattform mit einem spezifischen Anwendungsfall Ihres Unternehmens
3. **Massgeschneiderte Lösung**: Entwicklung eines auf Ihre Bedürfnisse zugeschnittenen Implementierungsplans

58
poweron/docu_summary.md Normal file
View file

@ -0,0 +1,58 @@
# PowerOn AI Platform
## 3-Folien-Kurzpräsentation
### 1: Die PowerOn AI Platform im Überblick
#### Was wir erschaffen haben:
* **Multi-Agent-KI-Plattform** für komplexe geschäftliche Herausforderungen
* **Orchestrierte Zusammenarbeit** spezialisierter KI-Agenten unter Moderation
* **Enterprise-ready** mit Multi-Tenant-Architektur und Workspace-Konzept
#### Zusammenspiel Mensch & KI bei der Entwicklung:
| Menschlicher Beitrag | KI-Beitrag |
|---------------------|-------------|
| • Architekturentscheidungen & Systemdesign | • Umsetzung der Code-Basis in verschiedenen Sprachen |
| • Definition der Agentenrollen & -fähigkeiten | • Generierung konsistenter Implementierungen |
| • Domänenexpertise für verschiedene Anwendungsfälle | • Automatisierung repetitiver Entwicklungsaufgaben |
| • Qualitätssicherung & strategische Entscheidungen | • Dokumentationserstellung & -pflege |
### 2: Technische Highlights & Zusammenarbeit
#### Kern-Komponenten:
* **Frontend**: Modulares JS-System mit intuitiver Benutzeroberfläche
* **Workflow-Engine**: Intelligente Agentenkoordination mit Benutzerinteraktion
* **Connectors**: Nahtlose Integration mit OpenAI/Anthropic und Web-Quellen
#### Wie die Entwicklung abläuft:
| Menschlicher Entwicklungsprozess | KI-unterstützter Entwicklungsprozess |
|----------------------------------|--------------------------------------|
| • Entscheidung über Systemarchitektur | • Generierung konsistenter Codebausteine |
| • Definition von Anforderungen & Schnittstellen | • Automatische Erstellung von Boilerplate-Code |
| • Code-Reviews & kritische Optimierungen | • Fehlersuche & Vorschläge für Verbesserungen |
| • Strategische Planung der nächsten Features | • Automatische Anpassung der Dokumentation |
| • Usability-Tests & UX-Entscheidungen | • Generierung von Testfällen & Validierungslogik |
### 3: Das System in Aktion & nächste Schritte
#### Workflow-Beispiel:
1. **Benutzer** wählt spezifische Agenten und lädt relevante Dateien hoch
2. **KI-Moderator** analysiert die Aufgabe und aktiviert passende Spezialisten-Agenten
3. **Agenten-Team** arbeitet gemeinsam an der Lösung (Datenanalyse, Recherche, Code, Text)
4. **Benutzer** kann jederzeit eingreifen und Feedback geben
5. **Ergebnis** wird strukturiert aufbereitet und gespeichert
#### Stand und Ausblick:
| Bereits umgesetzt | In Entwicklung |
|------------------|----------------|
| • 7 spezialisierte Agentenrollen | • Erweiterbarer Agentenmarktplatz |
| • Vollständiger Workflow-Zyklus | • Verbessertes Fehlerhandling |
| • Dokument- & Bildverarbeitung | • Multi-Modell-Unterstützung |
| • Interaktive Web-Recherche | • Erweitertes Dashboard |
| • Multi-Tenant-Architecture | • API für Drittanbieter-Integration |
#### Entwicklungsphilosophie:
> **"Wir kombinieren menschliche Kreativität und Urteilsvermögen mit KI-Effizienz und Präzision,
> um ein System zu erschaffen, das mehr ist als die Summe seiner Teile."**

View file

@ -0,0 +1,25 @@
# PowerOn AI Platform: Kurze Kapitelzusammenfassungen
## 1. Systemzweck und Wertversprechen
PowerOn adressiert die Herausforderung der Automatisierung komplexer Geschäftsprozesse durch einen innovativen Multi-Agent-KI-Ansatz. Unsere Plattform positioniert sich an der Schnittstelle von KI, Business Process Automation und Enterprise Knowledge Management mit einem kombinierten Marktvolumen von über 250 Milliarden Dollar bis 2025. Der Wettbewerbsvorteil liegt in unserer proprietären Multi-Agent-Technologie, der Modellunabhängigkeit ohne Vendor Lock-in, der Enterprise-Ready-Architektur und der modularen Anpassungsfähigkeit, die kontinuierliche Verbesserungen ermöglicht.
## 2. Architektur und Agentensystem
Die PowerOn Plattform basiert auf einer modularen Architektur mit klarer Trennung zwischen Frontend und Backend. Das Backend orchestriert über das Gateway-Interface, LucyDOM-Interface und den Agent-Service das Zusammenspiel aller Komponenten. Das Frontend bietet mit modernen JavaScript-Technologien eine responsive, intuitive Benutzeroberfläche. Herzstück ist unser hierarchisches Multi-Agent-System: Der Initialisierungs-Agent analysiert Anfragen, der Moderator/Organisator koordiniert spezialisierte Agenten (Entwickler, Webscraper, Datenanalysten, Textgeneratoren und Visualisierer), die parallel arbeiten und so komplexe Aufgaben effizient bewältigen.
## 3. Workflow-Demonstration
Der PowerOn Workflow ist ein nahtloser Prozess: Nutzer wählen Agenten und Dateien aus und formulieren einen Prompt. Der Organisator-Agent analysiert die Aufgabe und erstellt einen strukturierten Arbeitsplan. Die spezialisierten Agenten arbeiten parallel an ihren Aufgaben, während der Nutzer bei Bedarf direkt interagieren kann. Dieses Feature ermöglicht einen dynamischen, iterativen Arbeitsablauf ohne Neustart des Prozesses. Am Ende werden alle Ergebnisse aggregiert, strukturiert und gespeichert, sodass der Nutzer sowohl das Endergebnis als auch Einblick in den Analyseprozess erhält.
## 4. Skalierbarkeit und Vernetzungspotenzial
PowerOn ist auf Skalierbarkeit ausgelegt. Die Multi-Tenant-Architektur gewährleistet Datentrennung bei effizienter Ressourcennutzung, während die Modellunabhängigkeit Flexibilität bei der Nutzung verschiedener KI-Anbieter bietet. Umfassende REST-APIs ermöglichen nahtlose Integration in Unternehmenslandschaften. Unser hybrides Geschäftsmodell kombiniert Abonnements mit nutzungsbasierter Abrechnung, was vorhersehbare Einnahmen und Wachstumspotenzial bietet. Nach Erreichen der Skalierung erwarten wir Bruttomargen von 75-85%, da die Hauptkosten in der Entwicklung liegen, während die laufenden Betriebskosten vergleichsweise gering bleiben.
## 5. Roadmap: Nächste Schritte und Integration
Unsere Roadmap folgt einer dreistufigen Strategie: Kurzfristig (12 Monate) fokussieren wir auf die Markteinführung der Core-Plattform mit 3-5 Schlüsselreferenzkunden und der Entwicklung branchenspezifischer Templates. Mittelfristig (24 Monate) erweitern wir die Plattform um einen Agentenmarktplatz, integrieren proprietäre Unternehmensmodelle und beginnen mit der internationalen Expansion. Langfristig (36+ Monate) entwickeln wir spezialisierte Branchenlösungen und positionieren PowerOn als zentrale KI-Middleware für Unternehmen. Prioritäre Integrationsbereiche sind ERP/CRM-Systeme, Cloud-Speicherdienste, Business Intelligence Tools und ein SDK für kundenspezifische Integrationen.
## 6. Nächste Schritte
Unser Finanzierungsziel von 2,5 Millionen CHF deckt vier kritische Bereiche ab: Abschluss der Produktentwicklung, Aufbau eines schlagkräftigen Verkaufs- und Marketingteams, Sicherung strategischer Partnerschaften und eine 18-monatige Runway bis zur Profitabilität. Wir prognostizieren im dritten Jahr einen wiederkehrenden Umsatz von 4,5 Millionen CHF bei etwa 150 Unternehmenskunden. Die unmittelbaren Meilensteine sind: Abschluss der Core-Entwicklung (Q2 2025), geschlossene Beta mit drei Pilotkunden (Q3 2025) und offizieller Marktstart (Q4 2025).

176
poweron/spec.md Normal file
View file

@ -0,0 +1,176 @@
# PowerOn Frontend Architektur & Spezifikation
## 1. Funktionsumfang des Frontends
Das Frontend der PowerOn-Plattform bietet folgende Kernfunktionen:
- **Multi-Agent Chat-Workflow**: Interaktive Chat-Oberfläche für die Steuerung von Workflows mit mehreren KI-Agenten.
- **Datei-Upload & -Verwaltung**: Nutzer können Dateien hochladen, anhängen, einsehen und herunterladen.
- **Prompt-Verwaltung**: Verwaltung und Nutzung von Prompt-Vorlagen für wiederkehrende Aufgaben.
- **Log- und Statusanzeige**: Fortschrittsanzeige, Fehler- und Statusmeldungen für Workflows.
- **Benutzer- und Mandantenverwaltung**: Admin-Funktionen zur Verwaltung von Usern und Mandanten.
- **Dynamische Datentabellen**: CRUD-Operationen (Create, Read, Update, Delete) für beliebige Entitäten über generische Tabellen und Formulare.
- **Authentifizierung**: Login via klassischem Account oder Microsoft-Account.
## 2. Struktur des Frontends
Das Frontend ist modular aufgebaut und besteht aus folgenden Hauptmodulen und -bereichen:
- **js/main.js**: Einstiegspunkt, Initialisierung der App und Navigation.
- **js/shared/**: Gemeinsame Module für State-Management, API-Calls, Navigation, Utilities, Authentifizierung, Formulargenerierung.
- **globalState.js**: Zentrale State-Verwaltung und Navigation.
- **apiCalls.js**: Konsolidierte Schnittstelle für Backend-Kommunikation.
- **formGeneric.js**: Generisches Modul für CRUD-Tabellen und Formulare.
- **msftCalls.js**: Microsoft-Authentifizierung und Status.
- **navigation.js**: Dynamische Navigation und Menü-Rendering.
- **utils.js**: Hilfsfunktionen (z.B. Toasts, UI-Feedback).
- **js/modules/**: Feature-spezifische Module (z.B. prompts.js, users.js, files.js).
- **public/htmlparts/**: HTML-Teile und Stylesheets für Layout, Navigation, Workflow, Formulare.
- **public/docu/**: Dokumentation und Spezifikationen.
## 3. Kommunikation mit dem Backend
Die gesamte Kommunikation mit dem Backend erfolgt konsolidiert über das Modul **apiCalls.js**. Dieses Modul bietet Funktionen für alle relevanten API-Endpunkte:
- **Workflows**: Starten, Fortsetzen, Stoppen, Status, Logs, Nachrichten, Löschen
- **Dateien**: Upload, Download, Löschen, Anhängen/Entfernen an Nachrichten
- **Prompts**: CRUD-Operationen für Prompt-Vorlagen
- **User/Mandanten**: Verwaltung von Benutzern und Mandanten
- **Generische Entitäten**: CRUD für beliebige Datentabellen
Alle API-Aufrufe sind asynchron und liefern Promises zurück. Fehlerbehandlung und Statusmeldungen werden zentral im Modul und über UI-Feedback (Toasts) gehandhabt.
## 4. Workflow-States (State Machine)
Die States eines Workflows sind in den Dateien @doc_statemachine_backend.md und @doc_statemachine_frontend.md ausführlich beschrieben. Die wichtigsten States sind:
- **null**: Kein Workflow aktiv
- **running**: Workflow läuft, Polling aktiv
- **completed**: Workflow abgeschlossen, UI bereit für neue Eingabe
- **failed**: Fehler aufgetreten, UI zeigt Fehler und Retry-Option
- **stopped**: Workflow wurde gestoppt, UI bietet Fortsetzen/Reset
Transitions und State-Änderungen werden sowohl im Backend als auch im Frontend synchronisiert und über Polling-Mechanismen aktuell gehalten.
## 5. Administrierung von Usern, Mandanten und Datentabellen
Die Administration erfolgt konsolidiert über das generische Modul **formGeneric.js**:
- **User- und Mandantenverwaltung**: CRUD-Tabellen und Formulare für Benutzer und Mandanten, inklusive Rechteverwaltung.
- **Datentabellen**: Beliebige Entitäten (z.B. Prompts, Dateien, Workflows) können als Tabelle mit Formularen verwaltet werden.
- **Features**:
- Tabellenansicht mit Filter, Sortierung, Pagination, Massenaktionen
- Formulare für Erstellen/Bearbeiten mit dynamischer Feldgenerierung
- Validierung und Transformation der Formulardaten
- Externe Buttons für "+ Neuen ... erstellen" können einfach angebunden werden
- Felder, die mit "_" beginnen oder Zeitstempel wie "created_at" werden automatisch ausgeblendet
## 6. Implementierung & Datenstruktur für das formGeneric Modul
**Hinweis:** Die folgenden Beispiele und Erklärungen beziehen sich exemplarisch auf die Tabelle **"prompt"**. Das Prinzip ist jedoch für alle mit formGeneric verwalteten Entitäten identisch.
### Was macht das Modul formGeneric?
Das Modul **formGeneric.js** stellt eine generische Lösung für die Verwaltung beliebiger Datentabellen im Frontend bereit. Es übernimmt:
- Das Laden, Anzeigen, Erstellen, Bearbeiten und Löschen (CRUD) von Datensätzen
- Die dynamische Generierung von Tabellen und Formularen anhand der gelieferten Datenstruktur
- Die Filterung, Sortierung, Paginierung und Massenaktionen in der Tabellenansicht
- Die Validierung und Transformation von Formulardaten (optional)
- Die Anbindung externer Buttons (z.B. "+ Neuen Prompt erstellen")
- Die automatische Ausblendung von Feldern, die mit "_" beginnen oder Zeitstempel wie "created_at" enthalten
- Die Berücksichtigung von Berechtigungen: Felder wie `_hideEdit`, `_hideDelete`, `_hideView` steuern, ob die jeweiligen Aktionen für einen Datensatz im UI angezeigt werden
- Die Rendering-Logik: Längere Felder wie "content" oder "description" werden als Textarea dargestellt, boolesche Felder als Checkbox, numerische Felder als Zahlenfeld
- Die dynamische Anpassung an die Datenstruktur: Die Felder werden aus dem ersten Element der Datenliste abgeleitet
### Immer vorhandene/unterstützte Parameter (pro Datensatz)
- **id**: Eindeutige ID des Datensatzes (wird immer angezeigt)
- **_**-Felder: Interne Felder, die mit "_" beginnen, werden in Tabellen und Formularen ausgeblendet
- **createdAt, updatedAt, created_at**: Zeitstempel werden automatisch ausgeblendet
- **_hideEdit, _hideDelete, _hideView**: Steuern, ob die jeweiligen Aktionen (Bearbeiten, Löschen, Anzeigen) im UI für diesen Datensatz angezeigt werden
- **Weitere Felder**: Werden dynamisch als Spalten und Formularfelder generiert, sofern sie nicht explizit ausgeschlossen sind
### Integration
Das Modul wird wie folgt initialisiert:
```js
window.genericEntityModule.init(globalState, {
entityType: 'prompt', // oder 'user', 'mandate', ...
apiEndpoint: {
get: api.getPrompts,
create: api.createPrompt,
update: api.updatePrompt,
delete: api.deletePrompt
},
listContainerId: 'prompts-list',
addButtonId: 'add-prompt-btn',
transformFormData: function(formData) { /* optional */ },
onItemCreated: function(item) { /* optional */ },
onItemUpdated: function(item) { /* optional */ },
onItemDeleted: function(id) { /* optional */ }
});
```
### Erwartete Datenstruktur (aus der Route/API)
Das Modul erwartet, dass die API-Endpoints Objekte mit folgender Struktur liefern (Beispiel Prompt):
```json
{
"id": 123,
"name": "Prompt-Name",
"description": "Beschreibung",
"content": "Prompt-Inhalt",
"createdAt": "2024-05-11T12:34:56Z",
"updatedAt": "2024-05-11T12:34:56Z",
"_internal": "...", // wird ignoriert
"_hideEdit": false, // steuert Bearbeiten-Button
"_hideDelete": false, // steuert Löschen-Button
"_hideView": false // steuert Anzeigen-Button
}
```
- Felder mit "_" am Anfang sowie Zeitstempel wie "createdAt", "updatedAt", "created_at" werden automatisch in Tabellen und Formularen ausgeblendet.
- Die Felder werden dynamisch aus dem ersten Element der Datenliste generiert.
- Für längere Felder wie "content" oder "description" wird automatisch ein Textarea verwendet.
- Checkboxen für boolesche Felder, Zahlenfelder für numerische Werte.
- Die Sichtbarkeit von Aktionen (Bearbeiten, Löschen, Anzeigen) wird pro Datensatz über die _hide*-Felder gesteuert.
### Erweiterbarkeit
- Das Modul kann für beliebige Entitäten verwendet werden, solange die API die Standard-CRUD-Methoden bereitstellt.
- Zusätzliche Aktionen (z.B. "Vorschau", "Spezial-Buttons") können über die Option `getItemActions` ergänzt werden.
- Die UI ist vollständig dynamisch und passt sich der gelieferten Datenstruktur an.
---
## 7. Workflow-UI: Darstellung und Datenfluss
Das Workflow-Modul im Frontend bildet die zentrale Chat- und Prozessansicht ab. Die wichtigsten UI-Elemente und deren Datenquellen sind:
- **Chatbereich**: Zeigt alle Nachrichten (user, agent, system) als Chat-Bubbles an. Die Nachrichten werden aus dem Backend über `/api/workflows/{workflowId}/messages` geladen und enthalten:
- `content`: Text der Nachricht
- `role`: user, assistant, agentName
- `documents`: Anhänge (Dateien, die angezeigt oder heruntergeladen werden können)
- `timestamp`, `status` (first, step, last)
- **Logpanel**: Zeigt den Fortschritt und Status des Workflows an. Die Logs werden aus `/api/workflows/{workflowId}/logs` geladen und enthalten:
- `message`: Logtext
- `progress`: Fortschritt (0-100%)
- `type`: info, warning, error
- `agentName`, `timestamp`
- **Prompt-Eingabe**: Textfeld für Nutzereingaben, Datei-Upload-Bereich, Start/Send-Button, Stop-Button
- **Dateianhänge**: Hochgeladene Dateien werden im UI angezeigt und können entfernt werden. Die Metadaten kommen aus `/api/files/upload` und den Nachrichtenobjekten.
- **Statusanzeige**: Zeigt den aktuellen Workflow-Status (running, completed, failed, stopped) an, basierend auf `/api/workflows/{workflowId}/status`.
- **Polling-Mechanismus**: Das Frontend pollt periodisch die Status-, Log- und Nachrichtenendpunkte, um die UI aktuell zu halten. Neue Nachrichten und Logs werden automatisch ergänzt.
- **Fehler- und Abschlusszustände**: Bei Fehlern oder Abschluss werden entsprechende UI-Elemente (z.B. Retry, Reset, neue Eingabe) angezeigt.
**Datenfluss:**
- Nach Start eines Workflows werden alle relevanten Daten (Nachrichten, Logs, Status) regelmäßig vom Backend geladen und im UI aktualisiert.
- Die Zuordnung von Nachrichten, Logs und Dateien erfolgt über IDs und Statusfelder.
- Die UI ist so gestaltet, dass sie den aktuellen Stand des Workflows und alle relevanten Aktionen für den Nutzer transparent darstellt.
---
**Letzte Aktualisierung:** 2024-05-11