From c36064d7345185a541d36409ccf8924a09afcc36 Mon Sep 17 00:00:00 2001 From: Dennis Date: Tue, 10 Feb 2026 16:57:07 +0100 Subject: [PATCH 1/2] Fix member-matching hook: regex, null safety, and archived filter - Use [ \t]+ instead of \s+ in timestamp regex to prevent matching across newlines, which caused entire paragraphs to be extracted as speaker names - Add null guard in normalize() to handle members with null names - Filter out archived members from matching query Co-Authored-By: Claude Opus 4.6 --- .../src/member-matching/matchMembers.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/directus-cms/extensions/directus-extension-programmierbar-bundle/src/member-matching/matchMembers.ts b/directus-cms/extensions/directus-extension-programmierbar-bundle/src/member-matching/matchMembers.ts index 9e54a08..bfcaec7 100644 --- a/directus-cms/extensions/directus-extension-programmierbar-bundle/src/member-matching/matchMembers.ts +++ b/directus-cms/extensions/directus-extension-programmierbar-bundle/src/member-matching/matchMembers.ts @@ -26,7 +26,8 @@ export function extractSpeakerNames(transcriptText: string): string[] { // Pattern 1: Name followed by timestamp in parentheses // Examples: "Jan Gregor Emge-Triebel (00:12.534)", "Fabi Fink (00:35.735)" - const timestampPattern = /^([A-ZÄÖÜa-zäöüß][A-ZÄÖÜa-zäöüß\-]+(?:\s+[A-ZÄÖÜa-zäöüß][A-ZÄÖÜa-zäöüß\-]+)*)\s+\(\d{2}:\d{2}\.\d+\)/gm + // Use [ \t]+ instead of \s+ to avoid matching across newlines + const timestampPattern = /^([A-ZÄÖÜa-zäöüß][A-ZÄÖÜa-zäöüß\-]+(?:[ \t]+[A-ZÄÖÜa-zäöüß][A-ZÄÖÜa-zäöüß\-]+)*)[ \t]+\(\d{2}:\d{2}\.\d+\)/gm let match while ((match = timestampPattern.exec(transcriptText)) !== null) { @@ -55,6 +56,7 @@ export function extractSpeakerNames(transcriptText: string): string[] { * Removes accents, lowercases, normalizes hyphens/spaces, and trims. */ function normalize(str: string): string { + if (!str) return '' return str .toLowerCase() .normalize('NFD') @@ -130,9 +132,10 @@ export async function matchMembersFromTranscript( accountability: eventContext.accountability, }) - // Fetch all members + // Fetch non-archived members only const allMembers: MemberData[] = await membersService.readByQuery({ fields: ['id', 'first_name', 'last_name'], + filter: { status: { _neq: 'archived' } }, limit: -1, }) From 39481f389510692acc2157c4bf1ecda3a28bbbfa Mon Sep 17 00:00:00 2001 From: Dennis Date: Tue, 10 Feb 2026 17:01:23 +0100 Subject: [PATCH 2/2] Remove unused fields from podcast_generated_content collection Remove llm_model and prompt_version from all createOne calls. These fields were removed from the collection schema and no longer needed. Co-Authored-By: Claude Opus 4.6 --- .../src/content-generation/generateContent.ts | 4 ---- .../src/heise-integration/index.ts | 2 -- 2 files changed, 6 deletions(-) diff --git a/directus-cms/extensions/directus-extension-programmierbar-bundle/src/content-generation/generateContent.ts b/directus-cms/extensions/directus-extension-programmierbar-bundle/src/content-generation/generateContent.ts index ab653e2..db1ab38 100644 --- a/directus-cms/extensions/directus-extension-programmierbar-bundle/src/content-generation/generateContent.ts +++ b/directus-cms/extensions/directus-extension-programmierbar-bundle/src/content-generation/generateContent.ts @@ -495,8 +495,6 @@ export async function generateContent(hookName: string, podcastId: number, servi generated_text: shownotesText, status: 'generated', generated_at: new Date().toISOString(), - llm_model: 'gemini-3-flash-preview', - prompt_version: '1.0', }) // Generate social media posts @@ -536,8 +534,6 @@ export async function generateContent(hookName: string, podcastId: number, servi generated_text: socialText, status: 'generated', generated_at: new Date().toISOString(), - llm_model: 'gemini-3-flash-preview', - prompt_version: '1.0', }) logger.info(`${hookName}: ${platform} post generated for podcast ${podcastId}`) diff --git a/directus-cms/extensions/directus-extension-programmierbar-bundle/src/heise-integration/index.ts b/directus-cms/extensions/directus-extension-programmierbar-bundle/src/heise-integration/index.ts index 28ba125..99496e0 100644 --- a/directus-cms/extensions/directus-extension-programmierbar-bundle/src/heise-integration/index.ts +++ b/directus-cms/extensions/directus-extension-programmierbar-bundle/src/heise-integration/index.ts @@ -170,8 +170,6 @@ export default defineHook(({ action }, hookContext) => { generated_text: documentHtml, status: 'generated', generated_at: new Date().toISOString(), - llm_model: 'template', - prompt_version: '1.0', }) // Update podcast status