CG-Feedback-Monitor/server/db/queries/criterionSuggestions.ts
Lars 234f87d408 V2-Dev-Stand: Skala 1-10, Benefits/Concerns, DEV-Isolation und Gitea-Doku.
Bündelt die Neuentwicklung in AssigmentMonitorV2 (eigene Ports/DB), die Umstellung auf numerische Bewertungen, Meeting-Checklisten, KI-Tagging und die geplante Feedback-Kaskade — als Basis für Versionsverwaltung in Gitea.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-08 17:35:05 +02:00

29 lines
1.3 KiB
TypeScript

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
}