fix:路由优化

This commit is contained in:
xiaozhu
2026-08-12 15:27:10 +08:00
parent e4b8c320a3
commit 8d83adf1aa
+51 -51
View File
@@ -894,6 +894,57 @@ async def list_scripts(
} }
@router.get("/api/v1/scripts/{script_id}/content")
async def get_script_content(
script_id: str,
request: Request,
context: RequestContext = Depends(request_context),
session: AsyncSession = Depends(database_session),
) -> dict[str, Any]:
"""获取脚本内容(用于只读预览)。
适用于被锁定的脚本,非所有者只能查看内容,不能编辑。
该接口不检查锁状态,调用方需自行判断权限。
"""
script = await session.scalar(
select(Scripts)
.where(
Scripts.script_id == script_id,
Scripts.workspace_id == context.workspace.workspace_id,
Scripts.status == "active",
)
)
if script is None:
raise HTTPException(status.HTTP_404_NOT_FOUND, "script not found")
# 获取 Jupyter 路径
jupyter_name = _jupyter_path(script.script_type, script.script_id)
# 从 Jupyter 读取内容
runtime_client = request.app.state.runtime_client
try:
content_data = await runtime_client.get_file(
context.workspace.workspace_id,
name=jupyter_name,
)
except RuntimeClientError as exc:
raise HTTPException(
status_code=exc.status_code,
detail=exc.detail,
) from exc
return {
"request_id": context.request_id,
"data": {
"script_id": script.script_id,
"script_type": script.script_type,
"content": content_data.get("content"),
"format": content_data.get("format"),
},
"meta": {},
}
@router.get("/api/v1/scripts/{script_id}") @router.get("/api/v1/scripts/{script_id}")
async def get_script( async def get_script(
script_id: str, script_id: str,
@@ -1360,54 +1411,3 @@ async def version_download_url(
request, request,
) )
return {"request_id": context.request_id, "data": data["data"], "meta": {}} return {"request_id": context.request_id, "data": data["data"], "meta": {}}
@router.get("/api/v1/scripts/{script_id}/content")
async def get_script_content(
script_id: str,
request: Request,
context: RequestContext = Depends(request_context),
session: AsyncSession = Depends(database_session),
) -> dict[str, Any]:
"""获取脚本内容(用于只读预览)。
适用于被锁定的脚本,非所有者只能查看内容,不能编辑。
该接口不检查锁状态,调用方需自行判断权限。
"""
script = await session.scalar(
select(Scripts)
.where(
Scripts.script_id == script_id,
Scripts.workspace_id == context.workspace.workspace_id,
Scripts.status == "active",
)
)
if script is None:
raise HTTPException(status.HTTP_404_NOT_FOUND, "script not found")
# 获取 Jupyter 路径
jupyter_name = _jupyter_path(script.script_type, script.script_id)
# 从 Jupyter 读取内容
runtime_client = request.app.state.runtime_client
try:
content_data = await runtime_client.get_file(
context.workspace.workspace_id,
name=jupyter_name,
)
except RuntimeClientError as exc:
raise HTTPException(
status_code=exc.status_code,
detail=exc.detail,
) from exc
return {
"request_id": context.request_id,
"data": {
"script_id": script.script_id,
"script_type": script.script_type,
"content": content_data.get("content"),
"format": content_data.get("format"),
},
"meta": {},
}