# kb_diag.dspy - 临时诊断端点:真实请求上下文验证 rag_client 全链路 # 用后即删(不留生产痕迹)。验证点:owner解析→dapi发key→HTTP检索 import json as _j uid = await get_user() if not uid: return _j.dumps({"ok": False, "error": "未登录"}, ensure_ascii=False) project_id = (params_kw or {}).get('project_id', '').strip() query = (params_kw or {}).get('query', '').strip() or '测试入库闭环' if not project_id: return _j.dumps({"ok": False, "error": "缺少 project_id"}, ensure_ascii=False) out = {"steps": []} try: from pipeline_service.rag_client import (resolve_project_owner, get_owner_apikey, tool_rag_kb_list, tool_rag_search) owner, err = await resolve_project_owner(project_id) out["steps"].append({"step": "resolve_owner", "owner": owner, "err": err}) if err: return _j.dumps({"ok": False, "out": out}, ensure_ascii=False, default=str) key, err = await get_owner_apikey(owner) out["steps"].append({"step": "get_key", "key_prefix": (key or "")[:8], "key_len": len(key or ""), "err": err}) if err: return _j.dumps({"ok": False, "out": out}, ensure_ascii=False, default=str) out["kb_list"] = await tool_rag_kb_list(project_id) out["search"] = (await tool_rag_search(project_id, query))[:600] out["ok"] = True except Exception as e: import traceback out["ok"] = False out["traceback"] = traceback.format_exc()[-800:] return _j.dumps(out, ensure_ascii=False, default=str)