This commit is contained in:
2026-03-29 23:17:20 +08:00
commit 7dc5e73af7
36 changed files with 1480 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
namespace OrpaonVision.Model.Annotation;
/// <summary>
/// 标注任务项模型(对应需求文档中的 mdl_annotation_task_item
/// </summary>
public sealed class AnnotationTaskItemModel
{
/// <summary>
/// 主键。
/// </summary>
public long Id { get; set; }
/// <summary>
/// 所属标注任务 ID。
/// </summary>
public long AnnotationTaskId { get; set; }
/// <summary>
/// 数据集项 ID。
/// </summary>
public long DatasetItemId { get; set; }
/// <summary>
/// 处理状态。
/// </summary>
public int Status { get; set; }
/// <summary>
/// 审核人。
/// </summary>
public string? ReviewedBy { get; set; }
/// <summary>
/// 审核时间。
/// </summary>
public DateTime? ReviewedAt { get; set; }
/// <summary>
/// 创建时间。
/// </summary>
public DateTime CreatedAt { get; set; }
/// <summary>
/// 创建人。
/// </summary>
public string? CreatedBy { get; set; }
/// <summary>
/// 更新时间。
/// </summary>
public DateTime? UpdatedAt { get; set; }
/// <summary>
/// 更新人。
/// </summary>
public string? UpdatedBy { get; set; }
}

View File

@@ -0,0 +1,89 @@
namespace OrpaonVision.Model.Annotation;
/// <summary>
/// 标注任务模型(对应需求文档中的 mdl_annotation_task
///
/// 说明:
/// - 为保持 Model 层轻量与独立,枚举字段暂以 int 存储;
/// - 业务层可在 Core 中将其映射为强类型枚举。
/// </summary>
public sealed class AnnotationTaskModel
{
/// <summary>
/// 主键。
/// </summary>
public long Id { get; set; }
/// <summary>
/// 任务编码(唯一)。
/// </summary>
public string TaskCode { get; set; } = string.Empty;
/// <summary>
/// 任务名称。
/// </summary>
public string TaskName { get; set; } = string.Empty;
/// <summary>
/// 平台类型。
/// 当前版本仅支持 CVAT建议固定为 1。
/// </summary>
public int PlatformType { get; set; } = 1;
/// <summary>
/// 外部平台任务 IDCVAT TaskId
/// </summary>
public string? ExternalTaskId { get; set; }
/// <summary>
/// 数据集 ID。
/// </summary>
public long DatasetId { get; set; }
/// <summary>
/// 标签集 ID。
/// </summary>
public long LabelSetId { get; set; }
/// <summary>
/// 指派标注人员。
/// </summary>
public string? AssignedTo { get; set; }
/// <summary>
/// 标注任务状态。
/// 参考Pending/InProgress/Completed/Recovered/Failed。
/// </summary>
public int Status { get; set; }
/// <summary>
/// 进度百分比0~100
/// </summary>
public decimal? ProgressPercent { get; set; }
/// <summary>
/// 同步状态。
/// 参考None/Syncing/Succeeded/Failed。
/// </summary>
public int SyncStatus { get; set; }
/// <summary>
/// 创建时间。
/// </summary>
public DateTime CreatedAt { get; set; }
/// <summary>
/// 创建人。
/// </summary>
public string? CreatedBy { get; set; }
/// <summary>
/// 更新时间。
/// </summary>
public DateTime? UpdatedAt { get; set; }
/// <summary>
/// 更新人。
/// </summary>
public string? UpdatedBy { get; set; }
}

View File

@@ -0,0 +1,77 @@
namespace OrpaonVision.Model.Annotation;
/// <summary>
/// 数据集项模型(对应需求文档中的 mdl_dataset_item 关键字段)。
/// </summary>
public sealed class DatasetItemModel
{
/// <summary>
/// 主键。
/// </summary>
public long Id { get; set; }
/// <summary>
/// 数据集 ID。
/// </summary>
public long DatasetId { get; set; }
/// <summary>
/// 文件路径(图片或视频帧存储路径)。
/// </summary>
public string FilePath { get; set; } = string.Empty;
/// <summary>
/// 文件名。
/// </summary>
public string FileName { get; set; } = string.Empty;
/// <summary>
/// 宽度。
/// </summary>
public int? Width { get; set; }
/// <summary>
/// 高度。
/// </summary>
public int? Height { get; set; }
/// <summary>
/// 标注状态。
/// </summary>
public int AnnotationStatus { get; set; }
/// <summary>
/// 质量状态。
/// </summary>
public int QualityStatus { get; set; }
/// <summary>
/// 文件哈希。
/// </summary>
public string? HashValue { get; set; }
/// <summary>
/// 扩展字段JSON
/// </summary>
public string? ExtraJson { get; set; }
/// <summary>
/// 创建时间。
/// </summary>
public DateTime CreatedAt { get; set; }
/// <summary>
/// 创建人。
/// </summary>
public string? CreatedBy { get; set; }
/// <summary>
/// 更新时间。
/// </summary>
public DateTime? UpdatedAt { get; set; }
/// <summary>
/// 更新人。
/// </summary>
public string? UpdatedBy { get; set; }
}

View File

@@ -0,0 +1,82 @@
namespace OrpaonVision.Model.Annotation;
/// <summary>
/// 数据集版本模型(对应需求文档中的 mdl_dataset_version 关键字段)。
/// </summary>
public sealed class DatasetVersionModel
{
/// <summary>
/// 主键。
/// </summary>
public long Id { get; set; }
/// <summary>
/// 数据集 ID。
/// </summary>
public long DatasetId { get; set; }
/// <summary>
/// 版本号。
/// </summary>
public string VersionNo { get; set; } = string.Empty;
/// <summary>
/// 标签集 ID。
/// </summary>
public long LabelSetId { get; set; }
/// <summary>
/// 条目数量。
/// </summary>
public int ItemCount { get; set; }
/// <summary>
/// 训练集数量。
/// </summary>
public int? TrainCount { get; set; }
/// <summary>
/// 验证集数量。
/// </summary>
public int? ValCount { get; set; }
/// <summary>
/// 测试集数量。
/// </summary>
public int? TestCount { get; set; }
/// <summary>
/// 导出路径。
/// </summary>
public string? ExportPath { get; set; }
/// <summary>
/// 快照 JSON。
/// </summary>
public string SnapshotJson { get; set; } = string.Empty;
/// <summary>
/// 状态。
/// </summary>
public int Status { get; set; }
/// <summary>
/// 创建时间。
/// </summary>
public DateTime CreatedAt { get; set; }
/// <summary>
/// 创建人。
/// </summary>
public string? CreatedBy { get; set; }
/// <summary>
/// 更新时间。
/// </summary>
public DateTime? UpdatedAt { get; set; }
/// <summary>
/// 更新人。
/// </summary>
public string? UpdatedBy { get; set; }
}

View File

@@ -0,0 +1,8 @@
namespace OrpaonVision.Model;
/// <summary>
/// Model 模块标记类型。
/// </summary>
public sealed class ModelModuleMarker
{
}

View File

@@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>