"""应用 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)
