upd pm
This commit is contained in:
parent
fa74061d77
commit
bcabac4112
5 changed files with 1581 additions and 0 deletions
|
|
@ -1 +1,2 @@
|
|||
Dieses Verzeichnis ist für die verschiedenen Instanzenübersichten. Zum Bearbeiten .drawio-Datei herunterladen und auch https://draw.io bearbeiten. Dann als .svg-Datei exportieren mit dem Namen "Instanzenübersicht_YYYYMMTT.svg", wobei das aktuelle Datum im Titel benutzt werden soll. So hat man eine Sammlung der verschiedenen Versionen.
|
||||
Wo sehe ich, welche Instanz welche Version hat?
|
||||
717
poweron/status.html
Normal file
717
poweron/status.html
Normal file
|
|
@ -0,0 +1,717 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>PowerOn AI Platform - Status Update</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||
line-height: 1.6;
|
||||
margin: 0;
|
||||
padding: 20px;
|
||||
background: #f5f5f5;
|
||||
color: #333;
|
||||
}
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
background: white;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.08);
|
||||
overflow: hidden;
|
||||
}
|
||||
.header {
|
||||
background: #2c3e50;
|
||||
color: white;
|
||||
padding: 30px;
|
||||
text-align: center;
|
||||
}
|
||||
.header h1 {
|
||||
margin: 0;
|
||||
font-size: 2.5em;
|
||||
font-weight: 300;
|
||||
}
|
||||
.header .subtitle {
|
||||
font-size: 1.2em;
|
||||
opacity: 0.9;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.progress-bar {
|
||||
background: rgba(255,255,255,0.2);
|
||||
height: 8px;
|
||||
border-radius: 4px;
|
||||
margin: 20px 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
.progress-fill {
|
||||
background: #27ae60;
|
||||
height: 100%;
|
||||
width: 90%;
|
||||
border-radius: 4px;
|
||||
transition: width 0.3s ease;
|
||||
}
|
||||
.content {
|
||||
padding: 40px;
|
||||
}
|
||||
.status-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||||
gap: 30px;
|
||||
margin: 30px 0;
|
||||
}
|
||||
.status-card {
|
||||
background: #f8f9fa;
|
||||
border-radius: 6px;
|
||||
padding: 25px;
|
||||
border-left: 4px solid #6c757d;
|
||||
transition: box-shadow 0.2s ease;
|
||||
}
|
||||
.status-card:hover {
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
||||
}
|
||||
.status-card.completed {
|
||||
border-left-color: #28a745;
|
||||
}
|
||||
.status-card.in-progress {
|
||||
border-left-color: #ffc107;
|
||||
}
|
||||
.status-card.pending {
|
||||
border-left-color: #dc3545;
|
||||
}
|
||||
.card-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.status-icon {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 15px;
|
||||
font-size: 20px;
|
||||
color: white;
|
||||
}
|
||||
.status-icon.completed { background: #28a745; }
|
||||
.status-icon.in-progress { background: #ffc107; }
|
||||
.status-icon.pending { background: #dc3545; }
|
||||
.card-title {
|
||||
font-size: 1.3em;
|
||||
font-weight: 600;
|
||||
margin: 0;
|
||||
}
|
||||
.card-content {
|
||||
color: #666;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.timeline {
|
||||
margin: 40px 0;
|
||||
}
|
||||
.timeline h3 {
|
||||
color: #2c3e50;
|
||||
border-bottom: 2px solid #ecf0f1;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
.timeline-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 20px 0;
|
||||
padding: 15px;
|
||||
background: #f8f9fa;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.timeline-marker {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border-radius: 50%;
|
||||
margin-right: 20px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.timeline-marker.completed { background: #28a745; }
|
||||
.timeline-marker.current { background: #ffc107; }
|
||||
.timeline-marker.future { background: #6c757d; }
|
||||
.timeline-content {
|
||||
flex: 1;
|
||||
}
|
||||
.timeline-title {
|
||||
font-weight: 600;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.timeline-description {
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
.go-live-criteria {
|
||||
background: #f8f9fa;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 6px;
|
||||
padding: 25px;
|
||||
margin: 30px 0;
|
||||
}
|
||||
.criteria-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||
gap: 20px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.criteria-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 10px;
|
||||
background: white;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.criteria-checkbox {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
margin-right: 15px;
|
||||
border: 2px solid #28a745;
|
||||
border-radius: 4px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
}
|
||||
.criteria-checkbox.completed {
|
||||
background: #28a745;
|
||||
}
|
||||
.criteria-checkbox.pending {
|
||||
background: #dc3545;
|
||||
}
|
||||
.footer {
|
||||
background: #f8f9fa;
|
||||
padding: 30px;
|
||||
text-align: center;
|
||||
color: #6c757d;
|
||||
}
|
||||
.highlight {
|
||||
background: #f8f9fa;
|
||||
padding: 20px;
|
||||
border-radius: 6px;
|
||||
margin: 20px 0;
|
||||
border-left: 4px solid #6c757d;
|
||||
}
|
||||
.highlight h3 {
|
||||
margin-top: 0;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
/* Tab Styles */
|
||||
.tabs {
|
||||
display: flex;
|
||||
border-bottom: 2px solid #dee2e6;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.tab {
|
||||
padding: 15px 25px;
|
||||
background: #f8f9fa;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
font-size: 1.1em;
|
||||
font-weight: 500;
|
||||
color: #6c757d;
|
||||
border-bottom: 3px solid transparent;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
.tab:hover {
|
||||
background: #e9ecef;
|
||||
color: #495057;
|
||||
}
|
||||
.tab.active {
|
||||
background: white;
|
||||
color: #2c3e50;
|
||||
border-bottom-color: #2c3e50;
|
||||
}
|
||||
.tab-content {
|
||||
display: none;
|
||||
}
|
||||
.tab-content.active {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Flow Diagram Styles */
|
||||
.flow-diagram {
|
||||
background: white;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 6px;
|
||||
padding: 25px;
|
||||
margin: 20px 0;
|
||||
}
|
||||
.flow-step {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 15px 0;
|
||||
padding: 15px;
|
||||
background: #f8f9fa;
|
||||
border-radius: 6px;
|
||||
border-left: 4px solid #6c757d;
|
||||
}
|
||||
.flow-number {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
background: #2c3e50;
|
||||
color: white;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: bold;
|
||||
margin-right: 20px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.flow-description {
|
||||
flex: 1;
|
||||
}
|
||||
.flow-title {
|
||||
font-weight: 600;
|
||||
margin-bottom: 5px;
|
||||
color: #2c3e50;
|
||||
}
|
||||
.flow-details {
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
/* Method Grid Styles */
|
||||
.method-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
||||
gap: 20px;
|
||||
margin: 20px 0;
|
||||
}
|
||||
.method-card {
|
||||
background: white;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 6px;
|
||||
padding: 20px;
|
||||
border-left: 4px solid #6c757d;
|
||||
}
|
||||
.method-card h4 {
|
||||
margin: 0 0 10px 0;
|
||||
color: #2c3e50;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
.method-card ul {
|
||||
margin: 0;
|
||||
padding-left: 20px;
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<h1>🚀 PowerOn AI Platform</h1>
|
||||
<div class="subtitle">Status Update - 10 Minuten Übersicht</div>
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill"></div>
|
||||
</div>
|
||||
<div style="font-size: 1.1em; margin-top: 10px;">
|
||||
<strong>90% Fertigstellung</strong> - System funktionsfähig, finale Testphase<br>
|
||||
<span style="font-size: 0.9em; opacity: 0.8;">Die letzten 10% beanspruchen 4-6 Wochen</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<!-- Tab Navigation -->
|
||||
<div class="tabs">
|
||||
<button class="tab active" onclick="showTab('summary')">📊 Summary</button>
|
||||
<button class="tab" onclick="showTab('details')">🔍 Details</button>
|
||||
<button class="tab" onclick="showTab('outlook')">🚀 Ausblick</button>
|
||||
</div>
|
||||
|
||||
<!-- Summary Tab -->
|
||||
<div id="summary" class="tab-content active">
|
||||
<div class="highlight">
|
||||
<h3>🎯 Executive Summary</h3>
|
||||
<p>Das methodenbasierte AI-Agenten-Chat-System ist zu <strong>90% fertiggestellt</strong> und befindet sich in der finalen Testphase. Die Kernfunktionalität ist implementiert, UI stabilisiert und alle Methoden sind funktionsfähig. Das System ist technisch bereit - wir optimieren nur noch die Stabilität und Performance für den Produktiveinsatz.</p>
|
||||
</div>
|
||||
|
||||
<div class="status-grid">
|
||||
<div class="status-card completed">
|
||||
<div class="card-header">
|
||||
<div class="status-icon completed">✅</div>
|
||||
<h3 class="card-title">Backend (Gateway)</h3>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<strong>100% abgeschlossen</strong><br>
|
||||
• 8 spezialisierte Methoden implementiert<br>
|
||||
• Workflow-Management mit Task-Orchestrierung<br>
|
||||
• ServiceCenter für dynamische Methoden-Entdeckung<br>
|
||||
• Vollständige API mit allen Routen<br>
|
||||
• Multi-Provider AI-Integration
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="status-card completed">
|
||||
<div class="card-header">
|
||||
<div class="status-icon completed">✅</div>
|
||||
<h3 class="card-title">Frontend</h3>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<strong>95% abgeschlossen</strong><br>
|
||||
• <strong>JavaScript-Frontend:</strong> Pilot-Version (95% fertig)<br>
|
||||
• <strong>React-Frontend:</strong> Laufend nachgezogen<br>
|
||||
• 11 spezialisierte Module<br>
|
||||
• Workflow-UI (1.700+ Zeilen)<br>
|
||||
• Responsive Design<br>
|
||||
• MSFT/Google OAuth Integration
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="status-card in-progress">
|
||||
<div class="card-header">
|
||||
<div class="status-icon in-progress">🔄</div>
|
||||
<h3 class="card-title">Workflow-Testing</h3>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<strong>80% abgeschlossen</strong><br>
|
||||
• Task-Erstellung ✅<br>
|
||||
• Action-Execution ✅<br>
|
||||
• IN BEARBEITUNG: End-to-End Workflows<br>
|
||||
• AUSSTEHEND: Performance-Tests<br>
|
||||
<br>
|
||||
<strong>Kernthemen zu lösen:</strong><br>
|
||||
• Reibungsloser Handover von Dokumenten zwischen Schritten<br>
|
||||
• Stabilität der dynamischen Methoden (KI-gesteuert)
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="status-card pending">
|
||||
<div class="card-header">
|
||||
<div class="status-icon pending">⏳</div>
|
||||
<h3 class="card-title">Go-Live Vorbereitung</h3>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<strong>30% abgeschlossen</strong><br>
|
||||
• Sicherheitsvalidierung<br>
|
||||
• Performance-Optimierung<br>
|
||||
• Dokumentation<br>
|
||||
• Deployment-Pipeline
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="timeline">
|
||||
<h3>📅 Verbleibende Schritte zum Go-Live (6 Wochen)</h3>
|
||||
|
||||
<div class="timeline-item">
|
||||
<div class="timeline-marker current"></div>
|
||||
<div class="timeline-content">
|
||||
<div class="timeline-title">Woche 1-2 (Kritisch)</div>
|
||||
<div class="timeline-description">
|
||||
1. <strong>Workflow-Testing abschließen</strong> - End-to-End-Tests vervollständigen<br>
|
||||
2. <strong>Frontend-Finish</strong> - State Machine, Prompt in laufenden Chat, Multiple User Connections Microsoft/Google robust
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="timeline-item">
|
||||
<div class="timeline-marker future"></div>
|
||||
<div class="timeline-content">
|
||||
<div class="timeline-title">Woche 3</div>
|
||||
<div class="timeline-description">
|
||||
3. <strong>Sicherheitsvalidierung</strong> - Input Validation, Authentication<br>
|
||||
4. <strong>Performance-Optimierung</strong><br>
|
||||
5. <strong>Dokumentation</strong> - API-Docs, User Guide
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="timeline-item">
|
||||
<div class="timeline-marker future"></div>
|
||||
<div class="timeline-content">
|
||||
<div class="timeline-title">Woche 4</div>
|
||||
<div class="timeline-description">
|
||||
6. <strong>End-to-End Integration Tests</strong> - Vollständige Workflow-Ketten<br>
|
||||
7. <strong>Performance & Stabilität</strong> - Produktions-System stabilisieren
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="timeline-item">
|
||||
<div class="timeline-marker future"></div>
|
||||
<div class="timeline-content">
|
||||
<div class="timeline-title">Woche 5-6 (User Tests im ValueOn Team)</div>
|
||||
<div class="timeline-description">
|
||||
8. <strong>Test "Bewerbungsdossiers prüfen"</strong> und Chatbot "Produktedaten"<br>
|
||||
9. <strong>Go-Live</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="go-live-criteria">
|
||||
<h3>🎯 Go-Live-Kriterien</h3>
|
||||
<div class="criteria-grid">
|
||||
<div class="criteria-item">
|
||||
<div class="criteria-checkbox completed">✓</div>
|
||||
<span>Alle Methoden funktionsfähig</span>
|
||||
</div>
|
||||
<div class="criteria-item">
|
||||
<div class="criteria-checkbox completed">✓</div>
|
||||
<span>Workflow-Engine stabil</span>
|
||||
</div>
|
||||
<div class="criteria-item">
|
||||
<div class="criteria-checkbox completed">✓</div>
|
||||
<span>Frontend-Integration abgeschlossen</span>
|
||||
</div>
|
||||
<div class="criteria-item">
|
||||
<div class="criteria-checkbox pending">!</div>
|
||||
<span>Workflow-Tests erfolgreich</span>
|
||||
</div>
|
||||
<div class="criteria-item">
|
||||
<div class="criteria-checkbox pending">!</div>
|
||||
<span>Sicherheitsvalidierung bestanden</span>
|
||||
</div>
|
||||
<div class="criteria-item">
|
||||
<div class="criteria-checkbox pending">!</div>
|
||||
<span>Performance-Kriterien erfüllt</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="highlight">
|
||||
<h3>⏱️ Zeitplan (6 Wochen)</h3>
|
||||
<ul style="margin: 0; padding-left: 20px;">
|
||||
<li><strong>Woche 1-2:</strong> Workflow-Testing & Frontend-Finish (State Machine, Chat, Connections)</li>
|
||||
<li><strong>Woche 3:</strong> Sicherheit, Performance & Dokumentation</li>
|
||||
<li><strong>Woche 4:</strong> Finale Tests & Produktions-System stabilisieren</li>
|
||||
<li><strong>Woche 5-6:</strong> User Tests im ValueOn Team & Go-Live</li>
|
||||
<li><strong>Go-Live aktuelle Prognose:</strong> <strong>Ende September 2025</strong></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Details Tab -->
|
||||
<div id="details" class="tab-content">
|
||||
<div class="highlight">
|
||||
<h3>🔍 Technische Details</h3>
|
||||
<p>Detaillierte Übersicht über die implementierten Komponenten und deren Funktionalität.</p>
|
||||
</div>
|
||||
|
||||
<div class="flow-diagram">
|
||||
<h3>🔄 Chat-Workflow Ablauf</h3>
|
||||
<div class="flow-step">
|
||||
<div class="flow-number">1</div>
|
||||
<div class="flow-description">
|
||||
<div class="flow-title">User Input & Prompt</div>
|
||||
<div class="flow-details">Benutzer gibt Anfrage ein, wählt Agenten und lädt Dokumente hoch</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flow-step">
|
||||
<div class="flow-number">2</div>
|
||||
<div class="flow-description">
|
||||
<div class="flow-title">Task Plan Generation</div>
|
||||
<div class="flow-details">AI erstellt strukturierten Arbeitsplan mit spezifischen Tasks</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flow-step">
|
||||
<div class="flow-number">3</div>
|
||||
<div class="flow-description">
|
||||
<div class="flow-title">Document Extraction</div>
|
||||
<div class="flow-details">Automatische Extraktion und Chunking von Dokumenten (PDF, Office, etc.)</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flow-step">
|
||||
<div class="flow-number">4</div>
|
||||
<div class="flow-description">
|
||||
<div class="flow-title">Action Execution</div>
|
||||
<div class="flow-details">Spezialisierte Methoden führen Tasks aus (Web, SharePoint, AI, etc.)</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flow-step">
|
||||
<div class="flow-number">5</div>
|
||||
<div class="flow-description">
|
||||
<div class="flow-title">Document Generation</div>
|
||||
<div class="flow-details">Erstellung neuer Dokumente basierend auf den Ergebnissen</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flow-step">
|
||||
<div class="flow-number">6</div>
|
||||
<div class="flow-description">
|
||||
<div class="flow-title">Result Aggregation</div>
|
||||
<div class="flow-details">Zusammenführung aller Ergebnisse und Handover zwischen Schritten</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="highlight">
|
||||
<h3>🏗️ ServiceCenter Übersicht</h3>
|
||||
<p>Das ServiceCenter ist die zentrale Komponente für die dynamische Methoden-Entdeckung und -Ausführung:</p>
|
||||
<ul>
|
||||
<li><strong>Dynamische Methoden-Entdeckung:</strong> Reflection-basierte Erkennung aller verfügbaren Services</li>
|
||||
<li><strong>Einheitliche Schnittstelle:</strong> Standardisierte API für alle Methoden</li>
|
||||
<li><strong>Dokumenten-Management:</strong> Zentrale Verwaltung von Uploads, Extraktion und Chunking</li>
|
||||
<li><strong>AI-Call-Interface:</strong> Integration mit verschiedenen AI-Providern (OpenAI, Anthropic, lokale Modelle)</li>
|
||||
<li><strong>Task-Orchestrierung:</strong> Koordination der Ausführung von komplexen Workflows</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="highlight">
|
||||
<h3>⚙️ Verfügbare Methoden & Actions</h3>
|
||||
<div class="method-grid">
|
||||
<div class="method-card">
|
||||
<h4>🌐 Web-Recherche</h4>
|
||||
<ul>
|
||||
<li>Web-Scraping</li>
|
||||
<li>Suchmaschinen-Integration</li>
|
||||
<li>Content-Extraktion</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="method-card">
|
||||
<h4>📁 SharePoint</h4>
|
||||
<ul>
|
||||
<li>Dokumenten-Management</li>
|
||||
<li>Suche & Indexierung</li>
|
||||
<li>Schreib-Operationen</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="method-card">
|
||||
<h4>📧 Outlook</h4>
|
||||
<ul>
|
||||
<li>E-Mail-Verwaltung</li>
|
||||
<li>Ordner-Management</li>
|
||||
<li>Kalender-Integration</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="method-card">
|
||||
<h4>📄 Dokumente</h4>
|
||||
<ul>
|
||||
<li>PDF, Office, Bilder</li>
|
||||
<li>AI-basierte Extraktion</li>
|
||||
<li>Intelligentes Chunking</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="method-card">
|
||||
<h4>🤖 AI-Integration</h4>
|
||||
<ul>
|
||||
<li>Multi-Provider Support</li>
|
||||
<li>Prompt-Engineering</li>
|
||||
<li>Kontext-basierte Antworten</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="method-card">
|
||||
<h4>📊 Excel-Verarbeitung</h4>
|
||||
<ul>
|
||||
<li>Datenanalyse</li>
|
||||
<li>Visualisierung</li>
|
||||
<li>Berichterstattung</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Outlook Tab -->
|
||||
<div id="outlook" class="tab-content">
|
||||
<div class="highlight">
|
||||
<h3>🚀 Zukünftige Entwicklungen</h3>
|
||||
<p>Roadmap für die nächsten Entwicklungsphasen nach dem Go-Live.</p>
|
||||
</div>
|
||||
|
||||
<div class="status-grid">
|
||||
<div class="status-card pending">
|
||||
<div class="card-header">
|
||||
<div class="status-icon pending">🔮</div>
|
||||
<h3 class="card-title">Workflow Manager</h3>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<strong>Phase 2 (Q4 2025)</strong><br>
|
||||
• Workflow Modellierung<br>
|
||||
• Visueller Workflow-Designer<br>
|
||||
• Template-Bibliothek
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="status-card pending">
|
||||
<div class="card-header">
|
||||
<div class="status-icon pending">🔗</div>
|
||||
<h3 class="card-title">Kunden-Integration</h3>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<strong>Phase 3 (Q1 2026)</strong><br>
|
||||
• Voice Integration mit SPITCH<br>
|
||||
• Nahtlose Integration in Kundensysteme<br>
|
||||
• My-Connectors für ERP/CRM<br>
|
||||
• Business Intelligence Tools
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="status-card pending">
|
||||
<div class="card-header">
|
||||
<div class="status-icon pending">⚡</div>
|
||||
<h3 class="card-title">Automatisierung</h3>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<strong>Phase 4 (Q2 2026)</strong><br>
|
||||
• Automatisierte Workflows mit Triggers<br>
|
||||
• Event Handler Integration<br>
|
||||
• Scheduled Tasks<br>
|
||||
• Proaktive Benachrichtigungen
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="status-card pending">
|
||||
<div class="card-header">
|
||||
<div class="status-icon pending">🌍</div>
|
||||
<h3 class="card-title">Skalierung</h3>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<strong>Phase 5 (Q3+4 2026)</strong><br>
|
||||
• Multi-Tenant Architektur<br>
|
||||
• Internationale Expansion<br>
|
||||
• Agenten-Marktplatz<br>
|
||||
• Branchenspezifische Lösungen
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="highlight">
|
||||
<h3>🎯 My-Connectors Vision</h3>
|
||||
<p>Die My-Connectors werden es Kunden ermöglichen, PowerOn nahtlos in ihre bestehenden Systeme zu integrieren:</p>
|
||||
<ul>
|
||||
<li><strong>ERP/CRM Integration:</strong> Direkte Verbindung zu SAP, Salesforce, Microsoft Dynamics</li>
|
||||
<li><strong>Cloud-Services:</strong> Integration mit AWS, Azure, Google Cloud</li>
|
||||
<li><strong>Datenbanken:</strong> Verbindung zu SQL, NoSQL, Graph-Datenbanken</li>
|
||||
<li><strong>API-Management:</strong> Einheitliche Schnittstelle für alle externen Systeme</li>
|
||||
<li><strong>Custom Connectors:</strong> Kundenspezifische Integrationen über SDK</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p><strong>PowerOn AI Platform</strong> - Methodenbasierter Multi-Agent AI-Chat</p>
|
||||
<p>Status aktualisiert: August 2025 | Version: 2.1.0 | Patrick Motsch</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function showTab(tabName) {
|
||||
// Hide all tab contents
|
||||
const tabContents = document.querySelectorAll('.tab-content');
|
||||
tabContents.forEach(content => {
|
||||
content.classList.remove('active');
|
||||
});
|
||||
|
||||
// Remove active class from all tabs
|
||||
const tabs = document.querySelectorAll('.tab');
|
||||
tabs.forEach(tab => {
|
||||
tab.classList.remove('active');
|
||||
});
|
||||
|
||||
// Show selected tab content
|
||||
document.getElementById(tabName).classList.add('active');
|
||||
|
||||
// Add active class to clicked tab
|
||||
event.target.classList.add('active');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
Binary file not shown.
863
spitch/spitch_integration_specification.html
Normal file
863
spitch/spitch_integration_specification.html
Normal file
|
|
@ -0,0 +1,863 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Spitch.ch Integration Technical Specification - PowerOn Platform</title>
|
||||
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||
line-height: 1.6;
|
||||
margin: 0;
|
||||
padding: 20px;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
background-color: white;
|
||||
padding: 30px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
|
||||
}
|
||||
h1 {
|
||||
color: #2c3e50;
|
||||
border-bottom: 3px solid #3498db;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
h2 {
|
||||
color: #34495e;
|
||||
border-left: 4px solid #3498db;
|
||||
padding-left: 15px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
h3 {
|
||||
color: #2c3e50;
|
||||
margin-top: 25px;
|
||||
}
|
||||
.mermaid {
|
||||
text-align: center;
|
||||
margin: 20px 0;
|
||||
padding: 20px;
|
||||
background-color: #f8f9fa;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.code-block {
|
||||
background-color: #f4f4f4;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 4px;
|
||||
padding: 15px;
|
||||
margin: 15px 0;
|
||||
overflow-x: auto;
|
||||
font-family: 'Courier New', monospace;
|
||||
white-space: pre;
|
||||
line-height: 1.4;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.code-block code {
|
||||
display: block;
|
||||
white-space: pre;
|
||||
overflow-x: auto;
|
||||
}
|
||||
.highlight {
|
||||
background-color: #fff3cd;
|
||||
border: 1px solid #ffeaa7;
|
||||
padding: 15px;
|
||||
border-radius: 4px;
|
||||
margin: 15px 0;
|
||||
}
|
||||
.cost-estimate {
|
||||
background-color: #d4edda;
|
||||
border: 1px solid #c3e6cb;
|
||||
padding: 20px;
|
||||
border-radius: 4px;
|
||||
margin: 20px 0;
|
||||
}
|
||||
.implementation-steps {
|
||||
background-color: #e2e3e5;
|
||||
border: 1px solid #d6d8db;
|
||||
padding: 20px;
|
||||
border-radius: 4px;
|
||||
margin: 20px 0;
|
||||
}
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin: 20px 0;
|
||||
}
|
||||
th, td {
|
||||
border: 1px solid #ddd;
|
||||
padding: 12px;
|
||||
text-align: left;
|
||||
}
|
||||
th {
|
||||
background-color: #f8f9fa;
|
||||
font-weight: bold;
|
||||
}
|
||||
.endpoint-table th {
|
||||
background-color: #e3f2fd;
|
||||
}
|
||||
.model-table th {
|
||||
background-color: #f3e5f5;
|
||||
}
|
||||
.ui-table th {
|
||||
background-color: #e8f5e8;
|
||||
}
|
||||
|
||||
/* Additional styling for better code block structure */
|
||||
.code-block pre {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
white-space: pre;
|
||||
font-family: inherit;
|
||||
}
|
||||
|
||||
.code-block .field-line {
|
||||
display: block;
|
||||
margin: 2px 0;
|
||||
padding: 2px 0;
|
||||
}
|
||||
|
||||
.code-block .indent {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
/* Python code specific styling */
|
||||
.python-code {
|
||||
background-color: #f8f8f8;
|
||||
border-left: 4px solid #3572A5;
|
||||
padding: 20px;
|
||||
margin: 20px 0;
|
||||
border-radius: 4px;
|
||||
font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
|
||||
font-size: 13px;
|
||||
line-height: 1.5;
|
||||
white-space: pre;
|
||||
overflow-x: auto;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>Spitch.ch Integration Technical Specification</h1>
|
||||
<p><strong>PowerOn Platform</strong> | <em>Version 1.0</em> | <em>Date: August 2025</em></p>
|
||||
|
||||
<div class="highlight">
|
||||
<h3>📋 Executive Summary</h3>
|
||||
<p>Technical specification for integrating spitch.ch telephone service into PowerOn platform. Enables external customers to call companies via phone, interact with AI using mandate-specific data, and stores call transcripts in PowerOn database.</p>
|
||||
</div>
|
||||
|
||||
<h2>1. Project Overview</h2>
|
||||
|
||||
<h3>1.1 Integration Scope</h3>
|
||||
<ul>
|
||||
<li>New "spitch" router for external service communication</li>
|
||||
<li>Enhanced mandate management with spitch-specific data</li>
|
||||
<li>New call transcript data model and storage</li>
|
||||
<li>Frontend UI for mandate-user management and call permissions</li>
|
||||
<li>API key authentication for external service endpoints</li>
|
||||
<li><strong>NEW:</strong> Customer registration workflow for telephone service</li>
|
||||
<li><strong>NEW:</strong> Document content extraction engine integration</li>
|
||||
</ul>
|
||||
|
||||
<h3>1.2 Service Logic Summary</h3>
|
||||
|
||||
<h4>PowerOn Side:</h4>
|
||||
<ul>
|
||||
<li>Stores mandate-specific customer data (general info, staff, services, FAQs)</li>
|
||||
<li>Receives and stores call transcripts from spitch.ch</li>
|
||||
<li>Provides customer data to spitch.ch via API endpoints</li>
|
||||
<li>Manages user permissions for call data access</li>
|
||||
<li>Maintains mandate isolation and security</li>
|
||||
<li><strong>NEW:</strong> Generates AI-powered documents for Spitch using document content extraction engine</li>
|
||||
<li><strong>NEW:</strong> Manages customer registration workflow for telephone service</li>
|
||||
</ul>
|
||||
|
||||
<h4>Spitch.ch Side:</h4>
|
||||
<ul>
|
||||
<li>Receives customer data from PowerOn for AI conversation context</li>
|
||||
<li>Handles phone calls and AI conversations with customers</li>
|
||||
<li>Sends call transcripts back to PowerOn for storage</li>
|
||||
<li>Uses mandate-specific data to personalize customer interactions</li>
|
||||
<li><strong>NEW:</strong> Creates technical SIP numbers for customers</li>
|
||||
<li><strong>NEW:</strong> Operates calls independently as a service</li>
|
||||
</ul>
|
||||
|
||||
<h3>1.3 Product Manager View - Customer Journey</h3>
|
||||
<div class="highlight">
|
||||
<h4>🎯 Streamlined Customer Journey (Confirmed by Spitch PM Vadim)</h4>
|
||||
<ol>
|
||||
<li><strong>Customer Registration:</strong> Customer registers with PowerOn for telephone service with company profile</li>
|
||||
<li><strong>Initial Setup:</strong> Initially manual, final workflow-driven where customer drops documents into the box and provides links and text fragments</li>
|
||||
<li><strong>Integration:</strong> This becomes another connector like Outlook or SharePoint</li>
|
||||
<li><strong>Profile Transfer:</strong> PowerOn sends new customer profile to Spitch</li>
|
||||
<li><strong>Technical Setup:</strong> Spitch initializes customer and creates technical SIP number</li>
|
||||
<li><strong>Call Forwarding:</strong> Customer sets up call forwarding to the technical number (can remove anytime if issues arise - ensuring BCM safety)</li>
|
||||
<li><strong>Document Generation:</strong> PowerOn AI generates documents for Spitch (already active, document content extraction engine)</li>
|
||||
<li><strong>Ready State:</strong> Customer can switch their phone number to the technical number (SIP) anytime, saving telephony costs</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<h3>1.4 Data Synchronization Approach</h3>
|
||||
<div class="highlight">
|
||||
<h4>🔄 Data Flow Strategy (Confirmed by Spitch PM Vadim)</h4>
|
||||
<ul>
|
||||
<li><strong>Independent Call Operation:</strong> Spitch operates calls independently as a service</li>
|
||||
<li><strong>Regular Data Sync:</strong> Spitch reads current documents per customer from PowerOn API daily</li>
|
||||
<li><strong>Real-time Transcripts:</strong> Spitch feeds call transcripts to PowerOn API after each call</li>
|
||||
<li><strong>JSON Document Format:</strong> Spitch receives a JSON document per customer, no files</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<h2>2. System Architecture Overview</h2>
|
||||
|
||||
<div class="mermaid">
|
||||
graph TB
|
||||
subgraph "External Services"
|
||||
SP[spitch.ch Service]
|
||||
AI[AI Conversation Engine]
|
||||
end
|
||||
|
||||
subgraph "PowerOn Platform"
|
||||
subgraph "API Layer"
|
||||
SR[Spitch Router]
|
||||
MR[Mandate Router]
|
||||
UR[User Router]
|
||||
AR[Auth Router]
|
||||
end
|
||||
|
||||
subgraph "Business Logic"
|
||||
SM[Spitch Manager]
|
||||
MM[Mandate Manager]
|
||||
UM[User Manager]
|
||||
AM[Auth Manager]
|
||||
end
|
||||
|
||||
subgraph "Data Layer"
|
||||
DB[(JSON Database)]
|
||||
CD[Customer Data]
|
||||
CT[Call Transcripts]
|
||||
MD[Mandates]
|
||||
US[Users]
|
||||
end
|
||||
|
||||
subgraph "Frontend"
|
||||
UI[User Interface]
|
||||
MM_UI[Mandate Management]
|
||||
UM_UI[User Management]
|
||||
CT_UI[Call Transcripts]
|
||||
end
|
||||
end
|
||||
|
||||
SP --> SR
|
||||
AI --> SR
|
||||
SR --> SM
|
||||
SM --> DB
|
||||
MM --> DB
|
||||
UM --> DB
|
||||
AM --> DB
|
||||
UI --> MM_UI
|
||||
UI --> UM_UI
|
||||
UI --> CT_UI
|
||||
</div>
|
||||
|
||||
<h2>3. Data Models</h2>
|
||||
|
||||
<h3>3.1 Enhanced Mandate Model</h3>
|
||||
<div class="python-code">
|
||||
class Mandate(BaseModel, ModelMixin):
|
||||
id: str = Field(default_factory=lambda: str(uuid.uuid4()))
|
||||
name: str = Field(description="Name of the mandate")
|
||||
language: str = Field(default="en", description="Default language")
|
||||
enabled: bool = Field(default=True, description="Mandate status")
|
||||
spitch_enabled: bool = Field(default=False, description="Spitch service enabled")
|
||||
spitch_config: Optional[Dict[str, Any]] = Field(default=None, description="Spitch configuration")
|
||||
created_at: datetime = Field(default_factory=datetime.now)
|
||||
modified_at: datetime = Field(default_factory=datetime.now)
|
||||
created_by: str = Field(default="")
|
||||
modified_by: str = Field(default="")
|
||||
</div>
|
||||
|
||||
<h3>3.2 Spitch Customer Data Model</h3>
|
||||
<div class="python-code">
|
||||
class SpitchCustomerData(BaseModel, ModelMixin):
|
||||
id: str = Field(default_factory=lambda: str(uuid.uuid4()))
|
||||
mandateId: str = Field(description="Associated mandate ID")
|
||||
customer_general: Dict[str, Any] = Field(description="General customer information")
|
||||
customer_staff: List[Dict[str, Any]] = Field(description="Staff information")
|
||||
customer_service: List[Dict[str, Any]] = Field(description="Service information")
|
||||
customer_faq: List[Dict[str, Any]] = Field(description="FAQ data")
|
||||
mandates: List[Dict[str, Any]] = Field(description="List of customer mandates with data about main topics")
|
||||
contacts: List[Dict[str, Any]] = Field(description="List of contacts with phone numbers and references to mandates")
|
||||
last_updated: datetime = Field(default_factory=datetime.now)
|
||||
created_by: str = Field(description="User ID who created the data")
|
||||
modified_by: str = Field(description="User ID who last modified the data")
|
||||
</div>
|
||||
|
||||
<h3>3.3 Call Transcript Model</h3>
|
||||
<div class="python-code">
|
||||
class CallTranscript(BaseModel, ModelMixin):
|
||||
id: str = Field(default_factory=lambda: str(uuid.uuid4()))
|
||||
mandateId: str = Field(description="Associated mandate ID")
|
||||
start_datetime: datetime = Field(description="Call start time")
|
||||
finish_datetime: datetime = Field(description="Call end time")
|
||||
caller_phone: str = Field(description="Caller's phone number")
|
||||
recipient_phone: str = Field(description="Recipient's phone number")
|
||||
transcript_text: str = Field(description="Call transcript content")
|
||||
subject: str = Field(description="Call subject/topic")
|
||||
tags: List[str] = Field(default_factory=list, description="Call tags")
|
||||
spitch_call_id: str = Field(description="External spitch call identifier")
|
||||
created_at: datetime = Field(default_factory=datetime.now)
|
||||
created_by: str = Field(default="")
|
||||
</div>
|
||||
|
||||
<h3>3.4 Data Flow Diagram</h3>
|
||||
<div class="mermaid">
|
||||
sequenceDiagram
|
||||
participant S as spitch.ch
|
||||
participant P as PowerOn API
|
||||
participant D as Database
|
||||
participant F as Frontend
|
||||
|
||||
Note over S,D: Customer Data Retrieval
|
||||
S->>P: GET /api/spitch/customer-data/{mandateId}
|
||||
P->>D: Query customer data
|
||||
D->>P: Return customer data
|
||||
P->>S: Customer data response
|
||||
|
||||
Note over S,D: Call Transcript Storage
|
||||
S->>P: POST /api/spitch/transcript
|
||||
P->>D: Store call transcript
|
||||
D->>P: Confirmation
|
||||
P->>S: Success response
|
||||
|
||||
Note over F,D: Frontend Management
|
||||
F->>P: GET /api/mandates
|
||||
P->>D: Query mandates
|
||||
D->>P: Return mandates
|
||||
P->>F: Mandates data
|
||||
F->>P: GET /api/users
|
||||
P->>D: Query users
|
||||
D->>P: Return users
|
||||
P->>F: Users data
|
||||
</div>
|
||||
|
||||
<h2>4. Pilot Customer Data</h2>
|
||||
|
||||
<h3>4.1 Initial Pilot Customers</h3>
|
||||
<div class="highlight">
|
||||
<h4>Pilot Customer 1: ValueOn AG</h4>
|
||||
<ul>
|
||||
<li><strong>Company:</strong> ValueOn AG</li>
|
||||
<li><strong>Phone Number:</strong> +41 44 9437040</li>
|
||||
<li><strong>Provider:</strong> Swisscom Fixnet AG</li>
|
||||
<li><strong>Status:</strong> Ready for spitch.ch integration</li>
|
||||
</ul>
|
||||
|
||||
<h4>Pilot Customer 2: PamoCreate AG</h4>
|
||||
<ul>
|
||||
<li><strong>Company:</strong> PamoCreate AG</li>
|
||||
<li><strong>Phone Number:</strong> +41 55 2462345</li>
|
||||
<li><strong>Provider:</strong> iWay AG</li>
|
||||
<li><strong>Status:</strong> Ready for spitch.ch integration</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<h3>4.2 Pilot Customer Setup Requirements</h3>
|
||||
<ul>
|
||||
<li>Mandate creation in PowerOn with spitch_enabled = True</li>
|
||||
<li>Customer data population (general info, staff, services, FAQs)</li>
|
||||
<li>Phone number mapping configuration in spitch.ch system</li>
|
||||
<li>Test call validation and transcript storage verification</li>
|
||||
<li>User permission setup for call data access</li>
|
||||
</ul>
|
||||
|
||||
<h2>5. Spitch.ch Service Perspective</h2>
|
||||
|
||||
<h3>5.1 Data Received from PowerOn per Customer/Mandate</h3>
|
||||
<div class="code-block">
|
||||
{
|
||||
"mandateId": "uuid-string",
|
||||
"customer_general": {
|
||||
"company_name": "Company Name",
|
||||
"industry": "Industry Type",
|
||||
"contact_info": {
|
||||
"email": "contact@company.com",
|
||||
"phone": "+41 123 456 789",
|
||||
"address": "Company Address"
|
||||
},
|
||||
"business_hours": "9:00-17:00",
|
||||
"timezone": "Europe/Zurich"
|
||||
},
|
||||
"customer_staff": [
|
||||
{
|
||||
"name": "Staff Member Name",
|
||||
"role": "Position/Role",
|
||||
"department": "Department",
|
||||
"contact": "+41 123 456 789",
|
||||
"expertise": ["Area 1", "Area 2"]
|
||||
}
|
||||
],
|
||||
"customer_service": [
|
||||
{
|
||||
"service_name": "Service Name",
|
||||
"description": "Service Description",
|
||||
"pricing": "Price Information",
|
||||
"availability": "Availability Details",
|
||||
"requirements": ["Requirement 1", "Requirement 2"]
|
||||
}
|
||||
],
|
||||
"customer_faq": [
|
||||
{
|
||||
"question": "Frequently Asked Question",
|
||||
"answer": "Standard Answer",
|
||||
"category": "Question Category",
|
||||
"keywords": ["keyword1", "keyword2"]
|
||||
}
|
||||
],
|
||||
"mandates": [
|
||||
{
|
||||
"mandate_id": "uuid-string",
|
||||
"name": "Mandate Name",
|
||||
"main_topics": ["Topic 1", "Topic 2", "Topic 3"],
|
||||
"description": "Mandate description",
|
||||
"status": "active",
|
||||
"priority": "high"
|
||||
}
|
||||
],
|
||||
"contacts": [
|
||||
{
|
||||
"name": "Contact Person Name",
|
||||
"phone_number": "+41 123 456 789",
|
||||
"email": "contact@company.com",
|
||||
"role": "Contact Role",
|
||||
"mandate_references": ["uuid-string-1", "uuid-string-2"],
|
||||
"is_primary": true
|
||||
}
|
||||
]
|
||||
}
|
||||
</div>
|
||||
|
||||
<h3>5.2 Data Delivered to PowerOn per Call</h3>
|
||||
<div class="code-block">
|
||||
{
|
||||
"mandateId": "uuid-string",
|
||||
"start_datetime": "2025-01-15T10:30:00Z",
|
||||
"finish_datetime": "2025-01-15T10:45:00Z",
|
||||
"caller_phone": "+41 987 654 321",
|
||||
"recipient_phone": "+41 123 456 789",
|
||||
"transcript_text": "Full conversation transcript...",
|
||||
"subject": "Service Inquiry",
|
||||
"tags": ["service", "inquiry", "new-customer"],
|
||||
"spitch_call_id": "spitch-call-uuid-123"
|
||||
}
|
||||
</div>
|
||||
|
||||
<h3>5.3 Call Processing Workflow</h3>
|
||||
<ol>
|
||||
<li>Customer calls spitch.ch service</li>
|
||||
<li>spitch.ch identifies mandate based on phone number</li>
|
||||
<li>spitch.ch requests customer data from PowerOn API</li>
|
||||
<li>AI uses customer data for personalized conversation</li>
|
||||
<li>Call concludes, transcript generated</li>
|
||||
<li>spitch.ch sends transcript to PowerOn for storage</li>
|
||||
</ol>
|
||||
|
||||
<h2>6. API Endpoints</h2>
|
||||
|
||||
<h3>6.1 Spitch Router Endpoints</h3>
|
||||
<table class="endpoint-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Endpoint</th>
|
||||
<th>Method</th>
|
||||
<th>Description</th>
|
||||
<th>Authentication</th>
|
||||
<th>Rate Limit</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>/api/spitch/customer-data/{mandateId}</td>
|
||||
<td>GET</td>
|
||||
<td>Retrieve customer data for a specific mandate</td>
|
||||
<td>API Key</td>
|
||||
<td>100/minute</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>/api/spitch/customer-data/{mandateId}?since={date}</td>
|
||||
<td>GET</td>
|
||||
<td>Retrieve changed customer data since specific date</td>
|
||||
<td>API Key</td>
|
||||
<td>100/minute</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>/api/spitch/transcript</td>
|
||||
<td>POST</td>
|
||||
<td>Store call transcript for a mandate</td>
|
||||
<td>API Key</td>
|
||||
<td>50/minute</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>6.2 Enhanced Mandate Endpoints</h3>
|
||||
<table class="endpoint-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Endpoint</th>
|
||||
<th>Method</th>
|
||||
<th>Description</th>
|
||||
<th>Authentication</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>/api/mandates/{mandateId}/spitch-config</td>
|
||||
<td>PUT</td>
|
||||
<td>Update spitch configuration for mandate</td>
|
||||
<td>JWT (Admin/SysAdmin)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>/api/mandates/{mandateId}/customer-data</td>
|
||||
<td>GET</td>
|
||||
<td>Get customer data for mandate</td>
|
||||
<td>JWT</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>/api/mandates/{mandateId}/customer-data</td>
|
||||
<td>PUT</td>
|
||||
<td>Update customer data for mandate</td>
|
||||
<td>JWT (Admin/SysAdmin)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2>7. Security Implementation</h2>
|
||||
|
||||
<h3>7.1 API Key Authentication</h3>
|
||||
<div class="python-code">
|
||||
# New security middleware for spitch endpoints
|
||||
class SpitchAPIKeyAuth:
|
||||
def __init__(self, api_keys: List[str]):
|
||||
self.api_keys = set(api_keys)
|
||||
|
||||
async def __call__(self, request: Request):
|
||||
api_key = request.headers.get("X-API-Key")
|
||||
if not api_key or api_key not in self.api_keys:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_401_UNAUTHORIZED,
|
||||
detail="Invalid API key"
|
||||
)
|
||||
return api_key
|
||||
</div>
|
||||
|
||||
<h3>7.2 Rate Limiting</h3>
|
||||
<ul>
|
||||
<li><strong>Customer Data Retrieval:</strong> 100 requests per minute per API key</li>
|
||||
<li><strong>Transcript Storage:</strong> 50 requests per minute per API key</li>
|
||||
<li><strong>IP-based Limiting:</strong> Additional protection against abuse</li>
|
||||
</ul>
|
||||
|
||||
<h3>7.3 Mandate Isolation</h3>
|
||||
<ul>
|
||||
<li>All data queries filtered by mandate ID</li>
|
||||
<li>Users can only access data from their assigned mandate</li>
|
||||
<li>API key requests validated against mandate permissions</li>
|
||||
</ul>
|
||||
|
||||
<h2>8. Frontend Implementation</h2>
|
||||
|
||||
<h3>8.1 Enhanced Mandate Management UI</h3>
|
||||
<div class="mermaid">
|
||||
graph LR
|
||||
subgraph "Mandate Management"
|
||||
ML[Mandate List]
|
||||
MF[Mandate Form]
|
||||
SC[Spitch Config]
|
||||
CD[Customer Data]
|
||||
end
|
||||
|
||||
subgraph "User Management"
|
||||
UL[User List]
|
||||
UF[User Form]
|
||||
UP[User Permissions]
|
||||
CP[Call Permissions]
|
||||
end
|
||||
|
||||
subgraph "Call Transcripts"
|
||||
CTL[Transcript List]
|
||||
CTF[Transcript Filter]
|
||||
CTV[Transcript View]
|
||||
CTA[Transcript Analytics]
|
||||
end
|
||||
|
||||
ML --> MF
|
||||
MF --> SC
|
||||
MF --> CD
|
||||
UL --> UF
|
||||
UF --> UP
|
||||
UP --> CP
|
||||
CTL --> CTF
|
||||
CTF --> CTV
|
||||
CTV --> CTA
|
||||
</div>
|
||||
|
||||
<h3>8.2 New UI Components</h3>
|
||||
<table class="ui-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Component</th>
|
||||
<th>File</th>
|
||||
<th>Description</th>
|
||||
<th>Dependencies</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>SpitchConfigPanel</td>
|
||||
<td>js/modules/spitchConfig.js</td>
|
||||
<td>Mandate spitch configuration management</td>
|
||||
<td>formGeneric.js, apiCalls.js</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CustomerDataManager</td>
|
||||
<td>js/modules/customerData.js</td>
|
||||
<td>Customer data CRUD operations</td>
|
||||
<td>formGeneric.js, apiCalls.js</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CallTranscriptsView</td>
|
||||
<td>js/modules/callTranscripts.js</td>
|
||||
<td>Call transcript display and filtering</td>
|
||||
<td>formGeneric.js, apiCalls.js</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>UserCallPermissions</td>
|
||||
<td>js/modules/userCallPermissions.js</td>
|
||||
<td>User permissions for call data access</td>
|
||||
<td>formGeneric.js, apiCalls.js</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2>9. Implementation Sprints</h2>
|
||||
|
||||
<div class="implementation-steps">
|
||||
<h3>Sprint 1: Backend Foundation (2 weeks)</h3>
|
||||
<ul>
|
||||
<li>Create new data models (SpitchCustomerData, CallTranscript)</li>
|
||||
<li>Enhance existing Mandate model with spitch fields</li>
|
||||
<li>Implement spitch router with basic endpoints</li>
|
||||
<li>Add API key authentication middleware</li>
|
||||
<li>Create database migration scripts</li>
|
||||
</ul>
|
||||
<p><strong>Package Price: 18,000 CHF</strong></p>
|
||||
|
||||
<h3>Sprint 2: Core API Implementation (2 weeks)</h3>
|
||||
<ul>
|
||||
<li>Implement customer data retrieval endpoints</li>
|
||||
<li>Implement call transcript storage endpoints</li>
|
||||
<li>Add rate limiting and security measures</li>
|
||||
<li>Create comprehensive error handling</li>
|
||||
<li>Write API documentation and tests</li>
|
||||
</ul>
|
||||
<p><strong>Package Price: 20,000 CHF</strong></p>
|
||||
|
||||
<h3>Sprint 3: Frontend Development (2 weeks)</h3>
|
||||
<ul>
|
||||
<li>Create spitch configuration UI components</li>
|
||||
<li>Implement customer data management interface</li>
|
||||
<li>Build call transcript viewing and filtering</li>
|
||||
<li>Add user permission management for call data</li>
|
||||
<li>Integrate with existing mandate/user management</li>
|
||||
</ul>
|
||||
<p><strong>Package Price: 22,000 CHF</strong></p>
|
||||
|
||||
<h3>Sprint 4: Testing & Integration (2 weeks)</h3>
|
||||
<ul>
|
||||
<li>End-to-end testing with spitch.ch service</li>
|
||||
<li>Performance testing and optimization</li>
|
||||
<li>Security audit and penetration testing</li>
|
||||
<li>User acceptance testing</li>
|
||||
<li>Production deployment preparation</li>
|
||||
</ul>
|
||||
<p><strong>Package Price: 20,000 CHF</strong></p>
|
||||
</div>
|
||||
|
||||
<h2>10. Project Pricing</h2>
|
||||
|
||||
<div class="cost-estimate">
|
||||
<h3>Sprint Package Pricing</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Sprint</th>
|
||||
<th>Duration</th>
|
||||
<th>Package Price (CHF)</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Sprint 1</td>
|
||||
<td>2 weeks</td>
|
||||
<td>18,000</td>
|
||||
<td>Backend Foundation</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Sprint 2</td>
|
||||
<td>2 weeks</td>
|
||||
<td>20,000</td>
|
||||
<td>Core API Implementation</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Sprint 3</td>
|
||||
<td>2 weeks</td>
|
||||
<td>22,000</td>
|
||||
<td>Frontend Development</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Sprint 4</td>
|
||||
<td>2 weeks</td>
|
||||
<td>20,000</td>
|
||||
<td>Testing & Integration</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Total Project</strong></td>
|
||||
<td><strong>8 weeks</strong></td>
|
||||
<td><strong>80,000</strong></td>
|
||||
<td><strong>Complete Integration</strong></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>Investment Schedule</h3>
|
||||
<ul>
|
||||
<li><strong>Sprint 1:</strong> 18,000 CHF (upon completion)</li>
|
||||
<li><strong>Sprint 2:</strong> 20,000 CHF (upon completion)</li>
|
||||
<li><strong>Sprint 3:</strong> 22,000 CHF (upon completion)</li>
|
||||
<li><strong>Sprint 4:</strong> 20,000 CHF (upon completion)</li>
|
||||
</ul>
|
||||
|
||||
<h3>Project Scope</h3>
|
||||
<ul>
|
||||
<li>Complete backend API implementation</li>
|
||||
<li>Full frontend UI development</li>
|
||||
<li>Comprehensive testing and security audit</li>
|
||||
<li>Production deployment and documentation</li>
|
||||
<li>Post-deployment support (2 weeks)</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<h2>11. Risk Assessment</h2>
|
||||
|
||||
<h3>11.1 Technical Risks</h3>
|
||||
<ul>
|
||||
<li><strong>API Integration Complexity:</strong> External service dependencies may cause reliability issues</li>
|
||||
<li><strong>Data Volume:</strong> High call volume could impact database performance</li>
|
||||
<li><strong>Security Vulnerabilities:</strong> New endpoints increase attack surface</li>
|
||||
</ul>
|
||||
|
||||
<h3>11.2 Mitigation Strategies</h3>
|
||||
<ul>
|
||||
<li>Implement comprehensive error handling and fallback mechanisms</li>
|
||||
<li>Add database indexing and archiving strategies for call transcripts</li>
|
||||
<li>Regular security audits and penetration testing</li>
|
||||
<li>Implement monitoring and alerting for all new endpoints</li>
|
||||
</ul>
|
||||
|
||||
<h2>12. Success Metrics</h2>
|
||||
|
||||
<h3>12.1 Technical Metrics</h3>
|
||||
<ul>
|
||||
<li>API response time < 200ms for customer data retrieval</li>
|
||||
<li>99.9% uptime for spitch integration endpoints</li>
|
||||
<li>Zero data loss for call transcripts</li>
|
||||
<li>Successful integration with spitch.ch service</li>
|
||||
</ul>
|
||||
|
||||
<h3>12.2 Business Metrics</h3>
|
||||
<ul>
|
||||
<li>Reduced customer service response time</li>
|
||||
<li>Improved customer satisfaction through AI-powered phone support</li>
|
||||
<li>Increased mandate engagement and retention</li>
|
||||
<li>Cost savings through automated customer interactions</li>
|
||||
</ul>
|
||||
|
||||
<h2>13. Conclusion</h2>
|
||||
|
||||
<p>The spitch.ch integration extends PowerOn platform capabilities for external telephone service integration while maintaining existing security and mandate isolation principles. Implementation follows established patterns and leverages existing infrastructure for maintainability and scalability.</p>
|
||||
|
||||
<p>Total project cost: CHF 80,000 for complete integration delivered in 8 weeks across 4 sprints.</p>
|
||||
|
||||
<h2>14. Project Status & Next Steps</h2>
|
||||
|
||||
<div class="highlight">
|
||||
<h3>📞 Final Q&A Session Results (Spitch PM Vadim)</h3>
|
||||
<p><strong>Status:</strong> All questions clarified and requirements confirmed. Project is ready to proceed.</p>
|
||||
</div>
|
||||
|
||||
<h3>14.1 Confirmed Requirements</h3>
|
||||
<ul>
|
||||
<li><strong>Customer Journey:</strong> Streamlined workflow confirmed - customer registration → profile transfer → SIP setup → call forwarding</li>
|
||||
<li><strong>Data Format:</strong> JSON document per customer (no files) with enhanced mandates[] and contacts[] attributes</li>
|
||||
<li><strong>Integration Approach:</strong> PowerOn as another connector (like Outlook/SharePoint) with document content extraction engine</li>
|
||||
<li><strong>BCM Safety:</strong> Customers can remove call forwarding anytime if issues arise</li>
|
||||
<li><strong>Cost Savings:</strong> Customers can switch to SIP numbers to save telephony costs</li>
|
||||
</ul>
|
||||
|
||||
<h3>14.2 Next Steps Timeline</h3>
|
||||
<div class="implementation-steps">
|
||||
<ol>
|
||||
<li><strong>This Week:</strong> Spitch team calculates costs and timeline</li>
|
||||
<li><strong>Next Week:</strong> Vadim informs Alexey for implementation decision</li>
|
||||
<li><strong>Following Week:</strong> Call with Dominic and Alexey for launch approval</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<h3>14.3 Key Benefits Confirmed</h3>
|
||||
<ul>
|
||||
<li><strong>Customer Experience:</strong> Seamless integration with existing PowerOn workflows</li>
|
||||
<li><strong>Technical Efficiency:</strong> Leverages existing document content extraction engine</li>
|
||||
<li><strong>Business Continuity:</strong> BCM-safe with removable call forwarding</li>
|
||||
<li><strong>Cost Optimization:</strong> Potential telephony cost savings through SIP integration</li>
|
||||
<li><strong>Scalability:</strong> Framework for additional external service integrations</li>
|
||||
</ul>
|
||||
|
||||
<div class="highlight">
|
||||
<h3>📞 Next Steps</h3>
|
||||
<ol>
|
||||
<li>Review technical specification</li>
|
||||
<li>Establish development timeline</li>
|
||||
<li>Begin Phase 1 implementation</li>
|
||||
<li>Schedule progress reviews</li>
|
||||
<li>Plan implementation deployment</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<hr style="margin: 40px 0;">
|
||||
<p style="text-align: center; color: #666;">
|
||||
<em>Document Version: 1.1 | Last Updated: August 2025 | PowerOn Platform Team</em>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: 'default',
|
||||
securityLevel: 'loose',
|
||||
themeVariables: {
|
||||
primaryColor: '#3498db',
|
||||
primaryTextColor: '#2c3e50',
|
||||
primaryBorderColor: '#2980b9',
|
||||
lineColor: '#34495e',
|
||||
secondaryColor: '#ecf0f1',
|
||||
tertiaryColor: '#bdc3c7'
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in a new issue