增加get_package_dependencies函数

This commit is contained in:
jingrow 2025-11-05 04:03:46 +08:00
parent 31824cfbea
commit 022ec0d016
3 changed files with 68 additions and 1 deletions

View File

@ -136,7 +136,7 @@ const showResources = async () => {
try {
const packageName = props.context.record.name
const response = await axios.post('/api/action/jingrow.core.pagetype.package.package.get_package_dependencies', {
const response = await axios.post('/jingrow/get-package-dependencies', {
package_name: packageName
}, {
headers: get_session_api_headers()

View File

@ -2,6 +2,7 @@ from fastapi import APIRouter, HTTPException
from typing import Dict, Any
from pathlib import Path
import re
from jingrow.utils.jingrow_api import get_package_dependencies
router = APIRouter()
@ -281,3 +282,36 @@ dev = [
raise HTTPException(status_code=400, detail=str(e))
@router.post("/jingrow/get-package-dependencies")
async def get_package_dependencies_api(payload: Dict[str, Any]):
"""获取Package的依赖信息"""
try:
package_name = payload.get("package_name")
if not package_name:
raise ValueError("package_name is required")
# 调用 jingrow_api.get_package_dependencies
result = get_package_dependencies(package_name)
# 转换返回格式以匹配前端期望的格式
if result.get('success'):
return {
"message": {
"status": "success",
"package_name": result.get('package_name'),
"modules": result.get('modules', []),
"pagetypes": result.get('pagetypes', []),
"releases": result.get('releases', []),
"summary": result.get('summary', {})
}
}
else:
return {
"message": {
"status": "error",
"message": result.get('error', '获取Package依赖信息失败')
}
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))

View File

@ -479,6 +479,39 @@ def get_pagetype_module_app(pagetype: str):
except Exception as e:
return {'success': False, 'error': f"获取模块信息异常: {str(e)}"}
def get_package_dependencies(package_name: str):
"""
获取指定Package的依赖信息模块PageTypeRelease等
"""
try:
api_url = f"{Config.jingrow_server_url}/api/action/jingrow.core.pagetype.package.package.get_package_dependencies"
headers = get_jingrow_api_headers()
if not headers:
return {'success': False, 'error': 'JINGROW_API_KEY 或 JINGROW_API_SECRET 未配置'}
payload = {"package_name": package_name}
response = requests.post(api_url, json=payload, headers=headers, timeout=30)
if response.status_code == 200:
data = response.json()
# 处理服务端 action 的包裹格式
if isinstance(data, dict) and 'message' in data:
data = data['message']
# 检查返回格式
if isinstance(data, dict) and data.get('status') == 'success':
return {
'success': True,
'package_name': data.get('package_name'),
'modules': data.get('modules', []),
'pagetypes': data.get('pagetypes', []),
'releases': data.get('releases', []),
'summary': data.get('summary', {})
}
elif isinstance(data, dict) and data.get('status') == 'error':
return {'success': False, 'error': data.get('message', '获取Package依赖信息失败')}
return {'success': False, 'error': 'API响应格式错误'}
return {'success': False, 'error': f"HTTP {response.status_code}: {response.text}"}
except Exception as e:
return {'success': False, 'error': f"获取Package依赖信息异常: {str(e)}"}
def get_record_id(pagetype: str, filters: list = None, field: str = None, value: str = None, site: str = None):
"""
按条件获取单条记录的 name