fix(communication): _rec_to_dict 用 dict(rec) 取列,修复 DictObject 列名取不到问题
sqlor 返回 DictObject,列名不暴露为实例属性(dir() 只列 dict 方法), dir(rec)+getattr 会取到 None。改 dict(rec),questions.get_question 同步修复。
This commit is contained in:
parent
6707cabedc
commit
b4e5e20ccf
@ -177,10 +177,22 @@ async def list_problems_for(role, agentid=None, tenant_id=None, task_id=None, li
|
|||||||
|
|
||||||
|
|
||||||
def _rec_to_dict(rec):
|
def _rec_to_dict(rec):
|
||||||
if hasattr(rec, '__dict__'):
|
"""把 sqlor 记录对象转成 dict。
|
||||||
return {k: getattr(rec, k) for k in dir(rec)
|
|
||||||
if not k.startswith('_') and not callable(getattr(rec, k))}
|
sqlor 返回 appPublic.dictObject.DictObject,列名不暴露为实例属性(dir() 只列 dict 方法),
|
||||||
return dict(rec)
|
必须用 dict(rec) 取列,不能用 dir(rec) + getattr(会取到 None/方法)。
|
||||||
|
"""
|
||||||
|
if isinstance(rec, dict):
|
||||||
|
return dict(rec)
|
||||||
|
try:
|
||||||
|
return dict(rec)
|
||||||
|
except (TypeError, ValueError):
|
||||||
|
if hasattr(rec, 'to_dict'):
|
||||||
|
try:
|
||||||
|
return rec.to_dict()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
async def get_task_qa(task_id, role=None, agentid=None) -> dict:
|
async def get_task_qa(task_id, role=None, agentid=None) -> dict:
|
||||||
|
|||||||
@ -71,10 +71,10 @@ async def get_question(question_id: str):
|
|||||||
if not recs:
|
if not recs:
|
||||||
return None
|
return None
|
||||||
rec = recs[0]
|
rec = recs[0]
|
||||||
if hasattr(rec, '__dict__'):
|
try:
|
||||||
d = {k: getattr(rec, k) for k in dir(rec) if not k.startswith('_')}
|
|
||||||
else:
|
|
||||||
d = dict(rec)
|
d = dict(rec)
|
||||||
|
except Exception:
|
||||||
|
d = {}
|
||||||
ctx = d.get('context')
|
ctx = d.get('context')
|
||||||
if ctx and isinstance(ctx, str):
|
if ctx and isinstance(ctx, str):
|
||||||
try:
|
try:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user