Backup: Data-Ordner statt nur DB sichern, von Chat in Einstellungen verschoben
This commit is contained in:
1 parent
402fbc5a40
commit
8e585443e2
5 files changed
+33
-23
No files matched your search
@@ -17,10 +17,9 @@ public static class BackupEndpoint
|
|||||||
private static async System.Threading.Tasks.Task<IResult> HandleBackup()
|
private static async System.Threading.Tasks.Task<IResult> HandleBackup()
|
||||||
{
|
{
|
||||||
var dataDir = Path.Combine(AppContext.BaseDirectory, "data");
|
var dataDir = Path.Combine(AppContext.BaseDirectory, "data");
|
||||||
var dbPath = Path.Combine(dataDir, "gott.db");
|
|
||||||
|
|
||||||
if (!File.Exists(dbPath))
|
if (!Directory.Exists(dataDir))
|
||||||
return Results.NotFound(new { error = "Datenbank nicht gefunden" });
|
return Results.NotFound(new { error = "Data-Ordner nicht gefunden" });
|
||||||
|
|
||||||
var backupDir = Path.Combine(dataDir, "backup");
|
var backupDir = Path.Combine(dataDir, "backup");
|
||||||
Directory.CreateDirectory(backupDir);
|
Directory.CreateDirectory(backupDir);
|
||||||
@@ -32,7 +31,7 @@ public static class BackupEndpoint
|
|||||||
var psi = new ProcessStartInfo
|
var psi = new ProcessStartInfo
|
||||||
{
|
{
|
||||||
FileName = "tar",
|
FileName = "tar",
|
||||||
ArgumentList = { "-czf", archivePath, "-C", dataDir, "gott.db" },
|
ArgumentList = { "-czf", archivePath, "--exclude=backup", "-C", dataDir, "." },
|
||||||
RedirectStandardError = true,
|
RedirectStandardError = true,
|
||||||
UseShellExecute = false
|
UseShellExecute = false
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -5,6 +5,9 @@
|
|||||||
- [ ] System-Prompt: Nachrichten einer Session als Referenz und somit in den System-Prompt aufnehmen
|
- [ ] System-Prompt: Nachrichten einer Session als Referenz und somit in den System-Prompt aufnehmen
|
||||||
- [ ] Memory: Embedding-Modell für semantische Suche über Memory-Dateien (Vektor-basiert + BM25 Hybrid Search)
|
- [ ] Memory: Embedding-Modell für semantische Suche über Memory-Dateien (Vektor-basiert + BM25 Hybrid Search)
|
||||||
- [ ] Subagents: Möglichkeit Subagents zu starten und zu orchestrieren
|
- [ ] Subagents: Möglichkeit Subagents zu starten und zu orchestrieren
|
||||||
|
- [x] Im Chat: Menüpunkt "Datenbank sichern" entfernen und stattdessen in den Einstellungen platzieren. Außerdem soll nun nicht mehr nur die Datenbank gesichert werden, sondern der gesamte data-Ordner (der Unterordner backup muss natürlich exkludiert werden)
|
||||||
|
- [ ] Agents-Formular (nur beim Bearbeiten von vorhandenen Agent): Button der das File-Explorer Modal öffnet bei dem ich den Agent-Ordner sehe.
|
||||||
|
- [ ] Chat: Maximal 500 Nachrichten laden. Dauert sonst zu lange und der Browser wird langsam
|
||||||
|
|
||||||
## Bugs
|
## Bugs
|
||||||
- [x] Wenn gerade gestreamt wird und man refreshed die Seite, dann verliert das Frontend den Status "Streaming..." und ich kann eine Nachricht schreiben, obwohl das nicht möglich sein sollte
|
- [x] Wenn gerade gestreamt wird und man refreshed die Seite, dann verliert das Frontend den Status "Streaming..." und ich kann eine Nachricht schreiben, obwohl das nicht möglich sein sollte
|
||||||
@@ -17,5 +20,4 @@
|
|||||||
- [x] Chat: Es scrollt beim Laden nicht ganz nach unten, ich denke weil im DOM noch etwas nachgeladen wird (ich denke es ist die Schriftart), und die Höhe sich beim Laden nochmal verändert
|
- [x] Chat: Es scrollt beim Laden nicht ganz nach unten, ich denke weil im DOM noch etwas nachgeladen wird (ich denke es ist die Schriftart), und die Höhe sich beim Laden nochmal verändert
|
||||||
- [x] Chat: User-Nachrichten mit dem Tag [Datei: pfat/zur/datei.xyz:1-10] wird nicht als HTML geparsed
|
- [x] Chat: User-Nachrichten mit dem Tag [Datei: pfat/zur/datei.xyz:1-10] wird nicht als HTML geparsed
|
||||||
- [x] Chat: Wird zwar erkannt und ist klickbar, aber es öffnet sich einfach nur der File Explorer, ohne dass sich die Datei öffnet und die Darstellung in Monospace ist auch nicht schön
|
- [x] Chat: Wird zwar erkannt und ist klickbar, aber es öffnet sich einfach nur der File Explorer, ohne dass sich die Datei öffnet und die Darstellung in Monospace ist auch nicht schön
|
||||||
|
- [ ] Chat: Es werden momentan alle Tool-Calls angezeigt - die Anzeige soll individuell in den Einstellungen gemacht werden können. Auswahl aus drei Stufen: "Alle anzeigen" / "Nur Modifikationen" (file änderungen, memory änderungen, etc.) / "Verstecken"
|
||||||
## Backlog
|
|
||||||
+12
-1
@@ -164,7 +164,6 @@
|
|||||||
<div class="header-menu-dropdown" id="chatMenuDropdown" hidden>
|
<div class="header-menu-dropdown" id="chatMenuDropdown" hidden>
|
||||||
<button class="header-menu-item" id="systemPromptBtn">System-Prompt anzeigen</button>
|
<button class="header-menu-item" id="systemPromptBtn">System-Prompt anzeigen</button>
|
||||||
<button class="header-menu-item" id="archiveBtn">Archivieren</button>
|
<button class="header-menu-item" id="archiveBtn">Archivieren</button>
|
||||||
<button class="header-menu-item" id="backupDbBtn">Datenbank sichern</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
@@ -206,6 +205,18 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
<section class="settings-section">
|
||||||
|
<h2>Daten</h2>
|
||||||
|
<div class="setting-row">
|
||||||
|
<div class="setting-info">
|
||||||
|
<label>Backup erstellen</label>
|
||||||
|
<span class="setting-hint">Sichert den gesamten Data-Ordner (Datenbank, Agents, Memories)</span>
|
||||||
|
</div>
|
||||||
|
<div class="setting-control">
|
||||||
|
<button id="settingsBackupBtn">Jetzt sichern</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
<section class="settings-section settings-reset">
|
<section class="settings-section settings-reset">
|
||||||
<button id="settingsResetBtn" class="danger-btn">Alle Einstellungen zurücksetzen</button>
|
<button id="settingsResetBtn" class="danger-btn">Alle Einstellungen zurücksetzen</button>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -89,22 +89,6 @@ registerPage('chat', {
|
|||||||
clearChat();
|
clearChat();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Datenbank sichern
|
|
||||||
const backupDbBtn = document.getElementById('backupDbBtn');
|
|
||||||
if (backupDbBtn) backupDbBtn.addEventListener('click', async () => {
|
|
||||||
if (chatMenuDropdown) chatMenuDropdown.hidden = true;
|
|
||||||
backupDbBtn.disabled = true;
|
|
||||||
try {
|
|
||||||
await apiBackupDb();
|
|
||||||
setMetaHtml('<i class="fa fa-check-circle"></i> Backup erstellt und heruntergeladen');
|
|
||||||
} catch (e) {
|
|
||||||
console.error('Backup fehlgeschlagen:', e);
|
|
||||||
setMetaHtml('<i class="fa fa-times-circle"></i> Backup fehlgeschlagen');
|
|
||||||
} finally {
|
|
||||||
backupDbBtn.disabled = false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Custom Command Buttons ins Header-Menü einfügen
|
// Custom Command Buttons ins Header-Menü einfügen
|
||||||
if (chatMenuDropdown) {
|
if (chatMenuDropdown) {
|
||||||
// "System"-Label ganz oben einfügen
|
// "System"-Label ganz oben einfügen
|
||||||
|
|||||||
@@ -51,6 +51,20 @@ registerPage('settings', {
|
|||||||
applySettings();
|
applySettings();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const backupBtn = document.getElementById('settingsBackupBtn');
|
||||||
|
if (backupBtn) backupBtn.addEventListener('click', async () => {
|
||||||
|
backupBtn.disabled = true;
|
||||||
|
backupBtn.textContent = 'Wird erstellt...';
|
||||||
|
try {
|
||||||
|
await apiBackupDb();
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Backup fehlgeschlagen:', e);
|
||||||
|
} finally {
|
||||||
|
backupBtn.textContent = 'Jetzt sichern';
|
||||||
|
backupBtn.disabled = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
resetBtn.addEventListener('click', () => {
|
resetBtn.addEventListener('click', () => {
|
||||||
if (!confirm('Alle Einstellungen auf Standard zurücksetzen?')) return;
|
if (!confirm('Alle Einstellungen auf Standard zurücksetzen?')) return;
|
||||||
resetSettings();
|
resetSettings();
|
||||||
|
|||||||
Reference in new issue
Block a user