CG-Feedback-Monitor/server/db/queries/criterionSuggestions.ts

29 lines
1.3 KiB
TypeScript
Raw Normal View History

import { getAllRows } from '../crud'
import type { ConversationEntry, MeetingInstance, ConversationLineTag } from '../../../src/db/types'
/**
* Flacht `lineTags`/`generalNoteTags` über ALLE Assignments hinweg zu einem globalen
* (Zeilentext → Kriterium)-Korpus ab — Grundlage für die lokale Ähnlichkeitssuche im
* selbstlernenden Kriterien-Tagging (Client, `src/utils/criterionSuggestion.ts`). Gleiches
* Iterationsmuster wie `getCriterionUsageMap()` in `feedbackStructure.ts`, hier aber die
* Rohdaten statt aggregierter Zählungen. Rückgabetyp ist bewusst `ConversationLineTag[]` (kein
* neuer Typ) — jeder Korpus-Eintrag IST eine bereits vergebene Zeilen-Zuordnung, nur aus zwei
* Quellen (Gesprächsbeiträge + allgemeine Notizen) zusammengeführt.
*/
export function getGlobalLineTagCorpus(): ConversationLineTag[] {
const corpus: ConversationLineTag[] = []
for (const e of getAllRows<ConversationEntry>('conversationEntries')) {
for (const tag of e.lineTags ?? []) {
corpus.push({ text: tag.text, criterionItemId: tag.criterionItemId })
}
}
for (const m of getAllRows<MeetingInstance>('meetingInstances')) {
for (const tag of m.generalNoteTags ?? []) {
corpus.push({ text: tag.text, criterionItemId: tag.criterionItemId })
}
}
return corpus
}