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>
29 lines
1.3 KiB
TypeScript
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
|
|
}
|