You've already forked DataMate
feat(annotation): 添加不适用标注状态支持
- 在 AnnotationResultStatus 枚举中新增 NOT_APPLICABLE 状态 - 将无标注/不适用合并为两个独立的状态选项 - 更新前端标签显示逻辑以支持新的状态类型 - 修改确认对话框允许选择不适用状态 - 在后端数据库模型中添加 NOT_APPLICABLE 状态值 - 更新 API schema 描述以反映新的状态选项 - 调整标注状态判断和保存逻辑以处理三种状态 - 更新数据库表结构注释包含新状态类型
This commit is contained in:
@@ -8,7 +8,12 @@ from app.db.session import Base
|
||||
|
||||
ANNOTATION_STATUS_ANNOTATED = "ANNOTATED"
|
||||
ANNOTATION_STATUS_NO_ANNOTATION = "NO_ANNOTATION"
|
||||
ANNOTATION_STATUS_VALUES = {ANNOTATION_STATUS_ANNOTATED, ANNOTATION_STATUS_NO_ANNOTATION}
|
||||
ANNOTATION_STATUS_NOT_APPLICABLE = "NOT_APPLICABLE"
|
||||
ANNOTATION_STATUS_VALUES = {
|
||||
ANNOTATION_STATUS_ANNOTATED,
|
||||
ANNOTATION_STATUS_NO_ANNOTATION,
|
||||
ANNOTATION_STATUS_NOT_APPLICABLE,
|
||||
}
|
||||
|
||||
class AnnotationTemplate(Base):
|
||||
"""标注配置模板模型"""
|
||||
@@ -96,7 +101,7 @@ class AnnotationResult(Base):
|
||||
String(32),
|
||||
nullable=False,
|
||||
default=ANNOTATION_STATUS_ANNOTATED,
|
||||
comment="标注状态: ANNOTATED/NO_ANNOTATION",
|
||||
comment="标注状态: ANNOTATED/NO_ANNOTATION/NOT_APPLICABLE",
|
||||
)
|
||||
created_at = Column(TIMESTAMP, server_default=func.current_timestamp(), comment="创建时间")
|
||||
updated_at = Column(TIMESTAMP, server_default=func.current_timestamp(), onupdate=func.current_timestamp(), comment="更新时间")
|
||||
|
||||
@@ -17,6 +17,7 @@ from pydantic import BaseModel, Field, ConfigDict
|
||||
from app.db.models.annotation_management import (
|
||||
ANNOTATION_STATUS_ANNOTATED,
|
||||
ANNOTATION_STATUS_NO_ANNOTATION,
|
||||
ANNOTATION_STATUS_NOT_APPLICABLE,
|
||||
)
|
||||
|
||||
|
||||
@@ -25,6 +26,7 @@ class AnnotationStatus(str, Enum):
|
||||
|
||||
ANNOTATED = ANNOTATION_STATUS_ANNOTATED
|
||||
NO_ANNOTATION = ANNOTATION_STATUS_NO_ANNOTATION
|
||||
NOT_APPLICABLE = ANNOTATION_STATUS_NOT_APPLICABLE
|
||||
|
||||
|
||||
class EditorProjectInfo(BaseModel):
|
||||
@@ -110,7 +112,7 @@ class UpsertAnnotationRequest(BaseModel):
|
||||
annotation_status: Optional[AnnotationStatus] = Field(
|
||||
None,
|
||||
alias="annotationStatus",
|
||||
description="标注状态(无标注/不适用时传 NO_ANNOTATION)",
|
||||
description="标注状态(无标注传 NO_ANNOTATION,不适用传 NOT_APPLICABLE)",
|
||||
)
|
||||
expected_updated_at: Optional[datetime] = Field(
|
||||
None,
|
||||
|
||||
@@ -27,6 +27,7 @@ from app.db.models import AnnotationResult, Dataset, DatasetFiles, LabelingProje
|
||||
from app.db.models.annotation_management import (
|
||||
ANNOTATION_STATUS_ANNOTATED,
|
||||
ANNOTATION_STATUS_NO_ANNOTATION,
|
||||
ANNOTATION_STATUS_NOT_APPLICABLE,
|
||||
ANNOTATION_STATUS_VALUES,
|
||||
)
|
||||
from app.module.annotation.config import LabelStudioTagConfig
|
||||
@@ -908,6 +909,8 @@ class AnnotationEditorService:
|
||||
else:
|
||||
if requested_status == ANNOTATION_STATUS_NO_ANNOTATION:
|
||||
final_status = ANNOTATION_STATUS_NO_ANNOTATION
|
||||
elif requested_status == ANNOTATION_STATUS_NOT_APPLICABLE:
|
||||
final_status = ANNOTATION_STATUS_NOT_APPLICABLE
|
||||
else:
|
||||
raise HTTPException(status_code=400, detail="未发现标注内容,请确认无标注/不适用后再保存")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user