p43N
This commit is contained in:
@@ -741,78 +741,60 @@ parameters:
|
||||
agent:
|
||||
rag_evidence_guard:
|
||||
synonyms:
|
||||
salinität:
|
||||
- salinität
|
||||
- salinitaet
|
||||
- salinity
|
||||
- salzgehalt
|
||||
- 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
|
||||
- orp
|
||||
- oxidations-reduktionspotential
|
||||
- oxidations reduktionspotential
|
||||
orp:
|
||||
- redox
|
||||
- orp
|
||||
- oxidations-reduktionspotential
|
||||
- oxidations reduktionspotential
|
||||
ph:
|
||||
- ph
|
||||
- ph-wert
|
||||
- ph wert
|
||||
chlor:
|
||||
- chlor
|
||||
- freies chlor
|
||||
- gesamtchlor
|
||||
- chlorine
|
||||
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
|
||||
shop:
|
||||
accessory_focus_variants:
|
||||
indikator:
|
||||
- indikator
|
||||
- indikatoren
|
||||
indikatoren:
|
||||
- indikator
|
||||
- indikatoren
|
||||
reagenz:
|
||||
- reagenz
|
||||
- reagenzien
|
||||
reagenzien:
|
||||
- reagenz
|
||||
- reagenzien
|
||||
ersatzteil:
|
||||
- ersatzteil
|
||||
- ersatzteile
|
||||
ersatzteile:
|
||||
- ersatzteil
|
||||
- ersatzteile
|
||||
service set:
|
||||
- service set
|
||||
- serviceset
|
||||
- service-set
|
||||
serviceset:
|
||||
- service set
|
||||
- serviceset
|
||||
- service-set
|
||||
service-set:
|
||||
- service set
|
||||
- serviceset
|
||||
- service-set
|
||||
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
|
||||
|
||||
@@ -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
|
||||
```
|
||||
@@ -46,21 +46,31 @@ final class DomainVocabularyConfig
|
||||
return $this->uniqueStringListMap($fallback);
|
||||
}
|
||||
|
||||
$out = [];
|
||||
foreach ($value as $key => $items) {
|
||||
if (!is_scalar($key)) {
|
||||
continue;
|
||||
}
|
||||
$cleanKey = trim((string) $key);
|
||||
$cleanItems = $this->stringListFromValue($items);
|
||||
if ($cleanKey !== '' && $cleanItems !== []) {
|
||||
$out[$cleanKey] = $cleanItems;
|
||||
}
|
||||
}
|
||||
$out = $this->stringListMapWithAliases($value);
|
||||
|
||||
return $out !== [] ? $out : $this->uniqueStringListMap($fallback);
|
||||
}
|
||||
|
||||
/** @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;
|
||||
}
|
||||
|
||||
return $this->uniqueStringListMap($value);
|
||||
}
|
||||
|
||||
/** @return array<string, string> */
|
||||
public function stringMap(string $path, array $fallback = []): array
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user