chat implementiert

This commit is contained in:
2026-03-01 20:21:35 +00:00
parent 277bdc78d1
commit fe3a25fa3a
13 changed files with 360 additions and 29 deletions

View File

@@ -119,3 +119,44 @@ function applyTheme(theme) {
}
}
async function startDemoChat() {
try {
const response = await fetch('/api/v1/chats/new', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
// WICHTIG: Wenn dein Nginx den Token nicht setzt,
// muss er hier hin: 'Authorization': 'Bearer DEIN_TOKEN'
},
body: JSON.stringify({
"title": "Demo Chat",
"chat": { "model": "arcee-ai/trinity-large-preview:free"}
})
});
if (!response.ok) {
const errorData = await response.json();
console.error('API Fehlerdetails:', errorData);
throw new Error(`Fehler: ${response.status}`);
}
const data = await response.json();
const sessionId = data.id;
// --- DER KORREKTE DYNAMISCHE PFAD ---
// 1. Hole den aktuellen Sprachpfad (z.B. "/de/", "/en/")
// split('/') macht aus "/de/about/" -> ["", "de", "about", ""]
const pathSegments = window.location.pathname.split('/');
const lang = pathSegments[1] || 'de'; // Fallback auf "de", falls kein Pfad da ist
// 2. Leite auf den Pfad MIT Sprache und Session-ID um
// Das ergibt dann z.B. /de/chat/?session=...
window.location.href = `/${lang}/chat/?session=${sessionId}`;
//window.location.href = `/de/chat/?session=${sessionId}`;
} catch (error) {
console.error('Fehler beim Starten:', error);
alert('Demo-Chat konnte nicht gestartet werden.');
}
}

View File

@@ -258,23 +258,54 @@ nav {
}
/* ==========================================
4. BUTTONS
4. BUTTONS & INPUTS (Neu gestylt)
========================================== */
.cta-button {
display: inline-block;
background-color: var(--accent);
color: var(--accent-text);
padding: 1rem 2rem;
text-decoration: none;
/* Basis Styling für alle Buttons (CTA, Demo, Send) */
.cta-button,
.send-btn,
.demo-button,
.demo-buttons button {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0.8rem 1.8rem;
border-radius: 50px;
font-weight: bold;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
transition: all 0.3s ease;
text-decoration: none;
font-weight: 600;
font-size: 0.95rem;
transition: all 0.2s ease;
cursor: pointer;
border: none;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
}
.cta-button:hover {
transform: translateY(-2px);
/* Haupt-Buttons (Akzentfarbe) */
.cta-button,
.send-btn,
.demo-buttons button {
background-color: var(--accent);
color: var(--accent-text);
}
.cta-button:hover,
.send-btn:hover,
.demo-buttons button:hover {
background-color: var(--accent-dark);
transform: translateY(-2px);
box-shadow: 0 6px 15px rgba(0, 0, 0, 0.1);
}
/* Sekundär-Buttons (Grau/Alt) */
.demo-button {
background-color: var(--bg-section-alt);
color: var(--text-main);
border: 1px solid var(--border-color);
}
.demo-button:hover {
background-color: var(--border-color);
transform: translateY(-2px);
}
.demo-buttons {
@@ -286,18 +317,22 @@ nav {
margin-top: 2rem;
}
.demo-button {
background-color: var(--accent);
color: var(--accent-text);
padding: 0.6rem 1.4rem;
text-decoration: none;
border-radius: 25px;
transition: all 0.3s ease;
/* Eingabefeld (Chat) */
#user-input {
flex: 1;
padding: 12px 16px;
border: 1px solid var(--border-input);
border-radius: 8px;
background: var(--bg-input);
color: var(--text-input);
font-size: 1rem;
transition: all 0.2s ease;
}
.demo-button:hover {
background-color: var(--accent-dark);
transform: translateY(-2px);
#user-input:focus {
outline: none;
border-color: var(--accent);
box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.2);
}
/* ==========================================
@@ -308,7 +343,7 @@ section {
background-color: var(--bg-body);
}
.section-dark {
.section-dark .chat-input-area{
background-color: var(--bg-section-alt);
}
@@ -371,6 +406,60 @@ h2 {
}
/* Chat-Container Hintergrund korrigiert */
.chat-container {
max-width: 800px;
margin: 100px auto 20px;
display: flex;
flex-direction: column;
height: calc(100vh - 140px);
background: var(--card-bg); /* Nutzt Card Background Variable */
border-radius: 12px;
box-shadow: 0 10px 25px var(--card-shadow);
border: 1px solid var(--border-color);
overflow: hidden;
}
#chat-messages {
flex: 1;
overflow-y: auto;
padding: 20px;
display: flex;
flex-direction: column;
gap: 15px;
}
.message {
max-width: 80%;
padding: 12px 16px;
border-radius: 15px;
line-height: 1.5;
font-size: 0.95rem;
}
.user-message {
align-self: flex-end;
background-color: var(--accent);
color: var(--accent-text);
border-bottom-right-radius: 5px;
}
.ai-message {
align-self: flex-start;
background-color: var(--bg-section-alt);
color: var(--text-main);
border-bottom-left-radius: 5px;
}
.chat-input-area {
padding: 20px;
background-color: var(--card-bg);
border-top: 1px solid var(--border-color);
display: flex;
gap: 10px;
align-items: center;
}
/* ==========================================
6. FOOTER
========================================== */