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"],