From ba48cd2daf39880ac1ac39d842b299489d9152c4 Mon Sep 17 00:00:00 2001 From: Repinoid Date: Fri, 10 Jul 2026 12:56:40 +0400 Subject: [PATCH] =?UTF-8?q?fix:=20/response=20=D1=81=20=D1=84=D0=B8=D0=BB?= =?UTF-8?q?=D1=8C=D1=82=D1=80=D0=BE=D0=BC=20device=5Fid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/raw_elm.py | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/api/raw_elm.py b/api/raw_elm.py index 7c7bcad..b0a109c 100644 --- a/api/raw_elm.py +++ b/api/raw_elm.py @@ -236,24 +236,37 @@ def raw_get_response(): """Copilot: прочитать последний ответ.""" seq = int(request.args.get("seq", 0)) wait_s = int(request.args.get("wait", 0)) + device_id = request.args.get("device_id", "") if wait_s > 0: dl = time.time() + wait_s while time.time() < dl: with Database() as db: - row = db.conn.execute( - "SELECT seq, cmd, raw_response, elapsed_ms, prompt, error FROM command_queue WHERE seq > ? AND status='done' ORDER BY seq DESC LIMIT 1", - (seq,) - ).fetchone() + if device_id: + row = db.conn.execute( + "SELECT seq, cmd, raw_response, elapsed_ms, prompt, error FROM command_queue WHERE seq > ? AND status='done' AND device_id=? ORDER BY seq DESC LIMIT 1", + (seq, device_id) + ).fetchone() + else: + row = db.conn.execute( + "SELECT seq, cmd, raw_response, elapsed_ms, prompt, error FROM command_queue WHERE seq > ? AND status='done' ORDER BY seq DESC LIMIT 1", + (seq,) + ).fetchone() if row: return jsonify({"seq": row["seq"], "cmd": row["cmd"], "raw": row["raw_response"], "elapsed_ms": row["elapsed_ms"], "prompt": bool(row["prompt"]), "error": row["error"]}) time.sleep(0.5) with Database() as db: - row = db.conn.execute( - "SELECT seq, cmd, raw_response, elapsed_ms, prompt, error FROM command_queue WHERE status='done' ORDER BY seq DESC LIMIT 1" - ).fetchone() + if device_id: + row = db.conn.execute( + "SELECT seq, cmd, raw_response, elapsed_ms, prompt, error FROM command_queue WHERE status='done' AND device_id=? ORDER BY seq DESC LIMIT 1", + (device_id,) + ).fetchone() + else: + row = db.conn.execute( + "SELECT seq, cmd, raw_response, elapsed_ms, prompt, error FROM command_queue WHERE status='done' ORDER BY seq DESC LIMIT 1" + ).fetchone() if not row: return jsonify({"error": "no response yet", "seq": 0}) return jsonify({"seq": row["seq"], "cmd": row["cmd"], "raw": row["raw_response"],