From 81692b1676697e3b48e13839c66bc4c404adfcae Mon Sep 17 00:00:00 2001 From: chenpanliang <3245129380@qq.com> Date: Tue, 16 Dec 2025 14:34:56 +0800 Subject: [PATCH] =?UTF-8?q?feat(light):=20=E6=B7=BB=E5=8A=A0=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=94=A8=E6=88=B7=E8=84=9A=E6=9C=AC=E5=8F=8A=E5=9B=9E?= =?UTF-8?q?=E7=AD=94=E6=95=B0=E6=8D=AE=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增获取用户LightPanel脚本数据并填充回答值的接口,用于展示用户在各脚本中的回答情况 --- src/routers/light.py | 50 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/routers/light.py b/src/routers/light.py index 81b760b..f372798 100644 --- a/src/routers/light.py +++ b/src/routers/light.py @@ -61,3 +61,53 @@ async def get_answers_by_user(user_id: str): return success_response(data={}, message=f"未找到用户{user_id}的灯牌数据") except Exception as e: 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)