Files
DataMate/runtime/datamate-python/app/models/README.md
Jinglong Wang 7f819563db Develop labeling module (#25)
* refactor: remove db table management from LS adapter (mv to scripts later); change adapter to use the same MySQL DB as other modules.

* refactor: Rename LS Adapter module to datamate-python
2025-10-27 16:16:14 +08:00

4.9 KiB

DataMate 数据模型结构

本文档列出了根据 scripts/db 中的 SQL 文件创建的所有 Python 数据模型。

模型组织结构

app/models/
├── __init__.py                 # 主模块导出文件
├── dm/                         # 数据管理 (Data Management) 模块
│   ├── __init__.py
│   ├── annotation_template.py  # 标注模板
│   ├── labeling_project.py     # 标注项目
│   ├── dataset.py              # 数据集
│   ├── dataset_files.py        # 数据集文件
│   ├── dataset_statistics.py   # 数据集统计
│   ├── dataset_tag.py          # 数据集标签关联
│   ├── tag.py                  # 标签
│   └── user.py                 # 用户
├── cleaning/                   # 数据清洗 (Data Cleaning) 模块
│   ├── __init__.py
│   ├── clean_template.py       # 清洗模板
│   ├── clean_task.py           # 清洗任务
│   ├── operator_instance.py    # 算子实例
│   └── clean_result.py         # 清洗结果
├── collection/                 # 数据归集 (Data Collection) 模块
│   ├── __init__.py
│   ├── task_execution.py       # 任务执行明细
│   ├── collection_task.py      # 数据归集任务
│   ├── task_log.py             # 任务执行记录
│   └── datax_template.py       # DataX模板配置
├── common/                     # 通用 (Common) 模块
│   ├── __init__.py
│   └── chunk_upload_request.py # 文件切片上传请求
└── operator/                   # 算子 (Operator) 模块
    ├── __init__.py
    ├── operator.py             # 算子
    ├── operator_category.py    # 算子分类
    └── operator_category_relation.py  # 算子分类关联

模块详情

1. Data Management (DM) 模块

对应 SQL: data-management-init.sqldata-annotation-init.sql

模型列表:

  • AnnotationTemplate (t_dm_annotation_templates) - 标注模板
  • LabelingProject (t_dm_labeling_projects) - 标注项目
  • Dataset (t_dm_datasets) - 数据集(支持医学影像、文本、问答等多种类型)
  • DatasetFiles (t_dm_dataset_files) - 数据集文件
  • DatasetStatistics (t_dm_dataset_statistics) - 数据集统计信息
  • Tag (t_dm_tags) - 标签
  • DatasetTag (t_dm_dataset_tags) - 数据集标签关联
  • User (users) - 用户

2. Data Cleaning 模块

对应 SQL: data-cleaning-init.sql

模型列表:

  • CleanTemplate (t_clean_template) - 清洗模板
  • CleanTask (t_clean_task) - 清洗任务
  • OperatorInstance (t_operator_instance) - 算子实例
  • CleanResult (t_clean_result) - 清洗结果

3. Data Collection (DC) 模块

对应 SQL: data-collection-init.sql

模型列表:

  • TaskExecution (t_dc_task_executions) - 任务执行明细
  • CollectionTask (t_dc_collection_tasks) - 数据归集任务
  • TaskLog (t_dc_task_log) - 任务执行记录
  • DataxTemplate (t_dc_datax_templates) - DataX模板配置

4. Common 模块

对应 SQL: data-common-init.sql

模型列表:

  • ChunkUploadRequest (t_chunk_upload_request) - 文件切片上传请求

5. Operator 模块

对应 SQL: data-operator-init.sql

模型列表:

  • Operator (t_operator) - 算子
  • OperatorCategory (t_operator_category) - 算子分类
  • OperatorCategoryRelation (t_operator_category_relation) - 算子分类关联

使用方式

# 导入所有模型
from app.models import (
    # DM 模块
    AnnotationTemplate,
    LabelingProject,
    Dataset,
    DatasetFiles,
    DatasetStatistics,
    DatasetTag,
    Tag,
    User,
    # Cleaning 模块
    CleanTemplate,
    CleanTask,
    OperatorInstance,
    CleanResult,
    # Collection 模块
    TaskExecution,
    CollectionTask,
    TaskLog,
    DataxTemplate,
    # Common 模块
    ChunkUploadRequest,
    # Operator 模块
    Operator,
    OperatorCategory,
    OperatorCategoryRelation
)

# 或者按模块导入
from app.models.dm import Dataset, DatasetFiles
from app.models.collection import CollectionTask
from app.models.operator import Operator

注意事项

  1. UUID 主键: 大部分表使用 UUID (String(36)) 作为主键
  2. 时间戳: 使用 TIMESTAMP 类型,并配置自动更新
  3. 软删除: 部分模型(如 AnnotationTemplate, LabelingProject)支持软删除,包含 deleted_at 字段和 is_deleted 属性
  4. JSON 字段: 配置信息、元数据等使用 JSON 类型存储
  5. 字段一致性: 所有模型字段都严格按照 SQL 定义创建,确保与数据库表结构完全一致

更新记录

  • 2025-10-25: 根据 scripts/db 中的 SQL 文件创建所有数据模型
  • 已更新现有的 annotation_template.pylabeling_project.pydataset_files.py 以匹配 SQL 定义