diff --git a/web/raw_endpoint.py b/web/raw_endpoint.py index 0243e35..3576a75 100644 --- a/web/raw_endpoint.py +++ b/web/raw_endpoint.py @@ -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({