"✅ **Автомобиль найден.**\n" . trim($car_info) . "\n\nКакая запчасть вам нужна? Я готов помочь с подбором.",
"currentVin" => $current_vin
]);
exit;
}
}
// --- 2. ПОИСК ПО БАЗЕ (ТЕХНИЧЕСКАЯ ЛОГИКА) ---
$parts_found = [];
if (!empty($current_vin) && mb_strlen($user_msg) > 2) {
$file_path = $vin_folder . $current_vin . ".txt";
if (file_exists($file_path)) {
$content = file_get_contents($file_path);
preg_match_all('/
(.*?)<\/tr>/is', $content, $all_rows);
$words = preg_split('/\s+/u', $low_msg, -1, PREG_SPLIT_NO_EMPTY);
$synonyms = [
'генератор' => ['генератор', 'трехфазн', 'alternator', 'генер'],
'колодки' => ['тормозн', 'колодок', 'фрикцион'],
'амортизатор' => ['стойка', 'амортизац', 'shocker'],
'наконечник' => ['тяга', 'рулев'],
'грм' => ['ремень', 'цепь', 'ролик']
];
foreach ($all_rows[1] as $row) {
$row_lower = mb_strtolower($row);
$score = 0;
$has_core_match = false;
foreach ($words as $kw) {
$root = (mb_strlen($kw) > 4) ? mb_substr($kw, 0, 4) : $kw;
if (mb_strpos($row_lower, $root) !== false) { $score += 10; $has_core_match = true; }
if (isset($synonyms[$kw])) {
foreach ($synonyms[$kw] as $syn) {
if (mb_strpos($row_lower, $syn) !== false) { $score += 10; $has_core_match = true; }
}
}
}
if ($has_core_match && $score >= 10) {
if (preg_match('/| ]*>(.*?)<\/td>.*?href="(.*?)"/is', $row, $m)) {
$name = trim(str_replace('Поиск', '', strip_tags($m[1])));
$parts_found[$name] = ["name" => $name, "url" => htmlspecialchars_decode($m[2])];
}
}
}
}
}
if (!empty($parts_found)) {
echo json_encode([
"reply" => "🔍 Нашел подходящие варианты в CARSERVICE:",
"links" => array_slice(array_values($parts_found), 0, 10),
"currentVin" => $current_vin
]);
exit;
}
// --- 3. ИИ + КНОПКА КАРТЫ ---
$ch = curl_init("https://api.mistral.ai/v1/chat/completions");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json', 'Authorization: Bearer ' . $api_key]);
$instruction = "Ты эксперт CARSERVICE. Твое приветствие: 'Привет! Добро welcome в CARSERVICE!'.
ГРАФИК: Пн-Вс 09:00 - 21:00.
Если клиент спрашивает про адрес или карту, скажи, что мы работаем ежедневно с 9 до 21, и нажми кнопку ниже.";
$payload = [
"model" => "mistral-small-latest",
"messages" => [
["role" => "system", "content" => $instruction],
["role" => "user", "content" => $user_msg]
]
];
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
$res = json_decode(curl_exec($ch), true);
$reply = $res['choices'][0]['message']['content'] ?? "Привет! Добро welcome в CARSERVICE!";
// Код кнопки карты (измените ссылку на свою если нужно)
$map_btn = '';
$show_map = preg_match('/(адрес|где|как|карта|привет|добро)/iu', $low_msg);
echo json_encode([
"reply" => $reply . ($show_map ? $map_btn : ""),
"currentVin" => $current_vin
]); |