本次同步 09-12 至 09-28 的代码变更,主要内容: 新增功能 - 修改密码:后端新增 ChangePasswordRequest DTO 与UserController/UserService 对应接口,前端新增 ChangePasswordDialog 并在 Header 接入入口 - 文件预览组件重构:file-preview 目录拆分出 VideoPreview(支持 blobUrl 直传)、 ImagePreview、AudioPreview,index.tsx 统一调度各类型预览器 - 新增 my_ops 算子模块:markitdown_parser、mineru_pdf_parser、text_quality_evaluator - 新增 tools/minio-file-server MinIO 文件服务 功能增强 - 数据清洗:cleaning_task_service/scheduler/routes 重构, data_juicer_executor 与 wrapper 增强,OperatorTable/LogsTable/TaskDetail 同步调整 - 数据标注:annotation sync.py、project.py 接口与schema 更新 - 数据采集、算子市场、首页与菜单路由相关页面调整 - DataJuicer 算子接入(useOperatorOperations、dj_ops_schema) 结构调整 - deepflow/ 更名为 deep-flow/(419 个文件重命名) - 新增 helm 部署编排、GitHub Actions 之外的自建镜像构建脚本 未纳入本次提交 - scripts-backup/、runtime/python-executor-backup/、components_backup/(备份目录) - *.backup*、__pycache__ 产物 - zh_core_web_sm-3.8.0-py3-none-any.whl(46MB 构建产物) - DataX/(内嵌独立仓库,远程亦未收录其源码)
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 文件,格式如下:
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"
待实现功能
- 算子收藏功能完善
- 标签过滤功能
使用示例
查询算子列表
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
}'
获取分类树
curl -X GET "http://localhost:18000/api/operator-market/categories/tree"
创建算子
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"
}'