Fix ChunkBrowserQA: use regulation_id from Qdrant payload instead of regulation_code

The Qdrant collections use regulation_id (e.g. eu_2016_679) as the filter key,
not regulation_code (e.g. GDPR). Updated rag-constants.ts with correct qdrant_id
mappings from actual Qdrant data, fixed API to filter on regulation_id, and updated
ChunkBrowserQA to pass qdrant_id values.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-02-28 18:22:12 +01:00
parent 859342300e
commit e7fb9d59f1
3 changed files with 166 additions and 131 deletions

View File

@@ -84,22 +84,37 @@ export function ChunkBrowserQA({ apiProxy }: ChunkBrowserQAProps) {
// Load regulation counts for current collection
const loadRegulationCounts = useCallback(async (col: string) => {
const codes = Object.entries(REGULATIONS_IN_RAG)
.filter(([, info]) => info.collection === col)
.map(([code]) => code)
if (codes.length === 0) return
const entries = Object.entries(REGULATIONS_IN_RAG)
.filter(([, info]) => info.collection === col && info.qdrant_id)
if (entries.length === 0) return
// Build qdrant_id -> our_code mapping
const qdrantIdToCode: Record<string, string[]> = {}
for (const [code, info] of entries) {
if (!qdrantIdToCode[info.qdrant_id]) qdrantIdToCode[info.qdrant_id] = []
qdrantIdToCode[info.qdrant_id].push(code)
}
const uniqueQdrantIds = Object.keys(qdrantIdToCode)
setCountsLoading(true)
try {
const params = new URLSearchParams({
action: 'regulation-counts-batch',
collection: col,
codes: codes.join(','),
qdrant_ids: uniqueQdrantIds.join(','),
})
const res = await fetch(`${apiProxy}?${params}`)
if (res.ok) {
const data = await res.json()
setRegulationCounts(prev => ({ ...prev, ...data.counts }))
// Map qdrant_id counts back to our codes
const mapped: Record<string, number> = {}
for (const [qid, count] of Object.entries(data.counts as Record<string, number>)) {
const codes = qdrantIdToCode[qid] || []
for (const code of codes) {
mapped[code] = count
}
}
setRegulationCounts(prev => ({ ...prev, ...mapped }))
}
} catch (error) {
console.error('Failed to load regulation counts:', error)
@@ -111,7 +126,7 @@ export function ChunkBrowserQA({ apiProxy }: ChunkBrowserQAProps) {
// Load all chunks for a regulation (paginated scroll)
const loadDocumentChunks = useCallback(async (regulationCode: string) => {
const ragInfo = REGULATIONS_IN_RAG[regulationCode]
if (!ragInfo) return
if (!ragInfo || !ragInfo.qdrant_id) return
setDocLoading(true)
setDocChunks([])
@@ -129,8 +144,8 @@ export function ChunkBrowserQA({ apiProxy }: ChunkBrowserQAProps) {
action: 'scroll',
collection: ragInfo.collection,
limit: '100',
filter_key: 'regulation_code',
filter_value: regulationCode,
filter_key: 'regulation_id',
filter_value: ragInfo.qdrant_id,
})
if (offset) params.append('offset', offset)