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

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);
}
$out = [];
foreach ($value as $key => $items) {
if (!is_scalar($key)) {
continue;
$out = $this->stringListMapWithAliases($value);
return $out !== [] ? $out : $this->uniqueStringListMap($fallback);
}
$cleanKey = trim((string) $key);
$cleanItems = $this->stringListFromValue($items);
if ($cleanKey !== '' && $cleanItems !== []) {
$out[$cleanKey] = $cleanItems;
/** @return array<string, string[]> */
private function stringListMapWithAliases(array $value): array
{
$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> */