File size: 2,086 Bytes
35e7795
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
"""项目相关的Pydantic模型"""

from datetime import datetime
from typing import Any, Dict, List, Optional

from pydantic import BaseModel, Field

from qa_annotate.schema.annotation import AnnotationConfig
from qa_annotate.schema.dataset import Dataset


class Project(BaseModel):
    """项目模型"""

    id: Optional[int] = Field(None, description="项目ID(自增主键,创建时无需提供)")
    name: str = Field(..., description="项目名称")
    description: Optional[str] = Field(None, description="项目描述")

    # 版本和状态
    version: Optional[str] = Field(None, description="项目版本号")
    status: Optional[str] = Field(
        "active", description="项目状态(active/inactive/archived)"
    )

    # 标签和分类
    tags: Optional[List[str]] = Field(None, description="项目标签列表")
    category: Optional[str] = Field(None, description="项目分类")

    # 创建者信息
    creator: Optional[str] = Field(None, description="创建者名称")
    creator_id: Optional[int] = Field(None, description="创建者ID")

    # 数据来源
    source: Optional[str] = Field(None, description="数据来源")
    source_url: Optional[str] = Field(None, description="数据来源URL")

    # 元数据
    metadata: Optional[Dict[str, Any]] = Field(
        None, description="额外的元数据(JSON格式)"
    )

    # 要显示的extra字段配置(数据集可继承)
    display_extra_fields: Optional[List[str]] = Field(
        None, description="要显示的extra字段列表(数据集可继承)"
    )

    # 时间戳
    created_at: Optional[datetime] = Field(None, description="创建时间")
    updated_at: Optional[datetime] = Field(None, description="更新时间")

    # 关联数据(可选,用于返回详细信息)
    datasets: Optional[List[Dataset]] = Field(
        None, description="项目下的数据集列表(可选)"
    )
    annotation_configs: Optional[List[AnnotationConfig]] = Field(
        None, description="项目关联的标注配置列表(可选)"
    )