new tokens

This commit is contained in:
team 1
2026-05-01 12:10:32 +02:00
parent f28deb9eff
commit 724afd4a26
8 changed files with 154 additions and 81 deletions

View File

@@ -512,18 +512,7 @@ final readonly class CommerceQueryParser
return true;
}
return in_array($token, [
'shop',
'store',
'produkt',
'produkte',
'artikel',
'kaufen',
'kaufe',
'bestellen',
'bestelle',
'online',
], true);
return in_array($token, $this->config->getSearchControlTokens(), true);
}
private function isDirectProductQuery(string $prompt): bool

View File

@@ -5,9 +5,15 @@ declare(strict_types=1);
namespace App\Commerce;
use App\Commerce\Dto\CommerceReferenceContext;
use App\Config\CommerceReferenceResolverConfig;
final readonly class CommerceReferenceResolver
{
public function __construct(
private CommerceReferenceResolverConfig $config,
) {
}
/**
* @param array<int, array<string, mixed>> $shopResults
*/
@@ -84,20 +90,7 @@ final readonly class CommerceReferenceResolver
return null;
}
$patterns = [
'/\b(Testomat\s+2000\s+THCL)\b/ui',
'/\b(Testomat\s+808)\b/ui',
'/\b(Testomat\s+EVO\s+TH)\b/ui',
'/\b(Testomat\s+EVO\s+CALC)\b/ui',
'/\b(Testomat\s+ECO\s+PLUS)\b/ui',
'/\b(Testomat\s+ECO\s+C)\b/ui',
'/\b(Testomat\s+ECO)\b/ui',
'/\b(Testomat\s+LAB\s+CL)\b/ui',
'/\b(Testomat\s+LAB\s+MONO)\b/ui',
'/\b(Testomat\s+2000)\b/ui',
];
foreach ($patterns as $pattern) {
foreach ($this->config->getConversationProductPatterns() as $pattern) {
if (!preg_match($pattern, $text, $matches)) {
continue;
}
@@ -135,25 +128,9 @@ final readonly class CommerceReferenceResolver
return [];
}
$patterns = [
'indikator' => '/\bindikator(?:en)?\b/u',
'indikatoren' => '/\bindikator(?:en)?\b/u',
'reagenz' => '/\breagenz(?:ien)?\b/u',
'reagenzien' => '/\breagenz(?:ien)?\b/u',
'zubehör' => '/\bzubeh[oö]r\b/u',
'ersatzteil' => '/\bersatzteile?\b/u',
'ersatzteile' => '/\bersatzteile?\b/u',
'service-set' => '/\bservice(?:\s|-)?set\b/u',
'filter' => '/\bfilter\b/u',
'pumpenkopf' => '/\bpumpenkopf\b/u',
'motorblock' => '/\bmotorblock\b/u',
'mehrwertpaket' => '/\bmehrwertpaket\b/u',
'neotecmaster' => '/\bneotecmaster\b/u',
];
$terms = [];
foreach ($patterns as $canonical => $pattern) {
foreach ($this->config->getFocusTermPatterns() as $canonical => $pattern) {
if (preg_match($pattern, $normalized) === 1) {
$terms[] = $canonical;
}