diff --git a/apps/jingrow/jingrow/api/tools.py b/apps/jingrow/jingrow/api/tools.py index 1f10c3b..d88ad90 100644 --- a/apps/jingrow/jingrow/api/tools.py +++ b/apps/jingrow/jingrow/api/tools.py @@ -259,59 +259,25 @@ def _install_single_tool_directory(tool_dir: str, tool_data: Dict[str, Any]) -> tool_frontend_dir.mkdir(parents=True, exist_ok=True) # 复制前端组件文件(如果存在) - frontend_source = tool_dir_path / "frontend" + # 结构:tool_name/frontend/tool_name/tool_name.vue + frontend_source = tool_dir_path / "frontend" / tool_name if frontend_source.exists() and frontend_source.is_dir(): - # 如果前端目录下有子目录(如 frontend/{tool_id}/),复制整个子目录 - # 否则直接复制 frontend/ 下的所有文件到工具目录 - subdirs = [d for d in frontend_source.iterdir() if d.is_dir()] - if subdirs: - # 有子目录,复制第一个子目录的内容 - source_subdir = subdirs[0] - if tool_frontend_dir.exists(): - shutil.rmtree(tool_frontend_dir) - shutil.copytree(source_subdir, tool_frontend_dir) - logger.info(f"复制前端组件目录: {source_subdir} -> {tool_frontend_dir}") - else: - # 没有子目录,直接复制所有文件 - if tool_frontend_dir.exists(): - shutil.rmtree(tool_frontend_dir) - tool_frontend_dir.mkdir(parents=True, exist_ok=True) - for item in frontend_source.iterdir(): - if item.is_file(): - shutil.copy2(item, tool_frontend_dir / item.name) - logger.info(f"复制前端组件: {item.name} -> {tool_frontend_dir}") - elif item.is_dir(): - shutil.copytree(item, tool_frontend_dir / item.name) - logger.info(f"复制前端组件目录: {item.name} -> {tool_frontend_dir}") + # 复制 frontend/tool_name/ 目录下的所有内容到目标目录 + if tool_frontend_dir.exists(): + shutil.rmtree(tool_frontend_dir) + shutil.copytree(frontend_source, tool_frontend_dir) + logger.info(f"复制前端组件目录: {frontend_source} -> {tool_frontend_dir}") # 复制后端文件(如果存在) - backend_source = tool_dir_path / "backend" + # 结构:tool_name/backend/tool_name/tool_name.py + backend_source = tool_dir_path / "backend" / tool_name if backend_source.exists() and backend_source.is_dir(): backend_target = jingrow_root / "tools" / tool_name - backend_target.mkdir(parents=True, exist_ok=True) - - # 如果后端目录下有子目录(如 backend/{tool_name}/),复制子目录的内容 - # 否则直接复制 backend/ 下的所有文件 - subdirs = [d for d in backend_source.iterdir() if d.is_dir()] - if subdirs: - # 有子目录,复制第一个子目录的内容 - source_subdir = subdirs[0] - if backend_target.exists(): - shutil.rmtree(backend_target) - shutil.copytree(source_subdir, backend_target) - logger.info(f"复制后端文件目录: {source_subdir} -> {backend_target}") - else: - # 没有子目录,直接复制所有文件 - if backend_target.exists(): - shutil.rmtree(backend_target) - backend_target.mkdir(parents=True, exist_ok=True) - for item in backend_source.iterdir(): - if item.is_file(): - shutil.copy2(item, backend_target / item.name) - logger.info(f"复制后端文件: {item.name} -> {backend_target}") - elif item.is_dir(): - shutil.copytree(item, backend_target / item.name) - logger.info(f"复制后端文件目录: {item.name} -> {backend_target}") + # 复制 backend/tool_name/ 目录下的所有内容到目标目录 + if backend_target.exists(): + shutil.rmtree(backend_target) + shutil.copytree(backend_source, backend_target) + logger.info(f"复制后端文件目录: {backend_source} -> {backend_target}") return { 'success': True,