server: skip LLM when no API key — return decoded data instead
This commit is contained in:
+32
-11
@@ -221,18 +221,39 @@ def register(app):
|
||||
cmd = sess["queue"].pop(0)
|
||||
return jsonify({"cmd": cmd, "session": session_id, "state": sess["state"]})
|
||||
|
||||
# LLM фаза
|
||||
# LLM фаза — если нет ключа, возвращаем сырые данные
|
||||
if sess["state"] == "LLM":
|
||||
sess["state"] = "LLM_WAIT"
|
||||
# Запускаем LLM асинхронно (в потоке)
|
||||
import threading as th
|
||||
th.Thread(target=_call_llm, args=(session_id,), daemon=True).start()
|
||||
return jsonify({
|
||||
"cmd": None,
|
||||
"session": session_id,
|
||||
"state": "LLM",
|
||||
"msg": "Анализирую..."
|
||||
})
|
||||
from elmer.config import load
|
||||
cfg = load()
|
||||
api_key = cfg["deepseek"]["api_key"]
|
||||
|
||||
if not api_key:
|
||||
# Без LLM — форматируем декодированные данные
|
||||
data = sess["data"]
|
||||
lines = []
|
||||
if data.get("vin"): lines.append(f"VIN: {data['vin']}")
|
||||
if data.get("dtc_stored"): lines.append(f"Ошибки: {', '.join(data['dtc_stored'])}")
|
||||
if data.get("dtc_pending"): lines.append(f"Pending: {', '.join(data['dtc_pending'])}")
|
||||
if data.get("pids"):
|
||||
names = {"05": "ОЖ", "0C": "RPM", "0D": "Скорость", "11": "Дроссель",
|
||||
"0B": "MAP", "0F": "IAT", "1F": "Время", "04": "Нагрузка",
|
||||
"06": "STFT", "07": "LTFT"}
|
||||
for p in data["pids"]:
|
||||
n = names.get(p["pid"], p["pid"])
|
||||
lines.append(f"{n}: {p['value']}")
|
||||
sess["diagnosis"] = "\n".join(lines) if lines else "Нет данных"
|
||||
sess["state"] = "DONE"
|
||||
logger.info(f"[{session_id}] No LLM — returning raw data")
|
||||
else:
|
||||
sess["state"] = "LLM_WAIT"
|
||||
import threading as th
|
||||
th.Thread(target=_call_llm, args=(session_id,), daemon=True).start()
|
||||
return jsonify({
|
||||
"cmd": None,
|
||||
"session": session_id,
|
||||
"state": "LLM",
|
||||
"msg": "Анализирую..."
|
||||
})
|
||||
|
||||
# Готово
|
||||
return jsonify({
|
||||
|
||||
Reference in New Issue
Block a user