feat(gui): Abschnittstitel der Zusammenfassung fett
Die Section-Zusammenfassung kommt als "Titel:\nFliesstext"-Bloecke zurueck, wurde aber
als flache Textwand gerendert. renderSummary() setzt Titelzeilen jetzt fett.
Im Renderer statt in der DB, damit es sofort fuer alle vorhandenen Zusammenfassungen
gilt, ohne 22 Aufnahmen je 20 Minuten neu zu analysieren.
Regel /^[^.!?]{3,90}:$/ = kurze, alleinstehende Zeile mit Doppelpunkt am Ende. Gegen
die echten Zusammenfassungen #85/#79/#74 geprueft: 37 Titel erkannt, keine
Fliesstextzeile falsch fett, keine Doppelpunkt-Zeile uebersehen.
This commit is contained in:
+17
-1
@@ -754,7 +754,7 @@ async function openRecording(id) {
|
||||
</div>`;
|
||||
const mods = {
|
||||
analyse: `
|
||||
${r.summary ? `<p class="summary">${escapeHtml(r.summary)}</p>` : '<div class="muted">Noch keine Zusammenfassung.</div>'}
|
||||
${r.summary ? `<p class="summary">${renderSummary(r.summary)}</p>` : '<div class="muted">Noch keine Zusammenfassung.</div>'}
|
||||
${(r.participants && r.participants.length) ? `<h3>Teilnehmer</h3><ul class="parts">${r.participants.map(p => `<li>👤 ${escapeHtml(p)}</li>`).join('')}</ul>` : ''}
|
||||
${markersHtml}`,
|
||||
todos: (r.todos && r.todos.length) ? `<ul class="todos">${r.todos.map(t => `<li>${escapeHtml(t)}</li>`).join('')}</ul>` : '<div class="muted">Keine ToDos erkannt.</div>',
|
||||
@@ -1143,6 +1143,22 @@ async function openRecording(id) {
|
||||
|
||||
function escapeHtml(s) { return (s || '').replace(/[&<>"]/g, c => ({ '&': '&', '<': '<', '>': '>', '"': '"' }[c])); }
|
||||
|
||||
// The section summary comes back as "Abschnittstitel:\nFließtext…" blocks (see
|
||||
// llm.js analyzeLong). Flat, that reads as one wall of text, so the title lines
|
||||
// get set in bold. Done at RENDER time on purpose, not stored in the database:
|
||||
// it applies to every summary that already exists, without re-running a
|
||||
// 20-minute analysis on 22 recordings.
|
||||
function renderSummary(text) {
|
||||
return escapeHtml(text || '').split('\n').map(line => {
|
||||
const t = line.trim();
|
||||
// A heading is a SHORT, STANDALONE line ending in a colon. Both conditions
|
||||
// matter: prose like "…die Struktur der Projektberichterstattung: kurze
|
||||
// Einordnung, aktueller Stand…" has the colon mid-line and keeps running,
|
||||
// and excluding . ! ? stops a full sentence that happens to end in a colon.
|
||||
return /^[^.!?]{3,90}:$/.test(t) ? `<strong class="sum-head">${t}</strong>` : line;
|
||||
}).join('\n');
|
||||
}
|
||||
|
||||
// ---- Konferenztisch-Ansicht ----
|
||||
// Seat positions (person center, % of scene) per participant count, arranged
|
||||
// around the rectangular table; each seat knows which bubble-arrow side points
|
||||
|
||||
@@ -493,3 +493,11 @@ body.resizing { cursor: col-resize; user-select: none; }
|
||||
.search-page.landing { padding-top: 6vh; }
|
||||
.search-go { padding: .55rem .8rem; }
|
||||
}
|
||||
/* Abschnittstitel in der Zusammenfassung ("Neuer Projektleiter vorgestellt:").
|
||||
Etwas Luft darüber, damit die Blöcke optisch trennen — der Text steht in
|
||||
white-space: pre-line, die Zeilenumbrüche kommen also aus dem Text selbst. */
|
||||
.summary .sum-head {
|
||||
font-weight: 700;
|
||||
color: var(--fg);
|
||||
line-height: 2.2;
|
||||
}
|
||||
@@ -3,6 +3,25 @@
|
||||
Chronik der Entwicklungsschritte. **Regel: jede zukünftige Änderung bekommt hier einen Eintrag** (Datum,
|
||||
Was, Warum, betroffene Dateien/Backups).
|
||||
|
||||
## 2026-07-31 (nachmittags) — Abschnittstitel in der Zusammenfassung fett
|
||||
|
||||
Die Section-Zusammenfassung kommt als `Abschnittstitel:\nFließtext…`-Blöcke zurück (llm.js/analyzeLong),
|
||||
wurde aber als eine flache Textwand gerendert. Titelzeilen erscheinen jetzt fett.
|
||||
|
||||
**Bewusst im Renderer, nicht in der Datenbank:** so gilt es sofort für alle bereits vorhandenen
|
||||
Zusammenfassungen, ohne auf 22 Aufnahmen je eine 20-Minuten-Analyse neu zu fahren.
|
||||
|
||||
Erkennungsregel in `renderSummary()` (`main.js`): eine **kurze, alleinstehende** Zeile, die auf einen
|
||||
Doppelpunkt endet und kein `.` `!` `?` enthält — `/^[^.!?]{3,90}:$/`. Beide Bedingungen sind nötig: Fließtext
|
||||
wie „…die Struktur der Projektberichterstattung: kurze Einordnung, aktueller Stand…" hat den Doppelpunkt
|
||||
mitten in der Zeile und läuft weiter.
|
||||
|
||||
**Gegen echte Daten geprüft** (Zusammenfassungen #85, #79, #74): 37 Titel erkannt, keine Fließtextzeile
|
||||
fälschlich fett, keine Doppelpunkt-Zeile übersehen.
|
||||
|
||||
Dateien: `app/web/src/main.js`, `app/web/src/style.css` (`.summary .sum-head`).
|
||||
Board-Backups: `.bak-sumhead`.
|
||||
|
||||
## 2026-07-31 — Inhaltssuche, Papierkorb, Titel umbenennen (+ WLAN-Ausfall behoben)
|
||||
|
||||
Drei Funktionen auf Wunsch des Nutzers, dazu die Störung vom Vormittag. Details:
|
||||
|
||||
Reference in New Issue
Block a user