fix: /response с фильтром device_id
This commit is contained in:
+20
-7
@@ -236,24 +236,37 @@ def raw_get_response():
|
|||||||
"""Copilot: прочитать последний ответ."""
|
"""Copilot: прочитать последний ответ."""
|
||||||
seq = int(request.args.get("seq", 0))
|
seq = int(request.args.get("seq", 0))
|
||||||
wait_s = int(request.args.get("wait", 0))
|
wait_s = int(request.args.get("wait", 0))
|
||||||
|
device_id = request.args.get("device_id", "")
|
||||||
|
|
||||||
if wait_s > 0:
|
if wait_s > 0:
|
||||||
dl = time.time() + wait_s
|
dl = time.time() + wait_s
|
||||||
while time.time() < dl:
|
while time.time() < dl:
|
||||||
with Database() as db:
|
with Database() as db:
|
||||||
row = db.conn.execute(
|
if device_id:
|
||||||
"SELECT seq, cmd, raw_response, elapsed_ms, prompt, error FROM command_queue WHERE seq > ? AND status='done' ORDER BY seq DESC LIMIT 1",
|
row = db.conn.execute(
|
||||||
(seq,)
|
"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",
|
||||||
).fetchone()
|
(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:
|
if row:
|
||||||
return jsonify({"seq": row["seq"], "cmd": row["cmd"], "raw": row["raw_response"],
|
return jsonify({"seq": row["seq"], "cmd": row["cmd"], "raw": row["raw_response"],
|
||||||
"elapsed_ms": row["elapsed_ms"], "prompt": bool(row["prompt"]), "error": row["error"]})
|
"elapsed_ms": row["elapsed_ms"], "prompt": bool(row["prompt"]), "error": row["error"]})
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
|
|
||||||
with Database() as db:
|
with Database() as db:
|
||||||
row = db.conn.execute(
|
if device_id:
|
||||||
"SELECT seq, cmd, raw_response, elapsed_ms, prompt, error FROM command_queue WHERE status='done' ORDER BY seq DESC LIMIT 1"
|
row = db.conn.execute(
|
||||||
).fetchone()
|
"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:
|
if not row:
|
||||||
return jsonify({"error": "no response yet", "seq": 0})
|
return jsonify({"error": "no response yet", "seq": 0})
|
||||||
return jsonify({"seq": row["seq"], "cmd": row["cmd"], "raw": row["raw_response"],
|
return jsonify({"seq": row["seq"], "cmd": row["cmd"], "raw": row["raw_response"],
|
||||||
|
|||||||
Reference in New Issue
Block a user