This commit is contained in:
team 1
2026-05-05 20:10:00 +02:00
parent a04d371ef3
commit 0771614609
3 changed files with 140 additions and 84 deletions

View File

@@ -741,7 +741,8 @@ parameters:
agent: agent:
rag_evidence_guard: rag_evidence_guard:
synonyms: synonyms:
salinität: values:
salinity_terms:
- salinität - salinität
- salinitaet - salinitaet
- salinity - salinity
@@ -749,70 +750,51 @@ parameters:
- tds - tds
- leitfähigkeit - leitfähigkeit
- leitfaehigkeit - leitfaehigkeit
salinitaet: redox_terms:
- salinität
- salinitaet
- salinity
- salzgehalt
- tds
- leitfähigkeit
- leitfaehigkeit
salinity:
- salinität
- salinitaet
- salinity
- salzgehalt
- tds
- leitfähigkeit
- leitfaehigkeit
redox:
- redox - redox
- orp - orp
- oxidations-reduktionspotential - oxidations-reduktionspotential
- oxidations reduktionspotential - oxidations reduktionspotential
orp: ph_terms:
- redox
- orp
- oxidations-reduktionspotential
- oxidations reduktionspotential
ph:
- ph - ph
- ph-wert - ph-wert
- ph wert - ph wert
chlor: chlorine_terms:
- chlor - chlor
- freies chlor - freies chlor
- gesamtchlor - gesamtchlor
- chlorine - chlorine
aliases:
salinität: salinity_terms
salinitaet: salinity_terms
salinity: salinity_terms
redox: redox_terms
orp: redox_terms
ph: ph_terms
chlor: chlorine_terms
shop: shop:
accessory_focus_variants: accessory_focus_variants:
indikator: values:
indicator_terms:
- indikator - indikator
- indikatoren - indikatoren
indikatoren: reagent_terms:
- indikator
- indikatoren
reagenz:
- reagenz - reagenz
- reagenzien - reagenzien
reagenzien: spare_part_terms:
- reagenz
- reagenzien
ersatzteil:
- ersatzteil - ersatzteil
- ersatzteile - ersatzteile
ersatzteile: service_set_terms:
- ersatzteil
- ersatzteile
service set:
- service set
- serviceset
- service-set
serviceset:
- service set
- serviceset
- service-set
service-set:
- service set - service set
- serviceset - serviceset
- service-set - 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

View File

@@ -0,0 +1,64 @@
# RetrieX Patch p43M Vocabulary Map Alias Dedup
## Ziel
Weitere Reduktion doppelter YAML-Maps/Listen ohne fachliche Runtime-Änderung. Der Patch bündelt mehrfach identische Vocabulary-Map-Werte über Alias-Definitionen.
## Änderungen
- `DomainVocabularyConfig::map()` unterstützt zusätzlich zum bestehenden einfachen `key: [values]`-Format ein kompaktes Alias-Format:
- `values`: benannte Wertelisten
- `aliases`: Ausgabe-Schlüssel auf benannte Wertelisten
- Bestehendes einfaches Map-Format bleibt vollständig kompatibel.
- `vocabulary.yaml` nutzt das Alias-Format für:
- `maps.agent.rag_evidence_guard.synonyms`
- `maps.shop.accessory_focus_variants`
- Doppelte Listen für Salinität-, Redox-, Indikator-, Reagenz-, Ersatzteil- und Service-Set-Aliase wurden entfernt.
## Nicht geändert
- Keine neue Fachlogik
- Keine Scoringänderung
- Keine Prompt-Regeländerung
- Keine Retrievaländerung
- Keine Admin-UI
- Keine neuen fachlichen Listen im PHP-Core
## Kompatibilität
Lokale oder bestehende einfache Vocabulary-Maps funktionieren weiterhin. Das Alias-Format wird nur verwendet, wenn sowohl `values` als auch `aliases` vorhanden sind. Andernfalls fällt `DomainVocabularyConfig` auf das bisherige einfache String-List-Map-Format zurück.
## Lokale Prüfungen
Ausgeführt:
```bash
php -l src/Config/DomainVocabularyConfig.php
php -l src/Config/AgentRunnerConfig.php
php -l src/Config/ShopServiceConfig.php
php -l src/Config/SearchRepairConfig.php
php -l src/Config/PromptBuilderConfig.php
php -l src/Config/GovernanceConfig.php
python3 YAML parse check for config/retriex/*.yaml
python3 effective p43L-vs-p43M vocabulary map comparison
```
Ergebnis der lokalen Prüfungen: grün.
Die effektiven Maps blieben gegenüber p43L identisch:
- `agent.rag_evidence_guard.synonyms`: 7 Schlüssel
- `shop.accessory_focus_variants`: 9 Schlüssel
Zusätzlich geprüft: `DomainVocabularyConfig::map()` löst beide neuen Alias-Maps in PHP korrekt auf.
## Hinweis zu Symfony-Checks
Die `bin/console`-Checks konnten in der lokalen Patch-Erstellungsumgebung nicht ausgeführt werden, weil der ZIP-Stand kein `vendor/` enthält und `bin/console` mit fehlenden Dependencies abbricht. Bitte im Projekt mit installierten Composer-Abhängigkeiten prüfen:
```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
```

View File

@@ -46,19 +46,29 @@ final class DomainVocabularyConfig
return $this->uniqueStringListMap($fallback); return $this->uniqueStringListMap($fallback);
} }
$out = []; $out = $this->stringListMapWithAliases($value);
foreach ($value as $key => $items) {
if (!is_scalar($key)) { return $out !== [] ? $out : $this->uniqueStringListMap($fallback);
continue;
} }
$cleanKey = trim((string) $key);
$cleanItems = $this->stringListFromValue($items); /** @return array<string, string[]> */
if ($cleanKey !== '' && $cleanItems !== []) { private function stringListMapWithAliases(array $value): array
$out[$cleanKey] = $cleanItems; {
$values = $this->uniqueStringListMap(is_array($value['values'] ?? null) ? $value['values'] : []);
$aliases = $this->uniqueStringMap(is_array($value['aliases'] ?? null) ? $value['aliases'] : []);
if ($values !== [] && $aliases !== []) {
$out = [];
foreach ($aliases as $alias => $valueKey) {
if (isset($values[$valueKey])) {
$out[$alias] = $values[$valueKey];
} }
} }
return $out !== [] ? $out : $this->uniqueStringListMap($fallback); return $out;
}
return $this->uniqueStringListMap($value);
} }
/** @return array<string, string> */ /** @return array<string, string> */