Files

139 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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"
}'
```