fix: wire bm25_score through Citation so Natural 20 easter egg fires

Citation dataclass gains bm25_score field populated from the retrieved
chunk. chat.py serializes it. api.ts interface updated to include it.
ChatView passes :bm25-score to CitationPanel so the Nat20 threshold
check in onMounted actually has data to evaluate.
This commit is contained in:
pyr0ball 2026-05-04 20:01:20 -07:00
parent 6bda1143cc
commit 6fc8e7faa6
4 changed files with 5 additions and 0 deletions

View file

@ -120,6 +120,7 @@ def chat(req: ChatRequest) -> ChatResponse:
"doc_id": c.doc_id,
"page_number": c.page_number,
"snippet": c.snippet,
"bm25_score": c.bm25_score,
}
for c in result.citations
],

View file

@ -23,6 +23,7 @@ class Citation:
doc_id: str
page_number: int
snippet: str
bm25_score: float
@dataclass(frozen=True)
@ -52,6 +53,7 @@ class Synthesizer:
doc_id=c.doc_id,
page_number=c.page_number,
snippet=c.text[:200],
bm25_score=c.bm25_score,
)
for c in chunks
)

View file

@ -23,6 +23,7 @@ export interface Citation {
doc_id: string
page_number: number
snippet: string
bm25_score: number | null
}
export interface ChatResponse {

View file

@ -22,6 +22,7 @@
:key="j"
:citation="cite"
:doc-title="docTitles[cite.doc_id] ?? cite.doc_id"
:bm25-score="cite.bm25_score ?? undefined"
/>
</div>
</div>