fix: /response с фильтром device_id

This commit is contained in:
Repinoid
2026-07-10 12:56:40 +04:00
parent 15caff3204
commit ba48cd2daf
+20 -7
View File
@@ -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"],