From a1c3eb4b25fa3265f48984f737f3d91134d828e8 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Fri, 5 Jun 2026 18:22:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20apiname/query=5Fapiname=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E4=BB=8Euapi=E5=8A=A8=E6=80=81=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 get_search_apiname.dspy: 根据llmid查upappid, 从uapi获取API列表 - apiname: code类型下拉选择(必选) - query_apiname: code类型下拉选择(可选, 含'不指定'选项) - 更新 json/llm_api_map.json CRUD定义 alters - 更新 llm_api_map_manage.ui 表单字段 - 重新生成 wwwroot/llm_api_map/index.ui - 注册 load_path.py RBAC权限 --- json/llm_api_map.json | 8 +++++++ scripts/load_path.py | 1 + wwwroot/api/get_search_apiname.dspy | 33 +++++++++++++++++++++++++++++ wwwroot/llm_api_map_manage.ui | 7 +++--- 4 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 wwwroot/api/get_search_apiname.dspy diff --git a/json/llm_api_map.json b/json/llm_api_map.json index 422ad77..7b115c9 100644 --- a/json/llm_api_map.json +++ b/json/llm_api_map.json @@ -5,6 +5,14 @@ "browserfields": { "exclouded": ["id", "llmid"], "alters": { + "apiname": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_apiname.dspy')}}" + }, + "query_apiname": { + "uitype": "code", + "dataurl": "{{entire_url('../api/get_search_apiname.dspy?allow_empty=1')}}" + } } }, "editexclouded": ["id", "llmid"] diff --git a/scripts/load_path.py b/scripts/load_path.py index 4df3854..9094add 100644 --- a/scripts/load_path.py +++ b/scripts/load_path.py @@ -90,6 +90,7 @@ PATHS_LOGINED = [ f"/{MOD}/api/get_catelogs.dspy", f"/{MOD}/api/get_organizations.dspy", f"/{MOD}/api/get_ppids.dspy", + f"/{MOD}/api/get_search_apiname.dspy", f"/{MOD}/api/get_search_providerid.dspy", f"/{MOD}/api/get_search_upappid.dspy", f"/{MOD}/api/get_upapps.dspy", diff --git a/wwwroot/api/get_search_apiname.dspy b/wwwroot/api/get_search_apiname.dspy new file mode 100644 index 0000000..85d8289 --- /dev/null +++ b/wwwroot/api/get_search_apiname.dspy @@ -0,0 +1,33 @@ +llmid = params_kw.get('llmid') +allow_empty = params_kw.get('allow_empty', '') + +result = [] +if allow_empty: + result = [{'value': '', 'text': '不指定'}] + +try: + if not llmid: + return json.dumps(result, ensure_ascii=False) + + # Get model's upappid from llmage db + dbname = get_module_dbname('llmage') + async with DBPools().sqlorContext(dbname) as sor: + llm_recs = await sor.sqlExe( + "select upappid from llm where id = ${llmid}$", + {'llmid': llmid} + ) + if not llm_recs or not llm_recs[0].get('upappid'): + return json.dumps(result, ensure_ascii=False) + upappid = llm_recs[0].upappid + + # Query uapi table from uapi module's db + async with get_sor_context(request._run_ns, 'uapi') as sor: + apis = await sor.sqlExe( + "select name as value, name as text from uapi where upappid = ${upappid}$ order by name", + {'upappid': upappid} + ) + return json.dumps(result + list(apis), ensure_ascii=False) +except Exception as e: + debug(f'get_search_apiname error: {e}') + +return json.dumps(result, ensure_ascii=False) diff --git a/wwwroot/llm_api_map_manage.ui b/wwwroot/llm_api_map_manage.ui index 1ade2eb..157e554 100644 --- a/wwwroot/llm_api_map_manage.ui +++ b/wwwroot/llm_api_map_manage.ui @@ -60,14 +60,15 @@ "name": "apiname", "label": "API接口", "uitype": "code", - "dataurl": "{{entire_url('./api/get_apis.dspy')}}", + "dataurl": "{{entire_url('./api/get_search_apiname.dspy')}}", "placeholder": "请选择API接口" }, { "name": "query_apiname", "label": "查询API", - "uitype": "str", - "placeholder": "异步查询API名,多个用逗号分隔" + "uitype": "code", + "dataurl": "{{entire_url('./api/get_search_apiname.dspy?allow_empty=1')}}", + "placeholder": "不指定或选择查询API" }, { "name": "query_period",