From ed11e6e9c8db26a7f714ebf36fdbe4005b94be09 Mon Sep 17 00:00:00 2001 From: team 1 Date: Tue, 5 May 2026 17:17:35 +0200 Subject: [PATCH] p43F --- config/retriex/search_repair.yaml | 30 ++--- config/retriex/vocabulary.yaml | 17 +++ ...R_ACCESSORY_CODE_VOCABULARY_VIEW_README.md | 109 ++++++++++++++++++ src/Config/SearchRepairConfig.php | 15 ++- 4 files changed, 147 insertions(+), 24 deletions(-) create mode 100644 patch_history/RETRIEX_PATCH_43F_SEARCH_REPAIR_ACCESSORY_CODE_VOCABULARY_VIEW_README.md diff --git a/config/retriex/search_repair.yaml b/config/retriex/search_repair.yaml index d64e5c5..cac65e9 100644 --- a/config/retriex/search_repair.yaml +++ b/config/retriex/search_repair.yaml @@ -19,31 +19,19 @@ parameters: requested_accessory_code_fallback_query_templates: - '{term} {code}' - requested_accessory_code_fallback_terms: - - indikatortyp - - indikator - - indicator - - reagenz - - reagent - requested_accessory_code_context_prefix_terms: - - indikatortyp - - indikator - - indicator - - reagenz - - reagent + # Requested-accessory code terms are resolved from + # config/retriex/vocabulary.yaml view search_repair.requested_accessory_code_terms. + # Local requested_accessory_code_fallback_terms and + # requested_accessory_code_context_prefix_terms lists may still be added here as + # explicit project overrides. requested_accessory_code_proximity_window: 1600 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' - model_candidate_exclude_terms: - - indikatortyp - - indikator - - indicator - - reagenz - - reagent - - verfügbarkeit - - verfuegbarkeit - - shop + # Model-candidate exclude terms are resolved from + # config/retriex/vocabulary.yaml view search_repair.model_candidate_exclude_terms. + # A local model_candidate_exclude_terms list may still be added here as an + # explicit project override. limits: top_product_log_limit: 3 diff --git a/config/retriex/vocabulary.yaml b/config/retriex/vocabulary.yaml index 79f94bd..6eaa8be 100644 --- a/config/retriex/vocabulary.yaml +++ b/config/retriex/vocabulary.yaml @@ -49,6 +49,16 @@ parameters: - service set - serviceset - service-set + requested_accessory_code_terms: + - indikatortyp + - indikator + - indicator + - reagenz + - reagent + shop_meta_terms: + - verfügbarkeit + - verfuegbarkeit + - shop direct_product_attribute_stop_terms: - zeige - zeig @@ -460,6 +470,13 @@ parameters: direct_product_attribute_stop_terms: include: - direct_product_attribute_stop_terms + requested_accessory_code_terms: + include: + - requested_accessory_code_terms + model_candidate_exclude_terms: + include: + - requested_accessory_code_terms + - shop_meta_terms accessory_candidate_terms: add: - indikator diff --git a/patch_history/RETRIEX_PATCH_43F_SEARCH_REPAIR_ACCESSORY_CODE_VOCABULARY_VIEW_README.md b/patch_history/RETRIEX_PATCH_43F_SEARCH_REPAIR_ACCESSORY_CODE_VOCABULARY_VIEW_README.md new file mode 100644 index 0000000..e1cf9f5 --- /dev/null +++ b/patch_history/RETRIEX_PATCH_43F_SEARCH_REPAIR_ACCESSORY_CODE_VOCABULARY_VIEW_README.md @@ -0,0 +1,109 @@ +# RetrieX Patch p43F - Search Repair Accessory Code Vocabulary View + +## Ziel + +p43F setzt auf dem gruen bestaetigten p43E-Stand auf und reduziert weitere doppelte SearchRepair-Begriffslisten ohne fachliche Runtime-Aenderung. + +Der Patch zentralisiert die mehrfach gepflegten Zubehoercode-Begriffe fuer SearchRepair in `config/retriex/vocabulary.yaml` und laesst lokale Overrides in `config/retriex/search_repair.yaml` weiterhin zu. + +## Geaenderte Dateien + +- `config/retriex/vocabulary.yaml` +- `config/retriex/search_repair.yaml` +- `src/Config/SearchRepairConfig.php` +- `patch_history/RETRIEX_PATCH_43F_SEARCH_REPAIR_ACCESSORY_CODE_VOCABULARY_VIEW_README.md` + +## Inhalt + +### vocabulary.yaml + +Neu zentral gepflegte Klassen: + +- `requested_accessory_code_terms` +- `shop_meta_terms` + +Neue SearchRepair-Views: + +- `search_repair.requested_accessory_code_terms` +- `search_repair.model_candidate_exclude_terms` + +Die View `search_repair.requested_accessory_code_terms` liefert die bisherigen Begriffe fuer: + +- `requested_accessory_code_fallback_terms` +- `requested_accessory_code_context_prefix_terms` + +Die View `search_repair.model_candidate_exclude_terms` liefert die bisherigen Modell-Exclude-Begriffe aus Zubehoercode-Begriffen plus Shop-/Verfuegbarkeits-Metabegriffen. + +### search_repair.yaml + +Lokale Listen wurden entfernt fuer: + +- `requested_accessory_code_fallback_terms` +- `requested_accessory_code_context_prefix_terms` +- `model_candidate_exclude_terms` + +Die YAML-Datei dokumentiert jetzt, dass diese Werte aus `vocabulary.yaml` kommen und lokale Listen weiterhin als explizite Projekt-Overrides wieder hinzugefuegt werden koennen. + +### SearchRepairConfig.php + +Die drei Accessoren nutzen nun den vorhandenen Mechanismus `configOrVocabularyStringList()`: + +- `getRequestedAccessoryCodeFallbackTerms()` +- `getRequestedAccessoryCodeContextPrefixTerms()` +- `getModelCandidateExcludeTerms()` + +Damit bleibt das bisherige Override-Verhalten erhalten: lokale YAML-Listen haben Vorrang, sonst wird die zentrale Vocabulary-View verwendet. + +## Explizit nicht geaendert + +- keine neue fachliche Runtime-Logik +- keine Scoring-Aenderung +- keine Retrieval-Aenderung +- keine Prompt-Regel-Aenderung +- keine Admin-UI +- keine neuen harten Listen im PHP-Core +- keine Aenderung an Pattern-Templates oder Regex-Semantik + +## Effektive Listen vor/nach p43F + +Verglichen wurde p43E-Basis gegen p43F-Arbeitsstand: + +- `requested_accessory_code_fallback_terms`: 5 / 5, identisch +- `requested_accessory_code_context_prefix_terms`: 5 / 5, identisch +- `model_candidate_exclude_terms`: 8 / 8, identisch +- `direct_product_attribute_lookup.product_type_terms`: 12 / 12, identisch +- `direct_product_attribute_lookup.stop_terms`: 40 / 40, identisch +- `generic_candidate_tokens`: 13 / 13, identisch +- `accessory_candidate_terms`: 6 / 6, identisch +- `accessory_or_bundle_terms`: 14 / 14, identisch +- `specificity_boost_terms`: 7 / 7, identisch + +## Lokal ausgefuehrte Checks + +```bash +php -l src/Config/SearchRepairConfig.php +php -l src/Config/AgentRunnerConfig.php +python3 YAML parse check fuer geaenderte YAML-Dateien +python3 effektive SearchRepair-Listen p43E vs p43F vergleichen +``` + +Ergebnis: gruen. + +## Nicht lokal ausfuehrbar + +Die Symfony-Console-Checks konnten in der ChatGPT-Arbeitsumgebung nicht ausgefuehrt werden, weil der entpackte ZIP-Stand kein `vendor/` enthaelt und in dieser Umgebung kein `composer` verfuegbar ist. + +Blockierender Fehler: + +```text +Dependencies are missing. Try running "composer install". +``` + +Bitte nach dem Einspielen im Projekt ausfuehren: + +```bash +bin/console mto:agent:config:validate +bin/console mto:agent:regression:test +bin/console mto:agent:config:audit-source --details +bin/console mto:agent:config:audit-patterns --details +``` diff --git a/src/Config/SearchRepairConfig.php b/src/Config/SearchRepairConfig.php index 70869d8..de7f820 100644 --- a/src/Config/SearchRepairConfig.php +++ b/src/Config/SearchRepairConfig.php @@ -93,13 +93,19 @@ final class SearchRepairConfig /** @return string[] */ public function getRequestedAccessoryCodeFallbackTerms(): array { - return $this->requiredStringList('requested_accessory_code_fallback_terms'); + return $this->configOrVocabularyStringList( + 'requested_accessory_code_fallback_terms', + 'search_repair.requested_accessory_code_terms' + ); } /** @return string[] */ public function getRequestedAccessoryCodeContextPrefixTerms(): array { - return $this->requiredStringList('requested_accessory_code_context_prefix_terms'); + return $this->configOrVocabularyStringList( + 'requested_accessory_code_context_prefix_terms', + 'search_repair.requested_accessory_code_terms' + ); } public function getRequestedAccessoryCodeProximityWindow(): int @@ -116,7 +122,10 @@ final class SearchRepairConfig /** @return string[] */ public function getModelCandidateExcludeTerms(): array { - return $this->requiredStringList('model_candidate_exclude_terms'); + return $this->configOrVocabularyStringList( + 'model_candidate_exclude_terms', + 'search_repair.model_candidate_exclude_terms' + ); } public function getTopProductLogLimit(): int