GUI: Aufnahmedatum und -uhrzeit im Kopf der Detailansicht

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) <noreply@anthropic.com>
This commit is contained in:
2026-09-29 08:29:23 +02:00
co-authored by Claude Opus 5
parent 95fab7b9e4
commit fae5a9e5d0
3 changed files with 39 additions and 0 deletions
+12
View File
@@ -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 <span> only; callers add the ⏱.
function anaTimeSpan(r) {
if (r.analysis_ms != null) return `<span class="ana-time">${fmt(r.analysis_ms)}</span>`;
@@ -1374,6 +1385,7 @@ async function openRecording(id) {
<div class="muted small hidden" id="mp3wait">🎧 Wiedergabe-Datei wird noch erzeugt – lädt automatisch nach…</div>
${vizHtml}
<div class="status-line">
${recStamp(r) ? `<div class="muted rec-time">🗓 ${recStamp(r)}</div>` : ''}
${anaTimeSpan(r) ? `<div class="muted ana-line">⏱ Analysezeit: ${anaTimeSpan(r)}</div>` : ''}
${transcribing ? '<div class="muted">📝 Transkription läuft… lange Aufnahmen dauern.</div>' : ''}
${transcribeFailed ? `<div class="err-inline">Transkription fehlgeschlagen. <button class="btn" id="retranscribe">Neu transkribieren</button></div>` : ''}
+3
View File
@@ -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:** `🗓 <Wochentag, Datum, Uhrzeit>` (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.
+24
View File
@@ -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:
`🗓 <Datum, Uhrzeit>` / `⏱ 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