feat(light): 添加获取用户脚本及回答数据的接口

新增获取用户LightPanel脚本数据并填充回答值的接口,用于展示用户在各脚本中的回答情况
This commit is contained in:
2025-12-16 14:34:56 +08:00
parent e9cc87e246
commit 81692b1676

View File

@@ -61,3 +61,53 @@ async def get_answers_by_user(user_id: str):
return success_response(data={}, message=f"未找到用户{user_id}的灯牌数据") return success_response(data={}, message=f"未找到用户{user_id}的灯牌数据")
except Exception as e: except Exception as e:
return error_response(message=f"获取用户灯牌数据失败: {str(e)}", code=500) return error_response(message=f"获取用户灯牌数据失败: {str(e)}", code=500)
@light_router.get("/user-scripts/{user_id}", response_model=ResponseModel[List[Dict[str, Any]]])
async def get_user_scripts_with_answers(user_id: str):
"""
获取所有LightPanel脚本数据并根据用户的回答数据填充每个指标的值
Args:
user_id (str): 用户的customer_wechat_id
Returns:
ResponseModel: 包含所有脚本数据及用户回答的统一响应格式
"""
try:
# 获取所有脚本数据
scripts = fetch_all_lightpanel_scripts()
# 获取用户回答数据
user_answers = get_answers_by_user_id(user_id)
# 如果没有用户回答数据,初始化为空字典
if user_answers is None:
user_answers = {}
# 构建结果数据
result = []
for script in scripts:
# 复制脚本数据
script_data = script.copy()
# 获取该脚本的code
code = script_data.get("code")
# 如果用户有该脚本的回答数据,则填充;否则设置为空字符串
if code in user_answers and user_answers[code]:
answer_data = user_answers[code]
script_data["value"] = answer_data.get("value", "")
script_data["collected_at"] = answer_data.get("collected_at", "")
script_data["source"] = answer_data.get("source", "")
else:
# 如果没有对应的回答数据,设置为空字符串
script_data["value"] = ""
script_data["collected_at"] = ""
script_data["source"] = ""
result.append(script_data)
return success_response(data=result, message=f"成功获取用户{user_id}的脚本数据")
except Exception as e:
return error_response(message=f"获取用户脚本数据失败: {str(e)}", code=500)