From fae5a9e5d08784e8734c61b8b8966d9300069c3b Mon Sep 17 00:00:00 2001 From: Sascha Date: Tue, 29 Sep 2026 08:29:23 +0200 Subject: [PATCH] GUI: Aufnahmedatum und -uhrzeit im Kopf der Detailansicht MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Neuer Helfer recStamp(r) formatiert created_at als "Di., 29.09.2026, 14:23 Uhr" und zeigt die Zeile in der .status-line vor der Analysezeit. Wer aus der Inhaltssuche, einem Projekt-Pin oder per Direktlink in die Detailansicht springt, hat in der linken Liste keine markierte Zeile und sah den Aufnahmezeitpunkt bisher nirgends. Keine Server-/DB-Änderung: /api/recordings/:id liefert created_at bereits mit. Doku: Changelog 2026-09-29 + Notiz in Kapitel 03. Co-Authored-By: Claude Opus 5 (1M context) --- app/web/src/main.js | 12 ++++++++++++ docs/03-aufnahme-pipeline.md | 3 +++ docs/08-changelog.md | 24 ++++++++++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/app/web/src/main.js b/app/web/src/main.js index 0b596f1..28da1bd 100644 --- a/app/web/src/main.js +++ b/app/web/src/main.js @@ -1028,6 +1028,17 @@ function jumpToRecording(id) { // ---------- Recordings ---------- // Analysis-duration counter. Shows the total wall time of a processing run // (transcribe+diar+LLM): a live 1-Hz counter while it runs (from analysis_started_at), +// Aufnahmedatum + Uhrzeit fuer die Detailansicht: aus der Suche heraus geoeffnet +// ist die Aufnahme in der linken Liste nicht markiert, der Zeitpunkt also nirgends sichtbar. +function recStamp(r) { + if (!r || !r.created_at) return ''; + const d = new Date(r.created_at); + if (isNaN(d)) return ''; + const day = d.toLocaleDateString('de-DE', { weekday: 'short', day: '2-digit', month: '2-digit', year: 'numeric' }); + const time = d.toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit' }); + return `${day}, ${time} Uhr`; +} + // frozen to analysis_ms once done. Returns the inner only; callers add the ⏱. function anaTimeSpan(r) { if (r.analysis_ms != null) return `${fmt(r.analysis_ms)}`; @@ -1374,6 +1385,7 @@ async function openRecording(id) { ${vizHtml}
+ ${recStamp(r) ? `
🗓 ${recStamp(r)}
` : ''} ${anaTimeSpan(r) ? `
⏱ Analysezeit: ${anaTimeSpan(r)}
` : ''} ${transcribing ? '
📝 Transkription läuft… lange Aufnahmen dauern.
' : ''} ${transcribeFailed ? `
Transkription fehlgeschlagen.
` : ''} diff --git a/docs/03-aufnahme-pipeline.md b/docs/03-aufnahme-pipeline.md index a49e8cf..bf2c15c 100644 --- a/docs/03-aufnahme-pipeline.md +++ b/docs/03-aufnahme-pipeline.md @@ -81,6 +81,9 @@ stateDiagram-v2 `analyzeRecording` (LLM lief vorher ungedeckelt auf 95–97 °C, Kap. 05). - **GUI-Anzeige „⏱ Analysezeit“:** `analysis_started_at`/`analysis_ms` in der DB; beim Polling auf `analysis_status` achten, NICHT auf `status` (sonst wirkt die Summary „leer“). +- **Kopf der Detailansicht:** `🗓 ` (Helfer `recStamp(r)` aus `created_at`) + steht seit 2026-09-29 vor der Analysezeit — aus Suche, Projekt-Pin oder Direktlink heraus ist links keine + Listenzeile markiert, der Aufnahmezeitpunkt wäre sonst nirgends sichtbar. - **GUI-Wartetext bei `transcribing`:** „📝 Transkription läuft… lange Aufnahmen dauern.“ (`web/src/main.js:1378`). Seit 2026-09-09 ohne den Klammerzusatz zum Takt-Cap — auf Wunsch des Nutzers; das Cap selbst ist unverändert aktiv. diff --git a/docs/08-changelog.md b/docs/08-changelog.md index 55c0876..1fdbe17 100644 --- a/docs/08-changelog.md +++ b/docs/08-changelog.md @@ -3,6 +3,30 @@ Chronik der Entwicklungsschritte. **Regel: jede zukünftige Änderung bekommt hier einen Eintrag** (Datum, Was, Warum, betroffene Dateien/Backups). +## 2026-09-29 — Aufnahmezeitpunkt in der Detailansicht + +**Wunsch:** „Wenn man eine Aufzeichnung geöffnet hat, soll neben der Analysezeit auch das Datum und +Uhrzeit der Aufzeichnung stehen. Denn wenn man z. B. aus der Suche heraus eine Aufzeichnung öffnet, sieht +man links im Menü nicht wann diese aufgenommen wurde, da diese dort nicht ausgewählt wurde.“ + +**Warum es fehlte:** der Zeitpunkt stand bisher nur in der linken Aufnahmenliste (Tagesgruppe + Uhrzeit, +`main.js:1134/1156`). Wer über die Inhaltssuche (Kap. 09), über einen Projekt-Pin (Kap. 10) oder über einen +Direktlink in die Detailansicht springt, hat dort keine markierte Zeile — der Kopf der Detailansicht zeigte +Titel, Player und höchstens „⏱ Analysezeit“, aber nie, wann das Gespräch stattfand. + +**Was geändert wurde** (`web/src/main.js`, Backup `main.js.bak-rectime`) + +- Neuer Helfer `recStamp(r)` neben `anaTimeSpan(r)`: formatiert `r.created_at` als + `Di., 29.09.2026, 14:23 Uhr` (`toLocaleDateString`/`toLocaleTimeString` mit `de-DE`, Wochentag kurz). + Leerer String bei fehlendem oder unparsbarem Datum → die Zeile fällt dann einfach weg. +- In der `.status-line` der Detailansicht steht die Zeile **vor** der Analysezeit: + `🗓 ` / `⏱ Analysezeit: …`. +- Keine Server- oder DB-Änderung nötig: `GET /api/recordings/:id` liefert `created_at` bereits mit. + +**Gegenprobe:** `npx vite build` → Bundle `index-DtL7bqdT.js` (enthält `rec-time`), `curl http://127.0.0.1/` +liefert genau dieses Bundle. `md5sum` von `web/src/main.js` auf dem Board und `app/web/src/main.js` im Repo +identisch. Kein `systemctl restart` (reiner Frontend-Build). + ## 2026-09-09 — GUI-Hinweis „A76-Takt gegen Überhitzung gedrosselt“ entfernt **Wunsch:** „Kannst du bitte den Hinweis nicht mehr anzeigen lassen“ (Screenshot des Klammerzusatzes