# Operator Market Service - Python Implementation ## 概述 这是 `operator-market-service` 的 Python 实现,已集成到 `runtime/deepdata-python` 项目中。 ## 功能 - **算子管理**:创建、查询、更新、删除算子 - **分类管理**:树状分类结构查询 - **文件上传**:支持算子文件上传和解析(支持 tar/zip 格式) - **MCP 工具集成**:通过 fastapi-mcp 提供 MCP 工具接口 ## 目录结构 ``` app/module/operator_market/ ├── __init__.py # 模块入口 ├── constants.py # 常量定义 ├── exceptions.py # 异常定义 ├── schema/ # Pydantic Schema 定义 │ ├── __init__.py │ ├── operator.py # 算子相关 Schema │ ├── category.py # 分类相关 Schema │ └── release.py # 发布版本 Schema ├── parsers/ # 文件解析器 │ ├── __init__.py │ ├── abstract_parser.py # 抽象解析器基类 │ ├── tar_parser.py # TAR 文件解析器 │ ├── zip_parser.py # ZIP 文件解析器 │ └── parser_holder.py # 解析器持有者 ├── repository/ # 数据访问层 │ ├── __init__.py │ ├── operator_repository.py │ ├── category_repository.py │ ├── category_relation_repository.py │ └── operator_release_repository.py ├── service/ # 服务层 │ ├── __init__.py │ ├── operator_service.py │ └── category_service.py └── interface/ # API 接口层 ├── __init__.py ├── operator_routes.py └── category_routes.py ``` ## API 端点 ### 算子相关 (`/api/operator-market/operators`) | 方法 | 路径 | 描述 | |------|--------|------| | POST | `/list` | 查询算子列表(支持分页、分类过滤、关键词搜索) | | GET | `/{operator_id}` | 获取算子详情 | | PUT | `/{operator_id}` | 更新算子信息 | | POST | `/create` | 创建新算子 | | POST | `/upload` | 上传算子文件 | | POST | `/upload/pre-upload` | 预上传(获取请求 ID) | | POST | `/upload/chunk` | 分块上传 | | DELETE | `/{operator_id}` | 删除算子 | | GET | `/examples/download` | 下载示例算子 | ### 分类相关 (`/api/operator-market/categories`) | 方法 | 路径 | 描述 | |------|--------|------| | GET | `/tree` | 获取分类树状结构 | ## 数据库表 - `t_operator` - 算子表 - `t_operator_category` - 分类表 - `t_operator_category_relation` - 分类关系表 - `t_operator_release` - 算子发布版本表 - `v_operator` - 算子视图(包含分类信息) ## 文件格式支持 算子文件需包含 `metadata.yml` 文件,格式如下: ```yaml raw_id: "operator-id" name: "算子名称" description: "算子描述" version: "1.0.0" language: "python" # python, java modal: "text" # text, image, audio, video vendor: "deepdata" # deepdata, data-juicer, or other inputs: {...} outputs: {...} runtime: {...} settings: {...} metrics: {...} release: - "更新日志1" - "更新日志2" ``` ## 待实现功能 - [ ] 算子收藏功能完善 - [ ] 标签过滤功能 ## 使用示例 ### 查询算子列表 ```bash curl -X POST "http://localhost:18000/api/operator-market/operators/list" \ -H "Content-Type: application/json" \ -d '{ "page": 1, "size": 10, "keyword": "test", "isStar": false }' ``` ### 获取分类树 ```bash curl -X GET "http://localhost:18000/api/operator-market/categories/tree" ``` ### 创建算子 ```bash curl -X POST "http://localhost:18000/api/operator-market/operators/create" \ -H "Content-Type: application/json" \ -d '{ "id": "new-operator-id", "name": "新算子", "description": "这是一个新算子", "version": "1.0.0", "fileName": "operator.tar" }' ```