central config part 2

This commit is contained in:
team2
2026-04-26 08:34:45 +02:00
parent c72b9c2e2b
commit 00ebe2fd73
8 changed files with 782 additions and 288 deletions

View File

@@ -1,50 +1,90 @@
<?php
declare(strict_types=1);
namespace App\Config;
class IntentLightConfig
{
public const LIST_THRESHOLD = 4;
public function getQuantityWords(): array
private const QUANTITY_WORDS = [
'alle',
'sämtliche',
'saemtliche',
'mehrere',
'verschiedene',
'einige',
'viele',
'optionen',
'möglichkeiten',
'moeglichkeiten',
'varianten',
'arten',
'modelle',
'funktionen',
'punkte',
'schritte',
'kategorien',
'übersicht',
'uebersicht',
];
private const STRONG_PATTERNS = [
'/\bliste(n)?\b/u',
'/\bauflisten\b/u',
'/\baufz(a|ä)hl(en)?\b/u',
'/\bnenn(e)?\b/u',
'/\bzeig(e)?\b/u',
'/\bwelche\s+sind\b/u',
'/\bwelche\s+gibt\s+es\b/u',
'/\bwas\s+sind\b/u',
'/\bwie\s+viele\b/u',
'/\branking\b/u',
'/\btop\s*\d+\b/u',
];
/**
* @param array<string, mixed> $config
*/
public function __construct(private readonly array $config = [])
{
return [
'alle',
'sämtliche',
'saemtliche',
'mehrere',
'verschiedene',
'einige',
'viele',
'optionen',
'möglichkeiten',
'moeglichkeiten',
'varianten',
'arten',
'modelle',
'funktionen',
'punkte',
'schritte',
'kategorien',
'übersicht',
'uebersicht',
];
}
/** @return string[] */
public function getQuantityWords(): array
{
return $this->stringList('quantity_words', self::QUANTITY_WORDS);
}
/** @return string[] */
public function getStrongPatterns(): array
{
return [
'/\bliste(n)?\b/u',
'/\bauflisten\b/u',
'/\baufz(a|ä)hl(en)?\b/u',
'/\bnenn(e)?\b/u',
'/\bzeig(e)?\b/u',
'/\bwelche\s+sind\b/u',
'/\bwelche\s+gibt\s+es\b/u',
'/\bwas\s+sind\b/u',
'/\bwie\s+viele\b/u',
'/\branking\b/u',
'/\btop\s*\d+\b/u',
];
return $this->stringList('strong_patterns', self::STRONG_PATTERNS);
}
}
/** @return string[] */
private function stringList(string $key, array $default): array
{
$value = $this->config[$key] ?? $default;
if (!is_array($value)) {
return $default;
}
$out = [];
foreach ($value as $item) {
if (!is_scalar($item)) {
continue;
}
$item = trim((string) $item);
if ($item === '' || in_array($item, $out, true)) {
continue;
}
$out[] = $item;
}
return $out !== [] ? $out : $default;
}
}