fix: PDF-Highlight strippt führende Seitenzahl + Topbar noch kompakter

- render_highlighted_page: führende Seitenzahl-Tokens ('44 Gute Bildung …')
  vor search_for entfernen — LLMs ziehen den Header oft ins Zitat mit, was
  PyMuPDFs Volltext-Match scheitern lässt
- v2-Topbar: padding 4px -> 2px, line-height 1.2, min-height entfernt
  (auto-size, nur so hoch wie noetig)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dotty Dotter 2026-04-25 22:04:26 +02:00
parent 50c026e3a0
commit 489a1915f8
2 changed files with 14 additions and 3 deletions

View File

@ -777,9 +777,14 @@ def render_highlighted_page(programm_id: str, seite: int, query: str) -> Optiona
rects = []
if needle:
clean = needle.replace("\u00ad", "")
# LLMs ziehen h\u00e4ufig die Seitenzahl-Header (\u201e44 Gute Bildung \u2026")
# mit ins Zitat. Wenn die ersten Tokens reine Ziffern sind,
# strippen wir sie f\u00fcr die Suche \u2014 sonst matched search_for nicht.
import re as _re
clean = _re.sub(r"^\s*\d+\s+", "", clean).strip()
words = clean.split()
anchor = " ".join(words[:5]) if len(words) >= 5 else clean
# Versuch 1: angegebene Seite, Volltext
# Versuch 1: angegebene Seite, Volltext (gestrippt)
rects = src[target_page_idx].search_for(clean)
# Versuch 2: angegebene Seite, 5-Wort-Anker
if not rects:

View File

@ -66,15 +66,21 @@ body.v2 :focus-visible {
grid-area: topbar;
background: var(--paper);
border-bottom: 1px solid var(--hairline);
padding: 4px 24px;
min-height: 32px;
padding: 2px 24px;
display: flex;
align-items: center;
gap: var(--space-4);
font-family: var(--font-mono);
font-size: 11px;
line-height: 1.2;
color: var(--ecg-dark);
}
.v2-topbar > *,
.v2-topbar button,
.v2-topbar select {
padding-top: 2px;
padding-bottom: 2px;
}
.v2-topbar-spacer {
flex: 1;