Files
MtoRagSystem/config/retriex/genre.yaml
team 1 63210a14de p85b
2026-05-10 12:07:27 +02:00

2160 lines
79 KiB
YAML

# Single-genre adaptation surface for this RetrieX installation.
#
# This file intentionally does not implement multi-tenant or per-request genre
# switching. One installation represents one genre. The entries below group the
# configuration areas that must be reviewed when the same software is repurposed
# for another genre such as fashion, furniture, spare parts or electronics.
#
# p54 introduced `adaptation_surface` as the migration inventory. p55 adds
# `configuration_values` as the central value surface. p59B keeps the
# adaptation surface focused on native genre value paths. p59C adds
# review_path_groups so every remaining non-empty/runtime-resolved legacy
# source path is visible with its cleanup classification. p59D moves
# those legacy/runtime source declarations out of configuration_values so
# the value surface stays native and maintenance-focused.
# p59F adds machine-readable review-group metadata so the remaining
# compatibility paths can be removed or kept deliberately by category.
# p59G rewires the no-LLM product-role fallback directly to genre values
# and removes its obsolete legacy compatibility view declarations.
parameters:
retriex.genre.config:
id: water_analysis
label: Water analysis / measurement devices
mode: single_installation_single_genre
description: Genre-specific configuration surface for one RetrieX installation.
adaptation_surface:
product_roles:
description: Main product, accessory and consumable role vocabulary used for routing, shop matching and answer guards.
value_paths:
- configuration_values.product_roles.primary_product_terms
- configuration_values.product_roles.accessory_product_terms
- configuration_values.product_roles.requested_accessory_code_terms
- configuration_values.product_roles.shop_views
- configuration_values.product_roles.prompt_views
- configuration_values.product_roles.no_llm_fallback_terms
product_attributes:
description: Genre-specific attributes and constraints, for example measurement values now or size/color/material later.
value_paths:
- configuration_values.product_attributes.direct_attribute_cleanup
- configuration_values.product_attributes.size_and_color_terms
- configuration_values.product_attributes.numeric_length_constraints
review_path_groups:
frozen_runtime_views:
description: Legacy shop-runtime attribute and length helpers mirrored by genre values. Rewire candidates, not user-facing maintenance paths.
classification: legacy_runtime_helper
source_state: legacy_frozen_non_empty
cleanup_action: rewire_runtime_accessor_to_genre_value
paths:
- agent.shop_runtime.attribute_cleanup.vocabulary_views.product_type_terms
- agent.shop_runtime.attribute_cleanup.vocabulary_views.stop_terms
- agent.shop_runtime.answer_constraints.length_sort
- agent.shop_runtime.answer_constraints.length_filter
regex_templates:
description: Intent regex templates that still belong to the technical matcher layer and should remain frozen while genre terms live in configuration_values.
classification: technical_regex_template
source_state: legacy_frozen_non_empty
cleanup_action: keep_until_dedicated_regex_template_migration
paths:
- intent.commerce.patterns.size_extraction_template
- intent.commerce.patterns.size_value_template
- intent.commerce.patterns.size_token_value_template
- intent.commerce.patterns.color_value_template
brands_and_canonical_terms:
description: Known brands, canonical token mappings and query enrichment rules that change with the shop genre.
value_paths:
- configuration_values.brands_and_canonical_terms.known_brands
- configuration_values.brands_and_canonical_terms.canonical_terms
- configuration_values.brands_and_canonical_terms.query_enrichment_rules
- configuration_values.brands_and_canonical_terms.accessory_focus_variants
- configuration_values.brands_and_canonical_terms.rag_evidence_synonyms
intent_and_routing:
description: Genre-specific commerce/advisory signals and fuzzy routing terms.
value_paths:
- configuration_values.intent_and_routing.fuzzy_routing_terms
- configuration_values.intent_and_routing.commerce_intent
- configuration_values.intent_and_routing.sales_intent
review_path_groups:
frozen_runtime_views:
description: Legacy fuzzy-routing vocabulary view kept only as frozen compatibility metadata until routing uses the genre value directly.
classification: legacy_runtime_helper
source_state: legacy_frozen_non_empty
cleanup_action: rewire_runtime_accessor_to_genre_value
paths:
- agent.input_normalization.fuzzy_routing.vocabulary_views.terms
regex_templates:
description: Commerce intent regex template for model-like product terms; technical matcher fallback, not a genre maintenance list.
classification: technical_regex_template
source_state: legacy_frozen_non_empty
cleanup_action: keep_until_dedicated_regex_template_migration
paths:
- intent.commerce.patterns.model_like_product
sales_signal_fallbacks:
description: Sales/advisory signal lists mirrored by genre values and frozen to prevent drift outside genre.yaml.
classification: legacy_signal_fallback
source_state: legacy_frozen_non_empty
cleanup_action: remove_legacy_fallback_after_genre_accessor_coverage
paths:
- intent.sales.sales_signals
- intent.sales.comparison_signals
- intent.sales.objection_signals
- intent.sales.implementation_signals
- intent.sales.roi_signals
context_resolution:
description: Follow-up anchors and meta-query handling for referential shop questions in the current genre.
value_paths:
- configuration_values.context_resolution.commercial_table_follow_up
- configuration_values.context_resolution.referential_terms
- configuration_values.context_resolution.history_anchor_enrichment
- configuration_values.context_resolution.meta_query_guard
- configuration_values.context_resolution.rag_anchor_enrichment
review_path_groups:
frozen_runtime_views:
description: Legacy history-anchor trigger view mirrored by genre values. Candidate for later runtime accessor cleanup.
classification: legacy_runtime_helper
source_state: legacy_frozen_non_empty
cleanup_action: rewire_runtime_accessor_to_genre_value
paths:
- agent.shop_runtime.context_resolution.history_anchor_enrichment.vocabulary_views.trigger_terms
commercial_follow_up_fallbacks:
description: Commercial follow-up anchor patterns and query templates kept frozen while the follow-up resolver is migrated fully to genre values.
classification: legacy_context_fallback
source_state: legacy_frozen_non_empty
cleanup_action: rewire_follow_up_resolver_to_genre_value
paths:
- agent.follow_up_context.commercial_table_follow_up.history_anchor_patterns
- agent.follow_up_context.commercial_table_follow_up.indicator_marker_patterns
- agent.follow_up_context.commercial_table_follow_up.query_template_with_model
- agent.follow_up_context.commercial_table_follow_up.query_template_without_model
shop_query_runtime:
description: Shop query cleanup and direct Shopware search behavior that needs genre-specific terms but no PHP branching.
value_paths:
- configuration_values.shop_query_runtime.current_input_preservation_terms
- configuration_values.shop_query_runtime.stopword_cleanup
- configuration_values.shop_query_runtime.positive_token_filter
- configuration_values.shop_query_runtime.generic_device_anchor
- configuration_values.shop_query_runtime.compound_prefix_match
- configuration_values.shop_query_runtime.primary_identity_repair
- configuration_values.shop_query_runtime.semantic_shop_search_tokens
- configuration_values.shop_query_runtime.direct_answer
review_path_groups:
frozen_runtime_views:
description: Legacy current-input preservation vocabulary view mirrored by genre values and kept frozen until the query optimizer reads only from genre.yaml.
classification: legacy_runtime_helper
source_state: legacy_frozen_non_empty
cleanup_action: rewire_runtime_accessor_to_genre_value
paths:
- agent.shop_runtime.query_cleanup.current_input_preservation.vocabulary_views.terms
result_identity_and_answer_policy:
description: Grounding, role separation and atomicity rules that must match the active product genre.
value_paths:
- configuration_values.result_identity_and_answer_policy.prompt_rules
- configuration_values.result_identity_and_answer_policy.prompt_keyword_views
- configuration_values.result_identity_and_answer_policy.measurement_evidence_guard_terms
- configuration_values.result_identity_and_answer_policy.measurement_evidence_maps
search_repair:
description: Genre-specific repair tokens, candidate patterns and exact identifier behavior.
value_paths:
- configuration_values.search_repair.direct_product_attribute_lookup
- configuration_values.search_repair.requested_accessory_code_terms
- configuration_values.search_repair.candidate_patterns
- configuration_values.search_repair.candidate_terms
review_path_groups:
regex_templates:
description: Search-repair regex templates still owned by the technical matcher layer. Frozen source paths prevent silent divergence from genre values.
classification: technical_regex_template
source_state: legacy_frozen_non_empty
cleanup_action: keep_until_dedicated_regex_template_migration
paths:
- search_repair.patterns.model_candidate
- search_repair.patterns.accessory_candidate_template
- search_repair.patterns.requested_accessory_code
- search_repair.patterns.accessory_or_bundle_template
- search_repair.patterns.model_like
- search_repair.patterns.specificity_boost_template
retrieval_and_language:
description: Genre-specific protected terms, exact selection helpers and retrieval vocabulary. Engine parameters stay outside this surface.
value_paths:
- configuration_values.retrieval_and_language.protected_terms
- configuration_values.retrieval_and_language.cleanup_profiles
- configuration_values.retrieval_and_language.retrieval_vocabulary_views
- configuration_values.retrieval_and_language.exact_selection
review_path_groups:
technical_cleanup_profiles:
description: Shared language cleanup profiles with runtime structure beyond simple genre vocabulary. Keep as technical review paths until a dedicated cleanup-profile migration removes the legacy copies.
classification: technical_cleanup_profile
source_state: legacy_frozen_non_empty
cleanup_action: keep_until_dedicated_cleanup_profile_migration
paths:
- language.cleanup_profiles.commerce_query
- language.cleanup_profiles.rag_evidence
- language.cleanup_profiles.shop_context_fallback
shop_data_mapping:
description: Shop record fields and matching text fields that are installation-/genre-specific.
value_paths:
- configuration_values.shop_data_mapping.custom_fields
- configuration_values.shop_data_mapping.text
- configuration_values.shop_data_mapping.role_guard
- configuration_values.shop_data_mapping.commerce_connection
review_path_groups:
technical_shop_mapping:
description: Shop matching field and role-guard configuration. Installation-specific, but still technical runtime mapping rather than simple genre vocabulary.
classification: technical_shop_mapping
source_state: legacy_frozen_non_empty
cleanup_action: keep_as_technical_runtime_mapping
paths:
- shop_matching.custom_fields
- shop_matching.text.custom_field_join_separator
- shop_matching.text.primary_secondary_separator
- shop_matching.role_guard
runtime_resolved_connection:
description: Runtime environment values intentionally allowed by governance as resolved outside genre.yaml.
classification: runtime_resolved_connection
source_state: legacy_runtime_resolved_allowed
cleanup_action: keep_runtime_resolved_outside_genre_values
paths:
- commerce.store_api_base_url
- commerce.max_shop_results
governance_and_regression:
description: Guardrails and regression expectations that intentionally protect the active genre.
value_paths:
- configuration_values.governance_and_regression.regression_baseline
- configuration_values.governance_and_regression.vocabulary_guardrails
- configuration_values.governance_and_regression.core_pattern_audit
review_path_groups:
governance_guardrails:
description: Technical audit policy for core-pattern checks. Keep outside genre values but visible in the adaptation surface.
classification: governance_guardrail
source_state: legacy_frozen_non_empty
cleanup_action: keep_as_governance_policy
paths:
- governance.core_pattern_audit
configuration_values:
product_roles:
description: Current water-analysis product role vocabulary. For another genre, replace these terms with that genre's main-product, accessory and consumable roles.
primary_product_terms:
origin: genre_native
terms:
- analysegerät
- analysegeraet
- analysegeräte
- analysegeraete
- messgerät
- messgeraet
- messgeräte
- messgeraete
- analysator
- analysatoren
- analyzer
- gerät
- geraet
- geräte
- geraete
- modell
- monitor
- monitore
- controller
- system
- systeme
- anlage
- anlagen
accessory_product_terms:
origin: genre_native
terms:
- zubehör
- zubehor
- reagenz
- reagenzien
- reagent
- indikator
- indikatoren
- indicator
- kit
- set
- ersatz
- ersatzteil
- ersatzteile
- verbrauchsmaterial
- consumable
- filter
- pumpenkopf
- motorblock
- service set
- serviceset
- service-set
requested_accessory_code_terms:
origin: genre_native
terms:
- indikatortyp
- indikator
- indicator
- reagenz
- reagent
shop_views:
origin: genre_native
device_query_terms:
- analysegerät
- analysegeraet
- analysegeräte
- analysegeraete
- messgerät
- messgeraet
- messgeräte
- messgeraete
- analysator
- analysatoren
- analyzer
- gerät
- geraet
- geräte
- geraete
- modell
- modelle
- monitor
- monitore
- controller
- gerät für
- geraet fuer
- geräte für
- geraete fuer
- system
- systeme
- anlage
- anlagen
accessory_query_terms:
- zubehör
- zubehor
- reagenz
- reagenzien
- reagent
- indikator
- indikatoren
- indicator
- kit
- set
- ersatz
- ersatzteil
- ersatzteile
- verbrauchsmaterial
- consumable
- dazu
- passend
- passende
- passendes
- nachfüll
- nachfuell
- refill
- filter
- pumpenkopf
- motorblock
- service set
- serviceset
- service-set
- puffer
- pufferlösung
- pufferloesung
- kalibrierpuffer
- kalibrierlösung
- kalibrierloesung
device_product_terms:
- analysegerät
- analysegeraet
- analysegeräte
- analysegeraete
- messgerät
- messgeraet
- messgeräte
- messgeraete
- analysator
- analysatoren
- analyzer
- monitor
- monitore
- controller
- online-analysator
- online analysator
- online-analysegerät
- online analysegeraet
- online-analysegeräte
- online analysegeraete
- online analyzer
- online monitor
- system
- systeme
- anlage
- anlagen
- gerät
- geraet
- geräte
- geraete
accessory_product_terms:
- reagenz
- reagenzien
- reagent
- indikator
- indikatoren
- indicator
- kit
- set
- verbrauchsmaterial
- consumable
- zubehör
- zubehor
- ersatz
- ersatzteil
- ersatzteile
- nachfüll
- nachfuell
- refill
- lösung
- loesung
- solution
- teststreifen
- test strip
- filter
- pumpenkopf
- motorblock
- service set
- serviceset
- service-set
- puffer
- pufferlösung
- pufferloesung
- kalibrierpuffer
- kalibrierlösung
- kalibrierloesung
device_focus_terms:
- geräte
- geraete
- gerät
- geraet
- analysegerät
- analysegeraet
- messgerät
- messgeraet
- analysator
- controller
- monitor
accessory_focus_terms:
- indikator
- indikatoren
- reagenz
- reagenzien
- zubehör
- zubehor
- ersatzteil
- ersatzteile
- verbrauchsmaterial
- service set
- serviceset
- filter
- pumpenkopf
- motorblock
- puffer
- pufferlösung
- pufferloesung
- kalibrierpuffer
- kalibrierlösung
- kalibrierloesung
prompt_views:
origin: genre_native
main_device_request_keywords:
- messanlage
- messanlagen
- anlage
- anlagen
- messgerät
- messgeraet
- analysegerät
- analysegeraet
- analysator
- analyzer
- gerät
- geraet
- system
- monitor
- controller
- testomat
- testoamt
accessory_request_keywords:
- passend
- passende
- passendes
- zubehör
- zubehor
- dazu
- indikator
- indikatoren
- ph-indikator
- ph indikator
- ph-indikatoren
- ph indikatoren
- reagenz
- kit
- set
- zusatz
- ergänzung
- ergaenzung
- anschlusskabel
- kabel
- sensorkabel
- elektrodenkabel
- elektrode
- puffer
- kalibrierpuffer
- kalibrierlösung
- kalibrierloesung
main_device_product_keywords:
- messanlage
- messanlagen
- messgerät
- messgeraet
- analysegerät
- analysegeraet
- analysator
- analyzer
- online-analysator
- online analysegerät
- gerät
- geraet
- system
- monitor
- controller
- testomat
accessory_product_keywords:
- indikator
- indikatoren
- indicator
- reagenz
- reagenzien
- reagent
- zubehör
- zubehor
- ersatzteil
- ersatzteile
- kit
- set
- verbrauchsmaterial
- consumable
- nachfüll
- nachfuell
- refill
- lösung
- loesung
- solution
- teststreifen
- anschlusskabel
- kabel
- sensorkabel
- elektrodenkabel
- elektrode
- puffer
- kalibrierpuffer
- kalibrierlösung
- kalibrierloesung
- filter
- pumpenkopf
- motorblock
- service set
- serviceset
- service-set
- ph-indikator
- ph indikator
- ph-indikatoren
- ph indikatoren
no_llm_fallback_terms:
origin: genre_native
main_device_request_keywords:
- anlage
- messanlage
- gerät
- geraet
- messgerät
- messgeraet
- analysegerät
- analysegeraet
- analysator
- analyzer
- system
- testomat
- testomaten
- testoamt
- testomate
- pockettester
accessory_product_keywords:
- indikator
- indicator
- indikatortyp
- reagenz
- reagent
- reagenzsatz
- kalibrierlösung
- kalibrierloesung
- pufferlösung
- pufferloesung
- reinigungslösung
- reinigungsloesung
- kalibrier
- puffer
- zubehör
- zubehor
- accessory
- ersatzteil
- verbrauch
- consumable
- kit
- set
- flasche
- bottle
- 100 ml
- 500 ml
- 100ml
- 500ml
product_attributes:
description: Current genre attributes and constraint terms. Fashion would typically replace these with size, color, material, fit and variant constraints.
direct_attribute_cleanup:
origin: genre_native
product_type_terms:
- anschlusskabel
- kabel
- sensorkabel
- elektrodenkabel
- elektrodenanschlusskabel
- messkabel
- verbindungskabel
- steckerkabel
- elektrode
- sensor
- puffer
- kalibrierpuffer
- pufferlösung
- pufferloesung
- kalibrierlösung
- kalibrierloesung
stop_terms:
- zeige
- zeig
- suche
- such
- mir
- bitte
- für
- fuer
- nach
- mit
- ohne
- von
- zum
- zur
- der
- die
- das
- ein
- eine
- einen
- länger
- laenger
- lang
- kürzer
- kuerzer
- größer
- groesser
- kleiner
- über
- ueber
- unter
- mindestens
- maximal
- maximum
- minimum
- ab
- bis
- mehr
- weniger
- als
comparative_constraint_patterns:
- /\b(?:länger|laenger|kürzer|kuerzer|größer|groesser|kleiner|über|ueber|unter|mindestens|maximal|maximum|minimum|ab|bis|mehr\s+als|weniger\s+als)\s+(?P<value>\d+(?:[,.]\d+)?\s*[\p{L}µ°%]*)\b/iu
size_and_color_terms:
origin: genre_native
size_token_terms:
- xs
- s
- m
- l
- xl
- xxl
- xxxxl
size_terms:
- größe
- groesse
- grösse
color_terms:
- schwarz
- weiß
- weis
- blau
- grau
- beige
- rosa
- pink
- gruen
- orange
- braun
patterns:
sku_like: /\b\d{4,10}\b/u
price_value_template: /\b\d+(?:[.,]\d+)?\s*(?:{price_pattern})\b/u
size_extraction_template: /\b(?:{size_pattern})\s*([a-z0-9.-]+)\b/u
size_value_template: /\b(?:{size_pattern})\s*[a-z0-9.-]+\b/u
size_token_value_template: /\b(?:{size_token_pattern})\b/u
color_value_template: /\b(?:{color_pattern})\b/u
model_like_product: /\b[a-zäöüß][a-zäöüß®\-]*(?:\s+[a-zäöüß][a-zäöüß®\-]*){0,2}\s+\d{2,5}[a-z0-9\-]*\b/u
numeric_length_constraints:
origin: genre_native
length_sort:
enabled: true
trigger_patterns:
- /\b(?:ordne|sortiere|sortiert|sortierung)\b.{0,80}\b(?:meter|metern|m)\b/iu
- /\bnach\s+(?:meter|metern|m)\b/iu
value_patterns:
- /(?P<value>\d+(?:[,.]\d+)?)\s*(?:m|meter|metern)\b/iu
length_filter:
enabled: true
min_patterns:
- /\b(?:ab|mindestens|minimum|min\.?|>=|größer\s+gleich|groesser\s+gleich)\s*(?P<value>\d+(?:[,.]\d+)?)\s*(?:m|meter|metern)\b/iu
- /\b(?:länger|laenger|größer|groesser|mehr)\s+(?:als\s+)?(?P<value>\d+(?:[,.]\d+)?)\s*(?:m|meter|metern)\b/iu
- /(?P<value>\d+(?:[,.]\d+)?)\s*(?:m|meter|metern)\s*(?:oder\s+)?(?:länger|laenger|mehr)\b/iu
max_patterns:
- /\b(?:bis|maximal|maximum|max\.?|höchstens|hoechstens|<=|kleiner\s+gleich)\s*(?P<value>\d+(?:[,.]\d+)?)\s*(?:m|meter|metern)\b/iu
- /\b(?:kürzer|kuerzer|kleiner|weniger)\s+(?:als\s+)?(?P<value>\d+(?:[,.]\d+)?)\s*(?:m|meter|metern)\b/iu
- /(?P<value>\d+(?:[,.]\d+)?)\s*(?:m|meter|metern)\s*(?:oder\s+)?(?:kürzer|kuerzer|weniger)\b/iu
brands_and_canonical_terms:
description: Genre-specific brands, canonical tokens and query enrichment rules.
known_brands:
origin: genre_native
terms:
- heyl
- horiba
- neomeris
canonical_terms:
origin: genre_native
map:
indikatoren: indikator
indicators: indikator
indicator: indikator
reagenzien: reagenz
reagents: reagenz
reagent: reagenz
produkte: produkt
query_enrichment_rules:
origin: genre_native
rules:
Wasserhärte: Resthärte
Gerät: Modell
Indikator: Chemie
Seminar: Webinar
Schulung: Seminar
Indikatoren: Indikator
Wasserhärte-Grenzwert: Resthärte
Resthärte-Grenzwert: Wasserhärte
Grenzwert: Überwachungsbereich
store: shop
Indikatortyp: Indikator
accessory_focus_variants:
origin: genre_native
map:
values:
indicator_terms:
- indikator
- indikatoren
reagent_terms:
- reagenz
- reagenzien
spare_part_terms:
- ersatzteil
- ersatzteile
service_set_terms:
- service set
- serviceset
- service-set
aliases:
indikator: indicator_terms
indikatoren: indicator_terms
reagenz: reagent_terms
reagenzien: reagent_terms
ersatzteil: spare_part_terms
ersatzteile: spare_part_terms
service set: service_set_terms
serviceset: service_set_terms
service-set: service_set_terms
rag_evidence_synonyms:
origin: genre_native
map:
values:
salinity_terms:
- salinität
- salinitaet
- salinity
- salzgehalt
- tds
- leitfähigkeit
- leitfaehigkeit
redox_terms:
- redox
- orp
- oxidations-reduktionspotential
- oxidations reduktionspotential
ph_terms:
- ph
- ph-wert
- ph wert
chlorine_terms:
- chlor
- freies chlor
- gesamtchlor
- chlorine
aliases:
salinität: salinity_terms
salinitaet: salinity_terms
salinity: salinity_terms
redox: redox_terms
orp: redox_terms
ph: ph_terms
chlor: chlorine_terms
intent_and_routing:
description: Genre-specific words and patterns that steer commerce/advisory routing.
fuzzy_routing_terms:
origin: genre_native
terms:
- shop
- suche
- suchen
- such
- finde
- finden
- kostet
- kosten
- preis
- preise
- preisen
- preiswert
- preiswerte
- günstig
- guenstig
- kaufen
- bestellen
- produkt
- produkte
- artikel
- sku
- online
- analysegerät
- analysegeraet
- messgerät
- messgeraet
- handmessgerät
- handmessgeraet
- pockettester
- analysator
- analyzer
- indikator
- indikatoren
- reagenz
- reagenzien
- verbrauchsmaterial
- zubehör
- zubehoer
- ersatzteil
- ersatzteile
- anschlusskabel
- kabel
- sensorkabel
- elektrode
- elektrodenkabel
- puffer
- kalibrierpuffer
- kalibrierlösung
- kalibrierloesung
- kalibrierung
- lösung
- loesung
- messen
- messung
- überwachen
- ueberwachen
- kontrollieren
- schwimmbad
- pool
- becken
- wasseranalyse
- geeignet
- passend
- empfehlung
- empfehlen
- empfiehl
commerce_intent:
origin: genre_native
strong_signals:
- shop
- alle
- preis
- preise
- preisen
- kunde
- online
- produkt
- artikel
- sku
- kaufen
- kostet
- suche
- such
- finde
- finden
- analysegerät
- analysegeraet
- messgerät
- messgeraet
- pockettester
- pocket tester
- handmessgerät
- handmessgeraet
- analysator
- analyzer
- puffer
- kalibrierpuffer
- kalibrierlösung
- kalibrierloesung
- kalibrierung
- chemie
- reagenz
- reagenzien
- verbrauchsmaterial
- zubehör
- zubehoer
- ersatzteil
- anschlusskabel
- kabel
- sensorkabel
- elektrode
- elektrodenkabel
advisory_signals:
- passt
- eignet
- besser
- besten
- gut
- gut für
- gut fuer
- passend für
- passend fuer
- geeignet
- geeigent
- empfiehl
- empfehl
advisory_product_selection_patterns:
- /\bmit\s+welche(?:m|n|r|s)?\s+(?:testomat(?:en)?|pockettester|pocket\s+tester|analysegerät|analysegeraet|messgerät|messgeraet|analysator|analyzer)\b.*\b(?:messen|messung|überwach(?:en|ung)?|ueberwach(?:en|ung)?)\b/u
- /\bwelche(?:r|s|n|m)?\s+(?:testomat(?:en)?|pockettester|pocket\s+tester|analysegerät|analysegeraet|messgerät|messgeraet|analysator|analyzer)\b.*\b(?:kann|können|koennen|misst|messen|überwacht|ueberwacht|eignet|geeignet|passt|gut|empfehl)\b.*\b(?:messen|messung|überwach(?:en|ung)?|ueberwach(?:en|ung)?)\b/u
- /\b(?:testomat(?:en)?|pockettester|pocket\s+tester|analysegerät|analysegeraet|messgerät|messgeraet|analysator|analyzer)\b.*\b(?:für|fuer)\b.*\b(?:messung|messen|überwachung|ueberwachung)\b/u
- /\b(?:ich\s+)?(?:würde|wuerde|möchte|moechte|will|brauche|benötige|benoetige)\b.{0,80}\b(?:messen|messung|überwachen|ueberwachen|kontrollieren)\b/u
- /\b(?:ich\s+)?(?:suche|finde)\b.{0,120}\b(?:lösung|loesung|gerät|geraet|messgerät|messgeraet|handmessgerät|handmessgeraet|pockettester|analysegerät|analysegeraet|analysator|produkt|artikel)\b.{0,120}\b(?:messen|messung|überwachen|ueberwachen|kontrollieren|wasseranalyse|schwimmbad|pool|becken)\b/u
- /\b(?:messen|messung|überwachen|ueberwachen|kontrollieren)\b.{0,80}\b(?:schwimmbad|pool|becken|wasseranalyse)\b/u
explicit_commerce_intent_patterns:
- /\bshop\b/u
- /\bpreis(?:e|en)?\b/u
- /\bkosten\b/u
- /\bkostet\b/u
- /\bkaufen\b/u
- /\bbestellen\b/u
- /\bprodukt\b/u
- /\bartikel\b/u
- /\bsku\b/u
- /\bonline\b/u
- /\bchemie\b/u
- /\breagenz(?:ien)?\b/u
- /\bverbrauchsmaterial(?:ien)?\b/u
- /\bzubehör\b/u
- /\bzubehoer\b/u
- /\bersatzteil(?:e)?\b/u
- /\banschlusskabel\b/u
- /\bkabel\b/u
- /\bsensorkabel\b/u
- /\belektrodenkabel\b/u
model_like_product_pattern: /\b[a-zäöüß][a-zäöüß®\-]*(?:\s+[a-zäöüß][a-zäöüß®\-]*){0,2}\s+\d{2,5}[a-z0-9\-]*\b/u
sales_intent:
origin: genre_native
sales_signals:
- preis
- preise
- kosten
- lizenz
- lizenzmodell
- tarif
- tarife
- gebuehr
- gebühr
- monatlich
- jaehrlich
- jährlich
- abo
- subscription
comparison_signals:
- /\bvergleich(en)?\b/u
- /\bvs\b/u
- /\bgegenueber\b/u
- /\balternative(n)?\b/u
- /\bunterschied(e)?\b/u
- /\bbesser\b/u
objection_signals:
- problem
- risiko
- nachteil
- datenschutz
- dsgvo
- sicherheit
- compliance
- kritik
- zweifel
- unsicher
implementation_signals:
- implementierung
- implementieren
- integration
- integrieren
- einführung
- einfuehrung
- aufwand
- setup
- rollout
- migration
- installation
- api
- schnittstelle
roi_signals:
- roi
- rentabilitaet
- rentabilität
- business case
- einsparung
- kosten senken
- umsatz steigern
- effizienz steigern
context_resolution:
description: Current follow-up anchors and shop meta-query handling for this genre.
commercial_table_follow_up:
origin: genre_native
history_anchor_patterns:
- /\bTestomat(?:®)?\s+\d{3,4}\b/iu
- /\b(?:Indikatortyp|Indikator|Indikatoren|Reagenz|Reagenzien|Zubehör|Zubehoer)\b/iu
indicator_marker_patterns:
- /\b(?:Indikatortyp|Indikator(?:en)?|indicator(?:\s+type)?|Reagenz(?:ien)?)\b/iu
query_template_with_model: '{model} indikator'
query_template_without_model: indikator
referential_terms:
origin: genre_native
terms:
- der
- die
- das
- den
- dem
- dazu
- davon
- dafür
- dafuer
- dieser
- diese
- dieses
- obige
- obigen
- oben
- vorher
- zuvor
- gleiche
- gleichen
- selbe
- selben
history_anchor_enrichment:
origin: genre_native
trigger_terms:
- indikator
- indikatortyp
- indicator
- reagenz
- reagenzsatz
- reagent
- zubehör
- zubehor
- accessory
# Terms that should be sent to Shopware for referential accessory or
# consumable follow-ups. Broader RAG markers can remain in
# trigger_terms without becoming dominant shop query tokens.
query_terms:
- indikator
- indicator
- reagenz
- reagent
- zubehör
- zubehor
- accessory
# Terms that are useful for interpreting RAG/history phrasing but are
# too meta or type-oriented for the plain Shopware text query.
query_noise_terms:
- indikatortyp
- indicator type
- typ
- type
anchor_patterns:
- /\b(?:indikator(?:typ)?|indicator(?:\s+type)?|reagenz(?:satz|typ)?|reagent(?:\s+set|\s+type)?|typ|type)\s+[A-Za-zÄÖÜäöüß]{0,8}\s*\d{1,5}(?:\s*[A-ZÄÖÜ]{1,4})?(?:\s*%)?\b/iu
template: '{anchor} {query}'
max_query_terms: 2
meta_query_guard:
origin: genre_native
meta_only_terms:
- shop
- preis
- preise
- preisen
- kosten
- kostet
- shopsuche
- shop-suche
context_fallback_filter_terms:
- preis
- preise
- preisen
- kosten
- kostet
- grenzwert
- grenzwerte
- grenzwerten
- welche
- gut
- geeignet
- messen
- gemessen
rag_anchor_enrichment:
origin: genre_native
numeric_focus_patterns:
- /(?P<value>\d+(?:[,.]\d+)?)\s*(?P<unit>°?\s*d\s*h|dh|dH)/iu
product_title_patterns:
- /#\s*Produkt\s+Titel:\s*`(?P<title>[^`]+)`/iu
- /\*\*Produktname:\*\*\s*(?P<title>[^\r\n]+)/iu
anchor_bonus_patterns:
- /\b[\p{L}][\p{L}\p{N}®+._-]*(?:\s+|[-_])\d{2,5}\b/u
subject_terms:
- resthärte
- resthaerte
- wasserhärte
- wasserhaerte
- gesamthärte
- gesamthaerte
- härte
- haerte
- grenzwert
- messung
shop_query_runtime:
description: Current direct Shopware query cleanup and deterministic answer wording for this genre.
current_input_preservation_terms:
origin: genre_native
terms:
- ph
- rx
- th
- tc
- redox
- orp
- select
- sensor
- brauerei
- brauereien
- brauwasser
- schwimmbad
- schwimmbecken
- pool
- 0,02
stopword_cleanup:
origin: genre_native
terms:
- zeige
- zeig
- suche
- such
- finde
- find
- gib
- gebe
- nenne
- mir
- bitte
- ich
- wir
- möchte
- moechte
- möchten
- moechten
- würde
- wuerde
- will
- brauche
- benötigen
- benoetigen
- benötige
- benoetige
- gern
- gerne
- im
- in
- shop
- für
- fuer
- nach
- mit
- ohne
- von
- zum
- zur
- der
- die
- das
- ein
- eine
- einen
- ordne
- sortiere
- sortiert
- sortierung
- liste
- tabelle
- übersicht
- uebersicht
- auflistung
- meter
- metern
- messen
- messe
- messung
- überwachen
- ueberwachen
- kontrollieren
- think
positive_token_filter:
origin: genre_native
enabled: true
min_query_tokens_after_filter: 1
include_current_input_preservation_terms: true
include_semantic_shop_search_tokens: true
include_product_role_terms: true
# Keep this as the small positive allow-list for genre-specific
# product families, applications and shop-searchable measurement terms
# that are not already covered by the role/semantic vocabularies above.
allowed_terms:
- testomat
- testomaten
- pockettester
- pocket tester
- wasserhärte
- wasserhaerte
- resthärte
- resthaerte
- gesamthärte
- gesamthaerte
- chlor
- freies chlor
- gesamtchlor
- brauerei
- brauereien
- brauwasser
- schwimmbad
- schwimmbecken
- pool
- redox
- orp
- ph
- rx
- th
- tc
- tp
- tm
# These terms may be useful for RAG/reference resolution, but they are
# poor plain Shopware search terms and must not dominate the final
# shop query.
blocked_terms:
- indikatortyp
- typ
- type
- für
- fuer
- mit
- bei
- beim
- gemessen
- messen
- messung
- wert
- wurde
- welcher
- welchem
- welche
- dazu
- think
- möchte
- moechte
- möchten
- moechten
- würde
- wuerde
- will
- brauche
- benötigen
- benoetigen
- benötige
- benoetige
- gern
- gerne
- passend
- passende
- passendes
code_patterns:
- '/^\d+(?:[,.]\d+)?$/u'
- '/^\d+(?:[,.]\d+)?(?:m|mm|cm|ml|l)$/iu'
- '/^[a-z]{1,4}\d{1,5}[a-z0-9-]*$/iu'
- '/^\d{1,5}[a-z0-9-]*$/iu'
# Pure alpha model suffixes are only preserved when they appear next
# to numeric/model context in the same query, e.g. family number suffix.
# The explicit list is a domain-maintained safety anchor for known model
# suffixes; the pattern keeps the behavior extensible for new variants.
adjacent_variant_terms:
- thcl
- clf
- clt
- cl
- cal
- calc
- lab
- th
- mono
- r
- evo
- eco
- plus
- c
- duo
adjacent_variant_patterns:
- '/^[a-z]{2,8}\d{0,4}$/iu'
generic_device_anchor:
origin: genre_native
enabled: true
# Generic device words are intent signals, not strong Shopware search
# terms. Only a configured measurement/application rule may add a
# product-family anchor, so "gerät" does not always become Testomat.
remove_generic_device_terms: true
template: '{anchor} {query}'
trigger_terms:
- gerät
- geraet
- geräte
- geraete
- messgerät
- messgeraet
- messgeräte
- messgeraete
- analysegerät
- analysegeraet
- analysator
- monitor
suppress_if_terms:
- testomat
- testomaten
- pockettester
- pocket tester
- titromat
- neodewa
- jumo
- sensor
- sonde
- elektrode
- kabel
- anschlusskabel
- indikator
- indikatortyp
- reagenz
- reagent
- zubehör
- zubehor
- ersatzteil
- verbrauchsmaterial
- kit
- set
anchor_rules:
- anchor: testomat 808 sio2
# SiO2/Silikat is a concrete measurement variant in the RAG
# device overview. Use the exact model-style anchor instead of the
# broad Testomat family so unrelated Testomat devices are not listed
# merely because they mention cooling or silicate deposits.
template: '{anchor}'
match_terms:
- silikat
- silikatüberwachung
- silikatueberwachung
- sio2
- si o2
- kieselsäure
- kieselsaeure
- anchor: testomat
match_terms:
- wasserhärte
- wasserhaerte
- resthärte
- resthaerte
- gesamthärte
- gesamthaerte
- chlor
- freies chlor
- gesamtchlor
- anchor: pockettester
match_terms:
- ph
- redox
- orp
- leitfähigkeit
- leitfaehigkeit
compound_prefix_match:
origin: genre_native
terms:
- puffer
- kalibrierpuffer
primary_identity_repair:
origin: genre_native
stop_terms:
- messgerät
- messgeraet
- messgeräte
- messgeraete
- messgeräten
- messgeraeten
- gerät
- geraet
- geräte
- geraete
- geräten
- geraeten
- handmessgerät
- handmessgeraet
- handmessgeräte
- handmessgeraete
- messkoffer
- koffer
semantic_shop_search_tokens:
origin: genre_native
terms:
- indikator
- indicator
- reagenz
- reagent
- zubehör
- zubehor
- ersatzteil
- anschlusskabel
- kabel
- sensorkabel
- elektrodenkabel
- verbrauchsmaterial
- chemie
- indikatorchemie
- reagenzchemie
- kit
- set
- filter
- pumpe
- pumpenkopf
- motorblock
- lösung
- loesung
- solution
- puffer
- pufferlösung
- pufferloesung
- kalibrierpuffer
- kalibrierlösung
- kalibrierloesung
- teststreifen
- gerät
- geraet
- messgerät
- messgeraet
- analysegerät
- analysegeraet
- analysator
- monitor
- controller
- system
direct_answer:
origin: genre_native
enabled: true
max_results: 10
intro: 'Aus den Shopdaten ergeben sich folgende passende Treffer:'
no_results: Ich finde in den Shopdaten keine passenden Treffer für die angefragte Produktsuche. Ich liste deshalb keine fachfremden Ersatzprodukte auf.
sorted_by_length_note: 'Sortierung: aufsteigend nach erkannter Kabellänge.'
min_length_filter_note: 'Filter: nur Treffer ab {value} m.'
max_length_filter_note: 'Filter: nur Treffer bis {value} m.'
result_identity_and_answer_policy:
description: Current role separation, fact-grounding and response-format rules that are genre-sensitive.
prompt_rules:
origin: genre_native
output_priority_technical:
- '- For technical questions, answer the exact requested fact first and keep it as the main answer.'
- '- If one source chunk contains both the best matching value and nearby comparison values, use the nearby values only as context and do not include them unless the user asks for comparison or alternatives.'
- '- For lowest/highest/minimum/maximum questions, answer only the requested extreme value and the product/device explicitly connected to it.'
- '- Do not add runner-up products, second-lowest values, adjacent ranges, broader tables, or explanatory comparisons unless explicitly requested.'
- '- For a product recommendation tied to an exact numeric value, keep the recommendation anchored to records that contain that exact value/unit. Do not pull indicator codes or ranges from records for other products.'
- '- If the user asks for a suitable device/product and not for an indicator, do not add indicator names unless a same-record device-value-indicator mapping is visible.'
response_format_technical:
- '- Write like technical documentation: precise, neutral, and source-close.'
- '- Prefer exact values, ranges, thresholds, compatibility notes, and application areas over general explanation.'
- '- For direct follow-up questions about an indicator, value, threshold, or device, answer the resolved mapping first before any table or explanation.'
- '- If the sources only support a negative finding, output only that negative finding and do not add speculative alternatives.'
- '- For product-selection answers, keep the answer minimal: suitable product if explicitly supported, exact evidence, current shop fields if same product identity is clear. Do not add sections for Vorteile, Einsatzbereiche, Messprinzip, or Hinweise unless directly asked and explicitly sourced.'
- '- For product-selection answers tied to a numeric value/range, do not include an indicator field unless the same retrieved record explicitly connects the selected product, numeric value/range, and indicator code.'
response_format_accessory:
- '- If the user directly asks for accessories, cables, electrodes, buffers, kits, sets, indicators, reagents, or consumables, answer the accessory request first instead of reframing it as a request for a measuring device.'
- '- For direct accessory shop searches, do not introduce Testomat, measuring-device, or main-device caveats unless the user asks for a device or the provided sources explicitly require a device context.'
- '- For direct accessory shop searches with matching shop hits, never begin with a missing-device statement; begin with the accessory hits or a short shop-only fallback sentence.'
- '- If the shop product name itself explicitly contains the requested accessory type and parameter, such as pH/Redox, treat it as a commercial accessory match and list the exact shop fields. Do not demand separate proof that the accessory itself measures the parameter.'
- '- If the user asks for a matching accessory for a named main device, separate the answer into: main device and matching accessory.'
- '- The main device must come first only when a main device is explicitly requested or named.'
- '- Only name an accessory as matching if compatibility is explicitly grounded in the provided sources.'
- '- Do not call accessories, indicators, reagents, kits, sets, or consumables a device, measuring device, or main product unless the source explicitly says so.'
fact_grounding_technical:
- '- For technical product questions, answer primarily with explicitly stated facts.'
- '- For measurement-parameter questions, do not treat similar or neighboring abbreviations as equivalent. In particular, p-Wert is not pH-Wert unless the source explicitly says pH or pH-Wert.'
- '- Do not invent or infer measurement principles, methods, calibration functions, benefits, advantages, application areas, or alternative products from product family names, search rank, or shop query wording.'
- '- Behave like a technical documentation assistant, not like a sales advisor.'
- '- Keep interpretations minimal and do not generalize application areas beyond the provided sources.'
- '- Do not describe benefits, consequences, risks, or operational outcomes unless they are explicitly stated in the sources.'
- '- Do not translate technical facts into business value unless the source explicitly does so.'
- '- Do not recommend process changes unless explicitly present in the source.'
- '- Do not use persuasive summaries or advisory conclusions.'
- '- If the retrieved knowledge describes one specific named product, stay within that product and do not merge related product families or variants.'
- '- Use neutral engineering language.'
- '- Do not name specific chemicals, indicator substances, standards, or mechanisms unless explicitly stated in the source.'
- '- If the source states signal logic such as green/red, output that signal logic only and do not expand it into operational recommendations or alarm semantics unless explicitly stated.'
- '- If the source lists application areas, repeat only those areas and do not broaden them.'
- '- If the source names an indicator and threshold, reproduce that exactly without extrapolation.'
- '- For lowest, highest, smallest, largest, minimum, maximum, Grenzwert, Messbereich or Aufloesung questions, first identify the exact numeric extreme from the retrieved knowledge and answer that value directly.'
- '- For lowest/highest/minimum/maximum questions, answer only the requested extreme unless the user explicitly asks for a comparison or alternatives.'
- '- For direct numeric lookup questions such as which device measures a given threshold, answer with the exact matching device/value pair first and avoid advisory caveats.'
- '- For product recommendations based on an exact numeric value, use only same-record evidence for the recommended product. Do not import indicator names, ranges, or variants from higher-ranked records that describe different products.'
- '- Do not add the runner-up product, second-lowest value, or adjacent range unless the user asks for it.'
- '- Do not add calibration, accuracy, pretreatment, temperature, or application notes unless those exact notes are requested and explicitly present in the retrieved source.'
- '- For follow-up questions such as "which indicator measures that value", first resolve the referenced value/device, then use the retrieved source entry that explicitly connects value, device and indicator.'
- '- For direct follow-up indicator/value questions, start with the exact mapping in one sentence, for example: Der Wert 0,02 °dH wird beim Testomat 808 mit Indikatortyp 300 gemessen.'
- '- Do not output the full indicator table, measurement principle, application areas, or advisory notes unless the user explicitly asks for all indicators, details, a table, or device information.'
- '- For numeric extreme questions, do not combine a value, device name, indicator name, range or product variant from different chunks unless the same retrieved entry explicitly connects them.'
- '- For exact-value product recommendations, if the retrieved record only supports product plus value/range, answer product plus value/range only; indicator details require an explicit same-record product-value-indicator mapping.'
- '- If several devices or indicators are present, keep each device-indicator-range assignment separate and do not transfer an indicator from one product to another.'
- '- For Testomat CAL or Testomat 2000 CAL threshold/range questions, use only source entries that explicitly name CAL or Testomat 2000 CAL in the same product record. Do not answer with Testomat 808 indicator ranges or the generic 0,02 °dH to 5 °dH range unless a CAL source record explicitly contains that exact assignment.'
- '- If the retrieved CAL-specific source records do not explicitly state numeric CAL threshold values, say that the exact CAL Grenzwerte are not belegbar from the provided sources instead of giving 0,02 °dH to 5 °dH as a typical range.'
- '- For Testomat CAL, do not transfer plain numeric 808 indicator types such as 300, 300 S, 301, 302, 303, 305, 310, 320, 330, or 350. CAL indicator statements must remain CAL-specific, for example TH-prefixed indicator codes when those are explicitly present in the CAL source.'
- '- If the source states only a threshold function, do not expand it into broader control logic.'
- '- If a detail is not explicitly stated in the provided sources, say so plainly.'
- '- Prefer short, source-close sentences over explanatory expansion.'
- '- If the sources only support that a product family is not suitable, output only that unsuitability and stop there.'
fact_grounding_with_shop:
- '- Use shop data as highest priority for current commercial fields: price, availability, URL, current shop-visible naming, and explicitly shop-visible product suitability for product-selection questions.'
- '- Use retrieved knowledge as highest priority for technical matching, thresholds, measurement principles, and technical explanation when it contains a matching product or fact.'
- '- If retrieved knowledge is silent or only contains unrelated products, but live shop results explicitly match the requested parameter/application, use the shop results and do not answer with a negative RAG-only conclusion.'
- '- If the user asks for Schwimmbad, Schwimmbecken, Pool, or typo-like pool wording, a product may only be recommended for that application when the same RAG or SHOP PRODUCT RECORD explicitly names that application. Chlor measurement alone is not proof of swimming-pool suitability.'
- '- If a product record proves Chlor measurement but not Schwimmbad, Schwimmbecken or Pool use, say exactly that distinction and avoid recommendation wording such as empfiehlt sich, geeignet für Schwimmbad, Anwendung im Schwimmbad, or für Schwimmbäder.'
- '- For product-selection questions, a shop result proves technical suitability only when the same SHOP PRODUCT RECORD explicitly states the requested measurement parameter, application, or compatibility. Search ranking, generated query terms, generic category matches, and similar wording are not proof.'
- '- If the requested parameter appears only in the generated shop query, metadata, unrelated highlights, or another product record, treat suitability as unverified and say that the shop hit requires technical verification.'
- '- Do not convert p-Wert, m-Wert, minus m-Wert, alkalinity, acid capacity, or other water-treatment parameters into pH or pH-Wert unless the same source explicitly says pH or pH-Wert.'
- '- When shop results are present and relevant, include current price and the actual URL if available.'
- '- If the shop data does not provide a positive price for a result, do not output any price for that result.'
- '- Do not let accessories, bundles, or service items override a technically better product match unless the user explicitly asks for them.'
- '- Do not call accessories, indicators, reagents, kits, sets, or consumables a device, measuring device, or main product unless the source explicitly says so.'
- '- Do not claim that an accessory is required, necessary, used for calibration, or sets the measurement range unless this is explicitly stated in the provided sources.'
- '- Do not assign the product number, price, URL, or availability of a reagent, accessory, kit, set, consumable, or service item to a device identified in retrieved knowledge.'
- '- Only use commercial fields for the main product when the shop item and the technically identified product clearly refer to the same product identity.'
- '- If the shop match is ambiguous, keep the technical identification and commercial details separate.'
- '- Shop product names are authoritative for their own shop URL, product number, price, availability, image, description, and metadata.'
- '- Do not rewrite a shop record heading with a similar device name from retrieved knowledge. If identities differ or are uncertain, separate the RAG device from the shop hit.'
- '- If the user asks for a main device, measuring device, analyzer, system, or measuring installation, do not present an accessory, indicator, reagent, kit, set, consumable, or service item as the requested main solution.'
- '- If the user asks for an accessory, indicator, reagent, consumable, kit, or solution with a specific measurement parameter, do not replace the requested parameter with another parameter. A hardness indicator is not a valid answer to a pH-indicator request unless the same source explicitly states pH measurement, pH determination, pH measuring range, or an equivalent parameter-specific purpose.'
- '- Mentions of operating conditions, allowed sample pH, reagent-solution pH, storage pH, or pH values at a temperature are not measurement-parameter evidence by themselves.'
- '- If the only shop hit is role-incompatible with the requested product role, state that no matching main-device shop hit is available in the provided shop data; mention the incompatible hit only as a separate accessory/consumable hit if useful.'
- '- If a SHOP PRODUCT RECORD says Commercial fields suppressed, do not output its price, availability, URL, product number, image, or metadata anywhere in the answer.'
- '- Never write shop-hit lines such as price, availability, URL, product number, or Shop-Treffer below a RAG device unless the same exact SHOP PRODUCT RECORD names that device as the exact shop product.'
- '- Never rename a role-incompatible accessory shop record into a main device in headings, summaries, or shop-hit lines.'
- '- If the user asks for the price or availability of a referenced accessory, indicator, reagent, kit, set, or consumable, use commercial fields only from a shop result that clearly matches that accessory identity and code.'
- '- If an accessory, indicator, reagent, kit, set, or consumable code is explicitly requested, do not merge shop variants whose code has an additional suffix, prefix, or variant token unless the user explicitly requested that full variant code.'
- '- For such accessory price follow-ups, do not answer with the price, URL, product number, or availability of the main device or of unrelated reagents; if no matching accessory shop item is present, say that the price is not available in the provided shop data.'
- '- If retrieved knowledge identifies a concrete device/model variant with a suffix or code and live shop data contains the same concrete identity, answer with that specific variant instead of downgrading to the generic base family.'
- '- If the primary shop hit is only a generic base family but extended shop search provides more specific RAG-identified variants, use the specific variants for the product recommendation and keep any generic base-family hit separate.'
prompt_keyword_views:
origin: genre_native
technical_product_keywords:
- technisch
- technical
- produkt
- product
- gerät
- device
- modell
- model
- messprinzip
- measurement principle
- schnittstelle
- interface
- relais
- relay
- indikator
- indicator
- grenzwert
- threshold
- messbereich
- measurement range
- gemessen
- measured
- minimaler
- minimum
- resthärte
- resthaerte
- °dh
- dh
- spannung
- voltage
- strom
- current
- druck
- pressure
- temperatur
- temperature
- schutzart
- ip
- fehlercode
- error code
- wasserhärte
- hardness
- testomat
- chlor
- chlormessung
measurement_evidence_guard_terms:
origin: genre_native
accessory_lookup_guard_terms:
- indikator
- indikatoren
- indicator
- reagenz
- reagenzien
- reagent
- teststreifen
accessory_lookup_passthrough_terms:
- anschlusskabel
- kabel
- sensorkabel
- elektrodenkabel
- elektrode
- puffer
- kalibrierpuffer
- kalibrierlösung
- kalibrierloesung
generic_positive_context_terms:
- Messung
- messen
- misst
- Messbereich
- Messparameter
- Messgröße
- Messgroesse
- Bestimmung
- bestimmen
- Analyse
- analysiert
- überwachen
- ueberwachen
- Indikator für
- Indikator fuer
- Reagenz für
- Reagenz fuer
- Sensor
- Elektrode
generic_negative_context_terms:
- Betriebsbereich
- Betriebsumgebung
- Einsatzbedingungen
- störungsfrei
- stoerungsfrei
measurement_evidence_maps:
origin: genre_native
request_terms:
ph:
- ph
- ph-wert
- ph wert
redox:
- redox
- orp
- oxidations-reduktionspotential
- oxidations reduktionspotential
free_chlorine:
- freies chlor
- freiem chlor
- freien chlor
- free chlorine
positive_terms:
ph:
- pH
- pH-Wert
- ph wert
redox:
- Redox
- ORP
- Oxidations-Reduktionspotential
- Oxidations Reduktionspotential
free_chlorine:
- freies Chlor
- freiem Chlor
- freien Chlor
- free chlorine
non_equivalent_terms:
ph:
- p-Wert
- p Wert
- m-Wert
- minus m-Wert
- Alkalität
- Säurekapazität
- mmol/l
free_chlorine:
- Chlor gesamt
- Gesamtchlor
- total chlorine
search_repair:
description: Current search repair tokens, candidate patterns and exact identifier helpers.
direct_product_attribute_lookup:
origin: genre_native
enabled: true
min_query_tokens_after_cleanup: 2
comparative_constraint_patterns:
- /\b(?:länger|laenger|kürzer|kuerzer|größer|groesser|kleiner|über|ueber|unter|mindestens|maximal|maximum|minimum|ab|bis|mehr\s+als|weniger\s+als)\s+(?P<value>\d+(?:[,.]\d+)?\s*[\p{L}µ°%]*)\b/iu
requested_accessory_code_terms:
origin: genre_native
terms:
- requested_accessory_code_terms
candidate_patterns:
origin: genre_native
specific_model_candidate_patterns:
- /\b([A-Za-zÄÖÜäöüß][A-Za-zÄÖÜäöüß®\-]*(?:\s+[A-Za-zÄÖÜäöüß0-9][A-Za-zÄÖÜäöüß0-9®\-]*){0,3}\s+\d{2,5}(?:\s+[A-ZÄÖÜ]{1,8})?)\b/u
patterns:
model_candidate: /\b([A-Za-zÄÖÜäöüß][A-Za-zÄÖÜäöüß®\-]*(?:\s+[A-Za-zÄÖÜäöüß][A-Za-zÄÖÜäöüß®\-]*){0,2}\s+\d{2,5}[A-Za-z0-9\-]*(?:\s+[A-Za-zÄÖÜäöüß][A-Za-zÄÖÜäöüß0-9\-]{1,7})?)\b/u
accessory_candidate_template: /\b((?:{terms})\s+\d{1,5}[A-Za-z0-9\-]*)\b/iu
requested_accessory_code: /\b(?:indikator(?:typ)?|indicator(?:\s*type)?|reagenz|reagent)\s*([A-Za-z]{0,3}\s*\d{1,5}[A-Za-z0-9\-]*)\b/iu
accessory_or_bundle_template: /\b({terms})\b/iu
model_like: /\b[A-Za-zÄÖÜäöüß][A-Za-zÄÖÜäöüß®\-]*(?:\s+[A-Za-zÄÖÜäöüß][A-Za-zÄÖÜäöüß®\-]*){0,2}\s+\d{2,5}[A-Za-z0-9\-]*(?:\s+[A-Za-zÄÖÜäöüß][A-Za-zÄÖÜäöüß0-9\-]{1,7})?\b/u
specificity_boost_template: /\b(?:{terms})\b/iu
contains_digit: /\d/u
whitespace_collapse: /\s+/u
tokenize_cleanup: /[^\p{L}\p{N}\s\-]+/u
candidate_terms:
origin: genre_native
model_candidate_exclude_terms:
- requested_accessory_code_terms
- shop_meta_terms
generic_candidate_tokens:
- wasser
- messgerät
- messgeraet
- produkt
- geräte
- geraete
- gerät
- geraet
- resthärte
- resthaerte
- preis
- infos
- wissen
accessory_candidate_terms:
- indikator
- indicator
- reagenz
- reagent
- kit
- set
accessory_or_bundle_terms:
- passend
- passende
- zubehor
- zubehör
- dazu
- zusatz
- erganzung
- ergänzung
- indikator
- reagenz
- kit
- set
- auch\s+das
- mit\s+preis\s+und\s+allen\s+infos
specificity_boost_terms:
- indikator
- indicator
- testomat
- tritromat
- titromat
- reagenz
- reagent
retrieval_and_language:
description: Current protected terms, cleanup profiles and exact-selection helpers that are genre-sensitive. Retrieval engine parameters remain outside this area.
protected_terms:
origin: genre_native
terms:
- nicht
- kein
- keine
- welche
- testomat
- indikator
- indikatortyp
- ph
- rx
- redox
- orp
- th
- tc
- 0,02
cleanup_profiles:
origin: genre_native
commerce_query:
stopword_group_sets:
- de_conversation
stopword_groups:
- pronouns
- user_instruction_terms
- response_style
phrase_group_sets:
- user_instruction
rag_evidence:
stopword_group_sets:
- de_conversation
stopword_groups:
- user_instruction_terms
shop_context_fallback:
stopword_group_sets:
- de_conversation
stopword_groups:
- pronouns
- user_instruction_terms
- question_terms
- usage_terms
- reference_fillers
- response_style
phrase_group_sets:
- user_instruction
meta_term_groups:
- presentation
retrieval_vocabulary_views:
origin: genre_native
generic_product_tokens:
- produkt
- produkte
- produktkarte
- titel
- geraet
- gerät
- messgeraet
- messgerät
- wasser
- haerte
- härte
- resthaerte
- resthärte
- analyse
- analysator
- automat
- online
- messung
- messen
- preis
- preise
- kosten
- info
- infos
- passend
- richtige
- richtiges
- geeignet
- geeignete
- welche
- welcher
- welches
- brauche
- suche
important_short_model_tokens:
- th
- tc
- tp
- tm
- ph
- rx
family_descriptor_tokens:
- evo
- eco
- self
- clean
- mini
- pro
- plus
- basic
- lab
- inline
- compact
- panel
- sc
looks_like_reagent_tokens:
- indikator
- reagenz
- laborchemikalie
- chemikalie
- sicherheitsdatenblatt
- sdb
- msds
- ufi
- gebinde
- flasche
- ersatzteil
- zubehoer
- zubehör
- service set
- filtereinsatz
- kerzenfilter
- druckregler
- ph
looks_like_safety_docs:
- sicherheitsdatenblatt
- sdb
- msds
- gefahrenbewertung
- gefahrenpiktogramm
- signalwort
- lagerung
- transport
- clp
- kennzeichnung
- h290
- pbt
- vpvb
looks_like_device_words:
- geraet
- gerät
- messgeraet
- messgerät
- analysator
- automat
- messung
- messen
- ueberwachung
- überwachung
- online
- monitor
- modell
- analysegerät
- tester
looks_like_document_words:
- datenblatt
- dokument
- pdf
- handbuch
- manual
- beschreibung
- sdb
- sicherheitsdatenblatt
- msds
looks_like_safety_words:
- gefahr
- gefahrgut
- clp
- h290
- sicherheit
- kennzeichnung
- transport
- lagerung
- piktogramm
exact_selection:
origin: genre_native
token_variant_prefixes:
indikator:
- indikator
- indikatortyp
grenzwert:
- grenzwert
messbereich:
- messbereich
testomat:
- testomat
indicator_question_tokens:
- indikator
- indikatortyp
- reagenz
- reagens
- chemie
indicator_question_phrases:
- mit welchem
- womit
indicator_table_heading_patterns:
- /verf(?:ü|ue)gbare\s+indikatortypen|indikatortypen|indikatorvarianten/iu
indicator_table_header_patterns:
- /\|\s*(?:typ|indikator)\s*\|\s*(?:grenzwert|messbereich|bereich)/iu
indicator_table_row_patterns:
- /\|\s*[A-Z]{0,4}\s*\d{2,4}\s*[A-Z]?\s*\|\s*\d/iu
indicator_table_required_primary_terms:
- indikator
indicator_table_required_context_terms:
- grenzwert
- messbereich
- bereich
shop_data_mapping:
description: Current Shopware field mapping and matching text behavior that changes per installation/genre.
custom_fields:
origin: genre_native
primary: migration_Backup_product_attr1
secondary: migration_Backup_product_attr2
use_cases: migration_Backup_product_attr4
languages: migration_Backup_product_attr5
text:
origin: genre_native
primary_secondary_separator: ': '
use_cases_label: 'Einsatzgebiete: '
languages_label: 'Sprachen: '
custom_field_join_separator: ' | '
role_guard:
origin: genre_native
filter_accessory_products_for_device_queries: true
keep_ambiguous_products_for_device_queries: true
commerce_connection:
origin: genre_native
store_api_base_url: '%env(SHOPWARE_STORE_API_BASE_URL)%'
max_shop_results: '%env(SHOPWARE_STORE_API_MAX_RESULT)%'
governance_and_regression:
description: Current guardrail terms that intentionally protect this genre during audits and regression checks.
regression_baseline:
origin: genre_native
protected_short_model_tokens:
- th
- tc
- tp
- tm
- ph
- rx
protected_measurement_values:
- 0,02
- 0,05
- 0,1
- 0,25
- 0,5
- 1,0
- 2,0
- 2,5
- 5,0
protected_technical_prompt_keywords:
- testomat
- indikator
- grenzwert
- messbereich
- gemessen
technical_priority_required_markers:
- runner-up
- second-lowest
- comparison
protected_accessory_prompt_keywords:
- indikator
- reagenz
protected_search_repair_specificity_terms:
- indikator
- testomat
- reagenz
protected_retrieval_reagent_words:
- indikator
- reagenz
protected_retrieval_device_word_groups:
geraet:
- geraet
- gerät
shop_prompt_regression_original_query: testomat 808 0,02
shop_prompt_required_output_instruction_markers:
- Output only the final search query.
- 'Output format:'
shop_query_meta_guard_terms:
- shop
- suche
shop_query_context_fallback_filter_terms:
- welchem
- kann
- messen
shop_query_current_input_preservation_terms:
- ph
- redox
vocabulary_guardrails:
origin: genre_native
core_pattern_audit:
origin: genre_native
source_roots:
- src
excluded_path_prefixes:
- src/Config/CorePatternAuditProvider.php
- src/Command/ConfigPatternAuditCommand.php
- src/Entity/
excluded_path_patterns:
- ~(^|/)vendor(/|$)~
- ~(^|/)var(/|$)~
- ~(^|/)node_modules(/|$)~
warning_path_prefixes:
- src/Agent/
- src/Commerce/
- src/Intent/
- src/Knowledge/Retrieval/
suspicious_calls:
- preg_match
- preg_match_all
- preg_replace
- preg_split
- str_contains
- stripos
- strpos
- str_starts_with
- str_ends_with
- in_array
- array_intersect
- array_intersect_key
domain_marker_terms:
- testomat
- indikator
- indikatortyp
- grenzwert
- messbereich
- reagenz
- reagens
- shop
- produkt
- artikel
- kaufen
- bestellen
- geraet
- gerät
- messgerät
- messgeraet
- analysegerät
- analysegeraet
- analysator
- wasserhärte
- wasserhaerte
- chlor
- redox
allowed_literal_patterns:
- path: src/Knowledge/Retrieval/NdjsonChunkLookup.php
pattern: /Produkt\\s\+Titel/iu
reason: Technical markdown heading parser for product-title metadata.
- path: src/Knowledge/Retrieval/NdjsonHybridRetriever.php
pattern: /Produkt\\s\+Titel/iu
reason: Technical markdown heading parser for product-title metadata.
max_snippet_length: 180