# DataFlow 脚本获取接口 - 前端开发指南 ## 接口概述 该接口用于根据 DataFlow ID 获取关联的 Python 脚本内容,支持前端代码预览和展示功能。 --- ## 接口信息 | 项目 | 说明 | |------|------| | **接口路径** | `/api/dataflow/get-script/` | | **请求方法** | `GET` | | **Content-Type** | `application/json` | | **认证方式** | 根据项目配置(如有) | --- ## 请求参数 ### URL 路径参数 | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | `dataflow_id` | Integer | 是 | DataFlow 节点的 ID(Neo4j 节点 ID) | ### 请求示例 ``` GET /api/dataflow/get-script/12345 ``` --- ## 返回数据格式 ### 成功响应 ```json { "code": 200, "message": "获取脚本成功", "data": { "script_path": "app/core/data_flow/scripts/sync_talent_data.py", "script_content": "#!/usr/bin/env python3\n\"\"\"人才数据同步脚本\"\"\"\n\nimport pandas as pd\nfrom app.config.config import get_config_by_env\n\ndef main():\n config = get_config_by_env()\n # 脚本主逻辑...\n print('执行完成')\n\nif __name__ == '__main__':\n main()\n", "script_type": "python", "dataflow_id": 12345, "dataflow_name": "人才数据同步", "dataflow_name_en": "sync_talent_data" } } ``` ### 返回字段说明 | 字段名 | 类型 | 说明 | |--------|------|------| | `code` | Integer | 状态码,200 表示成功 | | `message` | String | 响应消息 | | `data.script_path` | String | 脚本文件的相对路径 | | `data.script_content` | String | 脚本文件的完整内容 | | `data.script_type` | String | 脚本类型,可选值:`python`、`javascript`、`typescript`、`sql`、`shell`、`text` | | `data.dataflow_id` | Integer | DataFlow 节点 ID | | `data.dataflow_name` | String | DataFlow 中文名称 | | `data.dataflow_name_en` | String | DataFlow 英文名称 | --- ## 错误响应 ### 1. DataFlow 不存在或脚本路径为空(400) ```json { "code": 400, "message": "未找到 ID 为 12345 的 DataFlow 节点", "data": {} } ``` 或 ```json { "code": 400, "message": "DataFlow (ID: 12345) 的 script_path 属性为空", "data": {} } ``` ### 2. 脚本文件不存在(404) ```json { "code": 404, "message": "脚本文件不存在: /opt/dataops-platform/app/core/data_flow/scripts/missing_script.py", "data": {} } ``` ### 3. 服务器内部错误(500) ```json { "code": 500, "message": "获取脚本失败: 数据库连接异常", "data": {} } ``` ### 错误码汇总 | 错误码 | 说明 | 处理建议 | |--------|------|----------| | 400 | 参数错误或 DataFlow 脚本路径为空 | 检查 DataFlow ID 是否正确,确认该 DataFlow 已关联脚本 | | 404 | 脚本文件不存在 | 检查服务器上脚本文件是否存在,可能需要重新生成脚本 | | 500 | 服务器内部错误 | 联系后端开发人员检查日志 | --- ## 前端集成指南 ### 1. Axios 请求封装 ```javascript // api/dataflow.js import axios from 'axios' const BASE_URL = process.env.VUE_APP_API_BASE_URL || '' /** * 获取 DataFlow 关联的脚本内容 * @param {number} dataflowId - DataFlow 节点 ID * @returns {Promise} 返回脚本信息 */ export function getDataFlowScript(dataflowId) { return axios.get(`${BASE_URL}/api/dataflow/get-script/${dataflowId}`) } ``` ### 2. Vue 3 组件示例(使用 Composition API) ```vue ``` ### 3. 使用 Monaco Editor 的高级示例 如果需要更强大的代码编辑器功能,可以使用 Monaco Editor: ```vue ``` --- ## 依赖安装 ### Vue Prism Editor ```bash npm install vue-prism-editor prismjs ``` ### Monaco Editor ```bash npm install monaco-editor ``` 对于 Vite 项目,还需要安装 worker 插件: ```bash npm install vite-plugin-monaco-editor ``` 在 `vite.config.js` 中配置: ```javascript import monacoEditorPlugin from 'vite-plugin-monaco-editor' export default { plugins: [ monacoEditorPlugin({}) ] } ``` --- ## 使用场景 1. **DataFlow 详情页面** - 展示关联的处理脚本 2. **任务执行历史** - 查看执行时使用的脚本版本 3. **脚本审核流程** - 代码评审和确认 4. **调试和排错** - 快速查看脚本内容定位问题 --- ## 注意事项 1. **脚本内容可能较大**:建议添加加载动画和懒加载机制 2. **特殊字符转义**:脚本内容中可能包含特殊字符,前端展示时注意 XSS 防护 3. **编码格式**:脚本文件统一使用 UTF-8 编码 4. **缓存策略**:可根据业务需求添加前端缓存,减少重复请求 --- ## 更新日志 | 版本 | 日期 | 更新内容 | |------|------|----------| | v1.0.0 | 2025-01-05 | 初始版本,支持 Python 脚本获取和展示 |