feat(stellungnahme): zentrales KI-Regelwerk aus stellungnahme_config
Die AI-Rewrite-Regeln (DEFAULT_AI_RULES) waren im Block hardcodiert und hätten pro Generator (40 Instanzen) dupliziert werden müssen, um im CMS editierbar zu sein. Stattdessen ein Singleton stellungnahme_config (Slug "default") mit Feld aiRules: der Resolver lädt es einmal und hängt block.aiRules an alle Generator-Blöcke. Komponente seedet daraus, mit DEFAULT_AI_RULES als Code-Fallback; Reset-Button setzt auf den CMS-Wert. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,11 +6,13 @@ import {
|
||||
getTextFragmentBySlug,
|
||||
getTextFragmentsByTag,
|
||||
getEntryBySlug,
|
||||
getStellungnahmeConfig,
|
||||
getCalendarBySlug,
|
||||
getCalendarItemBySlug,
|
||||
getContacts,
|
||||
getCalendarItems,
|
||||
} from "./cms";
|
||||
import { STELLUNGNAHME_CONFIG_SLUG } from "./constants";
|
||||
import type { RowContentLayout } from "./block-types";
|
||||
import type { CalendarItemData } from "./block-types";
|
||||
import { ensureTransformedImage, extractCmsImageField, type CmsImageField } from "./rusty-image";
|
||||
@@ -780,6 +782,7 @@ function isStellingnahmeGeneratorBlock(item: unknown): boolean {
|
||||
/** Löst stellungnahme_generator-Blöcke auf:
|
||||
* - windArea → vollständiges wind_area-Objekt mit aufgelösten stellungnahme_kriterien
|
||||
* - allgemeineArgumenteTag → allgemeineArgumente[] via Tag-Filter
|
||||
* - aiRules ← zentrale stellungnahme_config (Singleton), einmal geladen, an alle Blöcke gehängt
|
||||
*/
|
||||
export async function resolveStellingnahmeGeneratorBlocks(
|
||||
layout: RowContentLayout | null | undefined,
|
||||
@@ -790,12 +793,24 @@ export async function resolveStellingnahmeGeneratorBlocks(
|
||||
layout.row2Content ?? [],
|
||||
layout.row3Content ?? [],
|
||||
];
|
||||
|
||||
// Zentrales Regelwerk nur laden, wenn überhaupt ein Generator-Block vorhanden ist.
|
||||
const hasGenerator = rows.some(
|
||||
(content) => Array.isArray(content) && content.some(isStellingnahmeGeneratorBlock),
|
||||
);
|
||||
const aiRules = hasGenerator
|
||||
? (await getStellungnahmeConfig(STELLUNGNAHME_CONFIG_SLUG, { locale: "de" }))?.aiRules
|
||||
: undefined;
|
||||
|
||||
for (const content of rows) {
|
||||
if (!Array.isArray(content)) continue;
|
||||
for (const item of content) {
|
||||
if (!isStellingnahmeGeneratorBlock(item)) continue;
|
||||
const block = item as Record<string, unknown>;
|
||||
|
||||
// Zentrales Regelwerk anhängen (Fallback auf Hardcode-Default in der Komponente)
|
||||
if (aiRules) block.aiRules = aiRules;
|
||||
|
||||
// Resolve windArea
|
||||
const windAreaRef = block.windArea;
|
||||
const windAreaSlug =
|
||||
|
||||
Reference in New Issue
Block a user