674 lines
28 KiB
HTML
674 lines
28 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>PowerON - Workflow Engine Architektur</title>
|
|
<style>
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
body {
|
|
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
color: #333;
|
|
padding: 20px;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
.container {
|
|
max-width: 1400px;
|
|
margin: 0 auto;
|
|
background: white;
|
|
border-radius: 20px;
|
|
padding: 40px;
|
|
box-shadow: 0 20px 60px rgba(0,0,0,0.3);
|
|
}
|
|
|
|
h1 {
|
|
color: #667eea;
|
|
font-size: 2.5em;
|
|
margin-bottom: 10px;
|
|
text-align: center;
|
|
border-bottom: 4px solid #764ba2;
|
|
padding-bottom: 20px;
|
|
}
|
|
|
|
h2 {
|
|
color: #764ba2;
|
|
font-size: 2em;
|
|
margin-top: 40px;
|
|
margin-bottom: 20px;
|
|
border-left: 5px solid #667eea;
|
|
padding-left: 15px;
|
|
}
|
|
|
|
h3 {
|
|
color: #667eea;
|
|
font-size: 1.5em;
|
|
margin-top: 30px;
|
|
margin-bottom: 15px;
|
|
}
|
|
|
|
.diagram {
|
|
background: #f8f9fa;
|
|
border: 2px solid #667eea;
|
|
border-radius: 10px;
|
|
padding: 30px;
|
|
margin: 30px 0;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.workflow-box {
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
color: white;
|
|
padding: 20px;
|
|
border-radius: 10px;
|
|
margin: 15px 0;
|
|
box-shadow: 0 5px 15px rgba(0,0,0,0.2);
|
|
transition: transform 0.3s ease;
|
|
}
|
|
|
|
.workflow-box:hover {
|
|
transform: translateY(-5px);
|
|
}
|
|
|
|
.workflow-box h4 {
|
|
font-size: 1.3em;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.workflow-box p {
|
|
margin: 8px 0;
|
|
}
|
|
|
|
.mode-box {
|
|
background: white;
|
|
border: 3px solid #667eea;
|
|
border-radius: 10px;
|
|
padding: 20px;
|
|
margin: 15px 0;
|
|
display: inline-block;
|
|
width: 100%;
|
|
}
|
|
|
|
.mode-box h4 {
|
|
color: #667eea;
|
|
font-size: 1.2em;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.flow-arrow {
|
|
text-align: center;
|
|
font-size: 2em;
|
|
color: #667eea;
|
|
margin: 10px 0;
|
|
}
|
|
|
|
.action-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
|
gap: 20px;
|
|
margin: 20px 0;
|
|
}
|
|
|
|
.action-card {
|
|
background: white;
|
|
border: 2px solid #667eea;
|
|
border-radius: 10px;
|
|
padding: 15px;
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.action-card:hover {
|
|
box-shadow: 0 10px 25px rgba(102, 126, 234, 0.3);
|
|
transform: translateY(-3px);
|
|
}
|
|
|
|
.action-card h4 {
|
|
color: #764ba2;
|
|
margin-bottom: 10px;
|
|
font-size: 1.1em;
|
|
}
|
|
|
|
.method-badge {
|
|
display: inline-block;
|
|
background: #667eea;
|
|
color: white;
|
|
padding: 5px 10px;
|
|
border-radius: 5px;
|
|
font-size: 0.85em;
|
|
margin-right: 10px;
|
|
margin-bottom: 5px;
|
|
}
|
|
|
|
.example-workflow {
|
|
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
|
|
border: 3px solid #764ba2;
|
|
border-radius: 15px;
|
|
padding: 25px;
|
|
margin: 30px 0;
|
|
}
|
|
|
|
.step-box {
|
|
background: white;
|
|
border-left: 5px solid #667eea;
|
|
border-radius: 5px;
|
|
padding: 15px;
|
|
margin: 15px 0;
|
|
box-shadow: 0 3px 10px rgba(0,0,0,0.1);
|
|
}
|
|
|
|
.step-box h5 {
|
|
color: #764ba2;
|
|
margin-bottom: 10px;
|
|
font-size: 1.1em;
|
|
}
|
|
|
|
.task-tree {
|
|
margin-left: 30px;
|
|
border-left: 2px dashed #667eea;
|
|
padding-left: 20px;
|
|
}
|
|
|
|
.task-item {
|
|
background: #f8f9fa;
|
|
border: 1px solid #667eea;
|
|
border-radius: 5px;
|
|
padding: 10px;
|
|
margin: 10px 0;
|
|
}
|
|
|
|
.action-item {
|
|
background: #e8ebf5;
|
|
border: 1px solid #764ba2;
|
|
border-radius: 5px;
|
|
padding: 8px;
|
|
margin: 5px 0;
|
|
margin-left: 20px;
|
|
font-size: 0.9em;
|
|
}
|
|
|
|
.legend {
|
|
background: #f8f9fa;
|
|
border: 2px solid #667eea;
|
|
border-radius: 10px;
|
|
padding: 20px;
|
|
margin: 20px 0;
|
|
}
|
|
|
|
.legend-item {
|
|
display: flex;
|
|
align-items: center;
|
|
margin: 10px 0;
|
|
}
|
|
|
|
.legend-color {
|
|
width: 30px;
|
|
height: 30px;
|
|
border-radius: 5px;
|
|
margin-right: 10px;
|
|
}
|
|
|
|
code {
|
|
background: #f4f4f4;
|
|
padding: 2px 6px;
|
|
border-radius: 3px;
|
|
font-family: 'Courier New', monospace;
|
|
color: #e83e8c;
|
|
}
|
|
|
|
ul, ol {
|
|
margin-left: 30px;
|
|
margin-top: 10px;
|
|
}
|
|
|
|
li {
|
|
margin: 8px 0;
|
|
}
|
|
|
|
.highlight {
|
|
background: #fff3cd;
|
|
padding: 2px 6px;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.info-box {
|
|
background: #d1ecf1;
|
|
border: 2px solid #0c5460;
|
|
border-radius: 10px;
|
|
padding: 15px;
|
|
margin: 20px 0;
|
|
}
|
|
|
|
.warning-box {
|
|
background: #fff3cd;
|
|
border: 2px solid #856404;
|
|
border-radius: 10px;
|
|
padding: 15px;
|
|
margin: 20px 0;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<h1>PowerON Workflow Engine Architektur</h1>
|
|
|
|
<div class="info-box">
|
|
<strong>📖 Dokumentation:</strong> Diese Dokumentation beschreibt die Architektur der Workflow Engine von PowerON. Die Engine ermöglicht es, komplexe Multi-Step Workflows zu erstellen, die Tasks und Actions dynamisch organisieren und ausführen.
|
|
</div>
|
|
|
|
<h2>1. Workflow-Übersicht</h2>
|
|
|
|
<div class="diagram">
|
|
<div class="workflow-box">
|
|
<h4>🎯 Workflow Manager</h4>
|
|
<p><code>@gateway/modules/workflows/workflowManager.py</code></p>
|
|
<p>Zentrale Komponente, die alle Workflow-Typen verwaltet und koordiniert.</p>
|
|
<p><strong>Routen:</strong> <code>@routeChatPlayground.py</code></p>
|
|
</div>
|
|
|
|
<div class="flow-arrow">⬇️</div>
|
|
|
|
<div style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 20px;">
|
|
<div class="mode-box">
|
|
<h4>📋 Actionplan Mode</h4>
|
|
<code>@modeActionplan.py</code>
|
|
<p style="margin-top: 10px;"><strong>Funktion:</strong></p>
|
|
<ul style="font-size: 0.9em;">
|
|
<li>Batch-Planung aller Actions</li>
|
|
<li>Sequenzielle Ausführung</li>
|
|
<li>AI Review nach Task-Abschluss</li>
|
|
<li>Automatische Retry-Logik</li>
|
|
</ul>
|
|
<p style="margin-top: 10px; color: #28a745; font-weight: bold;">✓ Implementiert</p>
|
|
</div>
|
|
|
|
<div class="mode-box">
|
|
<h4>🔄 React Mode</h4>
|
|
<code>@modeReact.py</code>
|
|
<p style="margin-top: 10px;"><strong>Funktion:</strong></p>
|
|
<ul style="font-size: 0.9em;">
|
|
<li>Iterative Plan-Act-Observe-Schleife</li>
|
|
<li>Dynamische Action-Generierung</li>
|
|
<li>Adaptive Learning</li>
|
|
<li>Content Validation</li>
|
|
</ul>
|
|
<p style="margin-top: 10px; color: #28a745; font-weight: bold;">✓ Implementiert</p>
|
|
</div>
|
|
|
|
<div class="mode-box">
|
|
<h4>⚙️ Automated Mode</h4>
|
|
<code>@modeAutomated.py</code>
|
|
<p style="margin-top: 10px;"><strong>Funktion:</strong></p>
|
|
<ul style="font-size: 0.9em;">
|
|
<li>Fixed Workflow-Definition</li>
|
|
<li>Zeitgesteuerte Ausführung</li>
|
|
<li>Vordefinierter Fahrplan</li>
|
|
<li>Standardisierte Prozesse</li>
|
|
</ul>
|
|
<p style="margin-top: 10px; color: #ffc107; font-weight: bold;">⚠ Geplant</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<h2>2. Workflow-Modell</h2>
|
|
|
|
<div class="diagram">
|
|
<h3>🏗️ Hierarchische Struktur</h3>
|
|
|
|
<div class="task-tree">
|
|
<div class="workflow-box">
|
|
<h4>📦 Workflow</h4>
|
|
<p><strong>Attribute:</strong> ID, Status, Round, Mandate</p>
|
|
<p><strong>Zustände:</strong> running, stopped, completed, failed</p>
|
|
</div>
|
|
|
|
<div class="task-item">
|
|
<strong>Task 1</strong> - Erste Aufgabe
|
|
<p style="font-size: 0.9em; color: #666; margin-top: 5px;">Objective: "Verknüpfung definieren"</p>
|
|
|
|
<div class="action-item">
|
|
Action 1: sharepoint.findDocumentPath<br>
|
|
<span style="font-size: 0.85em; color: #666;">Findet Dokumente im SharePoint</span>
|
|
</div>
|
|
|
|
<div class="action-item">
|
|
Action 2: sharepoint.readDocuments<br>
|
|
<span style="font-size: 0.85em; color: #666;">Liest gefundene Dokumente</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="task-item">
|
|
<strong>Task 2</strong> - Zweite Aufgabe
|
|
<p style="font-size: 0.9em; color: #666; margin-top: 5px;">Objective: "Verarbeitung durchführen"</p>
|
|
|
|
<div class="action-item">
|
|
Action 1: ai.process<br>
|
|
<span style="font-size: 0.85em; color: #666;">Verarbeitet Dokumente mit AI</span>
|
|
</div>
|
|
|
|
<div class="action-item">
|
|
Action 2: sharepoint.uploadDocument<br>
|
|
<span style="font-size: 0.85em; color: #666;">Speichert Ergebnisse</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="task-item">
|
|
<strong>Task 3</strong> - Dritte Aufgabe
|
|
<p style="font-size: 0.9em; color: #666; margin-top: 5px;">Objective: "Benachrichtigung versenden"</p>
|
|
|
|
<div class="action-item">
|
|
Action 1: outlook.composeAndSendEmailWithContext<br>
|
|
<span style="font-size: 0.85em; color: #666;">Sendet E-Mail mit Ergebnis</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="info-box">
|
|
<strong>💡 Wichtige Prinzipien:</strong>
|
|
<ul>
|
|
<li><strong>1 Task = 1..n Actions</strong> - Ein Task kann mehrere Actions enthalten</li>
|
|
<li><strong>Dynamisches AI Planning</strong> - Actionplan und React generieren Actions dynamisch mittels AI</li>
|
|
<li><strong>Variable Übergabe</strong> - Actions können Ergebnisse von vorherigen Actions als Input nutzen</li>
|
|
<li><strong>Context Propagation</strong> - TaskContext überträgt State zwischen Tasks</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<h2>3. Verfügbare Actions</h2>
|
|
|
|
<div class="diagram">
|
|
<h3>🤖 Method: AI</h3>
|
|
<div class="action-grid">
|
|
<div class="action-card">
|
|
<span class="method-badge">ai</span>
|
|
<h4>process</h4>
|
|
<p><strong>Parameter:</strong></p>
|
|
<ul style="font-size: 0.9em;">
|
|
<li>aiPrompt (required)</li>
|
|
<li>documentList (optional)</li>
|
|
<li>resultType (optional)</li>
|
|
</ul>
|
|
<p style="margin-top: 10px;">AI-Textverarbeitung mit optionalen Input-Dokumenten</p>
|
|
</div>
|
|
|
|
<div class="action-card">
|
|
<span class="method-badge">ai</span>
|
|
<h4>webResearch</h4>
|
|
<p><strong>Parameter:</strong></p>
|
|
<ul style="font-size: 0.9em;">
|
|
<li>searchQuery (required)</li>
|
|
<li>language (optional)</li>
|
|
</ul>
|
|
<p style="margin-top: 10px;">Web-Recherche mit AI-gestützter Zusammenfassung</p>
|
|
</div>
|
|
|
|
<div class="action-card">
|
|
<span class="method-badge">ai</span>
|
|
<h4>generateImage</h4>
|
|
<p><strong>Parameter:</strong></p>
|
|
<ul style="font-size: 0.9em;">
|
|
<li>imagePrompt (required)</li>
|
|
<li>style (optional)</li>
|
|
</ul>
|
|
<p style="margin-top: 10px;">AI-Bildgenerierung basierend auf Textprompt</p>
|
|
</div>
|
|
</div>
|
|
|
|
<h3 style="margin-top: 40px;">📁 Method: SharePoint</h3>
|
|
<div class="action-grid">
|
|
<div class="action-card">
|
|
<span class="method-badge">sharepoint</span>
|
|
<h4>findDocumentPath</h4>
|
|
<p><strong>Parameter:</strong></p>
|
|
<ul style="font-size: 0.9em;">
|
|
<li>connectionReference (required)</li>
|
|
<li>searchQuery (required)</li>
|
|
<li>site (optional)</li>
|
|
<li>maxResults (optional)</li>
|
|
</ul>
|
|
<p style="margin-top: 10px;">Sucht Dokumente und Ordner in SharePoint</p>
|
|
</div>
|
|
|
|
<div class="action-card">
|
|
<span class="method-badge">sharepoint</span>
|
|
<h4>readDocuments</h4>
|
|
<p><strong>Parameter:</strong></p>
|
|
<ul style="font-size: 0.9em;">
|
|
<li>documentList (required)</li>
|
|
<li>connectionReference (required)</li>
|
|
</ul>
|
|
<p style="margin-top: 10px;">Liest Dokumente aus SharePoint</p>
|
|
</div>
|
|
|
|
<div class="action-card">
|
|
<span class="method-badge">sharepoint</span>
|
|
<h4>uploadDocument</h4>
|
|
<p><strong>Parameter:</strong></p>
|
|
<ul style="font-size: 0.9em;">
|
|
<li>documentData (required)</li>
|
|
<li>targetPath (required)</li>
|
|
<li>connectionReference (required)</li>
|
|
</ul>
|
|
<p style="margin-top: 10px;">Lädt Dokumente in SharePoint hoch</p>
|
|
</div>
|
|
|
|
<div class="action-card">
|
|
<span class="method-badge">sharepoint</span>
|
|
<h4>listDocuments</h4>
|
|
<p><strong>Parameter:</strong></p>
|
|
<ul style="font-size: 0.9em;">
|
|
<li>folderPath (required)</li>
|
|
<li>connectionReference (required)</li>
|
|
<li>includeSubfolders (optional)</li>
|
|
</ul>
|
|
<p style="margin-top: 10px;">Listet Dokumente in einem Ordner auf</p>
|
|
</div>
|
|
</div>
|
|
|
|
<h3 style="margin-top: 40px;">📧 Method: Outlook</h3>
|
|
<div class="action-grid">
|
|
<div class="action-card">
|
|
<span class="method-badge">outlook</span>
|
|
<h4>readEmails</h4>
|
|
<p><strong>Parameter:</strong></p>
|
|
<ul style="font-size: 0.9em;">
|
|
<li>connectionReference (required)</li>
|
|
<li>folder (optional)</li>
|
|
<li>limit (optional)</li>
|
|
<li>filter (optional)</li>
|
|
</ul>
|
|
<p style="margin-top: 10px;">Liest E-Mails aus einem Postfach</p>
|
|
</div>
|
|
|
|
<div class="action-card">
|
|
<span class="method-badge">outlook</span>
|
|
<h4>searchEmails</h4>
|
|
<p><strong>Parameter:</strong></p>
|
|
<ul style="font-size: 0.9em;">
|
|
<li>connectionReference (required)</li>
|
|
<li>searchQuery (required)</li>
|
|
</ul>
|
|
<p style="margin-top: 10px;">Sucht E-Mails mit spezifischen Kriterien</p>
|
|
</div>
|
|
|
|
<div class="action-card">
|
|
<span class="method-badge">outlook</span>
|
|
<h4>composeAndSendEmailWithContext</h4>
|
|
<p><strong>Parameter:</strong></p>
|
|
<ul style="font-size: 0.9em;">
|
|
<li>connectionReference (required)</li>
|
|
<li>recipientEmail (required)</li>
|
|
<li>subject (required)</li>
|
|
<li>emailBody (required)</li>
|
|
<li>attachments (optional)</li>
|
|
</ul>
|
|
<p style="margin-top: 10px;">Erstellt und sendet E-Mail mit Kontext</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<h2>4. Beispiel-Workflow: Spesenverarbeitung</h2>
|
|
|
|
<div class="example-workflow">
|
|
<h3>🎯 Use Case: Automatische Spesenverarbeitung</h3>
|
|
<p><strong>Szenario:</strong> Ein Kunde lädt PDF-Spesenbelege in einen SharePoint-Ordner. Der Workflow liest täglich die neuen Belege, verarbeitet sie über die Microsoft-Verbindung, aktualisiert das Buchhaltungssystem und sendet eine Bestätigungsmail.</p>
|
|
|
|
<div class="step-box">
|
|
<h5>📍 Step 1: Trigger (Automated Mode)</h5>
|
|
<p style="font-size: 0.9em; color: #666;">Zeitgesteuerte tägliche Ausführung (z.B. 08:00 Uhr)</p>
|
|
<p><strong>Workflow ID:</strong> <code>workflow_spesen_daily</code></p>
|
|
<p><strong>Mode:</strong> <span class="highlight">Automated</span> (fix vordefiniert)</p>
|
|
</div>
|
|
|
|
<div class="step-box">
|
|
<h5>📋 Task 1: Dokumente identifizieren</h5>
|
|
<p style="font-size: 0.9em; color: #666; margin-bottom: 10px;">Objective: "Finde alle neuen PDF-Belege im Spesen-Ordner"</p>
|
|
|
|
<div class="action-item">
|
|
<strong>Action 1.1:</strong> <code>sharepoint.listDocuments</code><br>
|
|
<span style="font-size: 0.85em; color: #666;">
|
|
Parameters: <code>{</code><br>
|
|
<code> "folderPath": "/Spesen/2024",</code><br>
|
|
<code> "connectionReference": "user_msft_connection",</code><br>
|
|
<code> "includeSubfolders": false</code><br>
|
|
<code>}</code>
|
|
</span>
|
|
<p style="font-size: 0.85em; color: #28a745; margin-top: 5px;">✓ Ergebnis: Liste aller PDF-Dateien</p>
|
|
</div>
|
|
|
|
<div class="action-item">
|
|
<strong>Action 1.2:</strong> <code>sharepoint.readDocuments</code><br>
|
|
<span style="font-size: 0.85em; color: #666;">
|
|
Parameters: <code>{</code><br>
|
|
<code> "documentList": ["docList:msg_123:Rechnung_1.pdf", "docList:msg_123:Rechnung_2.pdf"],</code><br>
|
|
<code> "connectionReference": "user_msft_connection"</code><br>
|
|
<code>}</code>
|
|
</span>
|
|
<p style="font-size: 0.85em; color: #28a745; margin-top: 5px;">✓ Ergebnis: PDF-Inhalte für AI-Verarbeitung</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="step-box">
|
|
<h5>🤖 Task 2: Daten extrahieren und verarbeiten</h5>
|
|
<p style="font-size: 0.9em; color: #666; margin-bottom: 10px;">Objective: "Extrahiere Spesendaten aus PDFs und strukturiere sie"</p>
|
|
|
|
<div class="action-item">
|
|
<strong>Action 2.1:</strong> <code>ai.process</code><br>
|
|
<span style="font-size: 0.85em; color: #666;">
|
|
Parameters: <code>{</code><br>
|
|
<code> "aiPrompt": "Extrahiere alle Ausgaben aus den Spesenbelegen. Erstelle eine strukturierte JSON-Liste mit: Datum, Betrag, Kategorie, Verwendungszweck.",</code><br>
|
|
<code> "documentList": ["docList:msg_124:pdf_content"],</code><br>
|
|
<code> "resultType": "json"</code><br>
|
|
<code>}</code>
|
|
</span>
|
|
<p style="font-size: 0.85em; color: #28a745; margin-top: 5px;">✓ Ergebnis: Strukturierte Spesendaten (JSON)</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="step-box">
|
|
<h5>📊 Task 3: Buchhaltung aktualisieren</h5>
|
|
<p style="font-size: 0.9em; color: #666; margin-bottom: 10px;">Objective: "Übertrage Spesendaten ins Buchhaltungssystem"</p>
|
|
|
|
<div class="action-item">
|
|
<strong>Action 3.1:</strong> <code>sharepoint.uploadDocument</code><br>
|
|
<span style="font-size: 0.85em; color: #666;">
|
|
Parameters: <code>{</code><br>
|
|
<code> "documentData": {"content": "{\"transactions\": [...]}", "mimeType": "application/json"},</code><br>
|
|
<code> "targetPath": "/Buchhaltung/Spesen/processed/2024-01-15.json",</code><br>
|
|
<code> "connectionReference": "trust_accounting_system"</code><br>
|
|
<code>}</code>
|
|
</span>
|
|
<p style="font-size: 0.85em; color: #28a745; margin-top: 5px;">✓ Ergebnis: Aktualisierte Buchhaltung</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="step-box">
|
|
<h5>📧 Task 4: Bestätigung senden</h5>
|
|
<p style="font-size: 0.9em; color: #666; margin-bottom: 10px;">Objective: "Versende Bestätigungsmail mit Übersicht"</p>
|
|
|
|
<div class="action-item">
|
|
<strong>Action 4.1:</strong> <code>outlook.composeAndSendEmailWithContext</code><br>
|
|
<span style="font-size: 0.85em; color: #666;">
|
|
Parameters: <code>{</code><br>
|
|
<code> "connectionReference": "user_msft_connection",</code><br>
|
|
<code> "recipientEmail": "user@company.com",</code><br>
|
|
<code> "subject": "Spesenverarbeitung abgeschlossen - 15.01.2024",</code><br>
|
|
<code> "emailBody": "Guten Tag,\n\nIhre Spesenbelege wurden verarbeitet...",</code><br>
|
|
<code> "attachments": ["docList:msg_125:summary.pdf"]</code><br>
|
|
<code>}</code>
|
|
</span>
|
|
<p style="font-size: 0.85em; color: #28a745; margin-top: 5px;">✓ Ergebnis: E-Mail erfolgreich versendet</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="background: #d4edda; border: 2px solid #28a745; border-radius: 10px; padding: 15px; margin-top: 20px;">
|
|
<h5 style="color: #155724;">✓ Workflow abgeschlossen</h5>
|
|
<p style="margin-top: 10px;"><strong>Status:</strong> completed</p>
|
|
<p><strong>Verarbeitet:</strong> 5 Actions in 4 Tasks</p>
|
|
<p><strong>Dauer:</strong> ~2 Minuten</p>
|
|
<p><strong>Ergebnis:</strong> Spesenbelege verarbeitet, Buchhaltung aktualisiert, Bestätigung versendet</p>
|
|
</div>
|
|
</div>
|
|
|
|
<h2>5. Technische Architektur</h2>
|
|
|
|
<div class="diagram">
|
|
<div class="workflow-box">
|
|
<h4>🔧 Core Components</h4>
|
|
<p style="margin-top: 10px;"><strong>Processing Core:</strong></p>
|
|
<ul style="font-size: 0.95em;">
|
|
<li><code>actionExecutor.py</code> - Führt Actions aus</li>
|
|
<li><code>messageCreator.py</code> - Erstellt Workflow-Nachrichten</li>
|
|
<li><code>taskPlanner.py</code> - Plant Tasks</li>
|
|
<li><code>validator.py</code> - Validiert Actions</li>
|
|
</ul>
|
|
|
|
<p style="margin-top: 15px;"><strong>Adaptive Features:</strong></p>
|
|
<ul style="font-size: 0.95em;">
|
|
<li><code>intentAnalyzer.py</code> - Analysiert User-Intents</li>
|
|
<li><code>contentValidator.py</code> - Validiert Inhalte</li>
|
|
<li><code>adaptiveLearningEngine.py</code> - Lernt aus Feedback</li>
|
|
<li><code>progressTracker.py</code> - Verfolgt Fortschritt</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="legend">
|
|
<h3>📊 Legende</h3>
|
|
<div class="legend-item">
|
|
<div class="legend-color" style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);"></div>
|
|
<span><strong>Workflow/Mode Box:</strong> Hauptkomponenten der Engine</span>
|
|
</div>
|
|
<div class="legend-item">
|
|
<div class="legend-color" style="background: white; border: 2px solid #667eea;"></div>
|
|
<span><strong>Task Box:</strong> Einzelne Aufgabe im Workflow</span>
|
|
</div>
|
|
<div class="legend-item">
|
|
<div class="legend-color" style="background: #e8ebf5; border: 1px solid #764ba2;"></div>
|
|
<span><strong>Action Card:</strong> Konkrete Action-Ausführung</span>
|
|
</div>
|
|
<div class="legend-item">
|
|
<div class="legend-color" style="background: #d4edda; border: 2px solid #28a745;"></div>
|
|
<span><strong>Success Box:</strong> Erfolgreich abgeschlossener Schritt</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="warning-box" style="margin-top: 30px;">
|
|
<strong>⚠️ Wichtige Hinweise:</strong>
|
|
<ul>
|
|
<li><strong>Automated Mode</strong> ist noch nicht implementiert, die Architektur dafür ist aber bereits dokumentiert</li>
|
|
<li><strong>Variable Übergabe</strong> zwischen Actions erfolgt über <code>documentList</code> Parameter mit References</li>
|
|
<li><strong>Connection References</strong> müssen vom User konfiguriert sein (Microsoft OAuth)</li>
|
|
<li><strong>Error Handling</strong> erfolgt über Retry-Logik in den Modes</li>
|
|
</ul>
|
|
</div>
|
|
|
|
</div>
|
|
</body>
|
|
</html>
|