"""应用 8 维客线索整理 Prompt 拼装。 接收 App3(消费分析)和 App6(备注分析)的全部线索, 整合去重后输出统一维客线索。 - 数据源:context.app3_clues + context.app6_clues(dispatcher 已查好传入) - 分类标签 6 选 1(与 member_retention_clue CHECK 约束一致) - 合并规则:相似线索合并,providers 逗号分隔 - system prompt 在百炼控制台配置 返回:单个 prompt 字符串。 """ from __future__ import annotations import json from typing import Any async def build_prompt( context: dict, cache_svc: Any | None = None, # 兼容统一签名,App8 不用 ) -> str: """构建 App8 prompt 字符串。 Args: context: site_id, member_id, app3_clues(list), app6_clues(list), app3_generated_at(str|None), app6_generated_at(str|None) Returns: JSON 序列化后的 prompt 字符串 """ member_id = context["member_id"] app3_clues = context.get("app3_clues") or [] app6_clues = context.get("app6_clues") or [] payload: dict[str, Any] = { "member_id": member_id, "input": { "app3_clues": { "source": "消费数据分析(App3)", "generated_at": context.get("app3_generated_at"), "clues": app3_clues, }, "app6_clues": { "source": "备注分析(App6)", "generated_at": context.get("app6_generated_at"), "clues": app6_clues, }, }, } return json.dumps(payload, ensure_ascii=False, default=str)