diff --git a/agent.py b/agent.py index 6b16b49..78e03db 100644 --- a/agent.py +++ b/agent.py @@ -1,6 +1,7 @@ """QuoteJudge Studio v1: deterministic quote comparison with durable per-user state.""" from __future__ import annotations +import asyncio import base64 import csv import hashlib @@ -127,7 +128,7 @@ class QuoteJudgeStudioV1(A2AAgent[QuoteJudgeStudioV1Config, PlatformUserAuth]): "scoring, persists per-user comparisons, supports browser uploads, and serves " "a polished packed product UI." ) - version = "0.1.2" + version = "0.1.3" config_model = QuoteJudgeStudioV1Config auth_model = PlatformUserAuth @@ -189,10 +190,21 @@ class QuoteJudgeStudioV1(A2AAgent[QuoteJudgeStudioV1Config, PlatformUserAuth]): }, result=result, ) - persisted = _persist_comparison(tenant, comparison_id, result, receipt) + persisted = await asyncio.to_thread(_persist_comparison, tenant, comparison_id, result, receipt) + if not persisted["ok"]: + return { + "ok": False, + "code": persisted["code"], + "comparison_id": comparison_id, + "receipt": { + "receipt_id": receipt["receipt_id"], + "persisted": False, + "created_at": receipt["created_at"], + }, + } result["receipt"] = { "receipt_id": receipt["receipt_id"], - "persisted": persisted["ok"], + "persisted": True, "created_at": receipt["created_at"], } if persisted.get("warning"): @@ -214,7 +226,7 @@ class QuoteJudgeStudioV1(A2AAgent[QuoteJudgeStudioV1Config, PlatformUserAuth]): tenant = _tenant_key(ctx) if not _valid_comparison_id(comparison_id): return {"ok": False, "code": "invalid_comparison_id", "comparison_id": comparison_id} - record = _load_comparison(tenant, comparison_id) + record = await asyncio.to_thread(_load_comparison, tenant, comparison_id) if record is None: return {"ok": False, "code": "comparison_not_found", "comparison_id": comparison_id} result = dict(record["result"])