Skip to content

Commit e0884ab

Browse files
authored
Develop py update schema (#37)
* feature: implement endpoints with multi-level response models * refactor: move `/health` and `/config` endpoints to system module, remove example from base schemas * refactor: remove unused get_standard_response_model()
1 parent 155603b commit e0884ab

15 files changed

Lines changed: 89 additions & 71 deletions

File tree

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
from fastapi import APIRouter
22

3+
from .system.interface import router as system_router
34
from .annotation.interface import router as annotation_router
45

56
router = APIRouter(
67
prefix="/api"
78
)
89

10+
router.include_router(system_router)
911
router.include_router(annotation_router)
1012

1113
__all__ = ["router"]

runtime/datamate-python/app/module/annotation/interface/project.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,7 @@ async def create_mapping(
108108
response_data = DatasetMappingCreateResponse(
109109
id=mapping.id,
110110
labeling_project_id=str(mapping.labeling_project_id),
111-
labeling_project_name=mapping.name or project_name,
112-
message="Dataset mapping created successfully"
111+
labeling_project_name=mapping.name or project_name
113112
)
114113

115114
return StandardResponse(
@@ -341,8 +340,7 @@ async def delete_mapping(
341340
message="success",
342341
data=DeleteDatasetResponse(
343342
id=id,
344-
status="success",
345-
message=f"Successfully deleted mapping and Label Studio project '{labeling_project_name}'"
343+
status="success"
346344
)
347345
)
348346

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
from .mapping import (
2-
DatasetMappingBase,
2+
_DatasetMappingBase,
33
DatasetMappingCreateRequest,
44
DatasetMappingCreateResponse,
55
DatasetMappingUpdateRequest,
66
DatasetMappingResponse,
7-
DeleteDatasetResponse
7+
DeleteDatasetResponse,
88
)
99

1010
from .sync import (
1111
SyncDatasetRequest,
12-
SyncDatasetResponse
12+
SyncDatasetResponse,
1313
)
1414

1515
__all__ = [
16-
"DatasetMappingBase",
16+
"_DatasetMappingBase",
1717
"DatasetMappingCreateRequest",
1818
"DatasetMappingCreateResponse",
1919
"DatasetMappingUpdateRequest",
2020
"DatasetMappingResponse",
2121
"SyncDatasetRequest",
2222
"SyncDatasetResponse",
23-
"DeleteDatasetResponse"
23+
"DeleteDatasetResponse",
2424
]

runtime/datamate-python/app/module/annotation/schema/mapping.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
from datetime import datetime
44

55
from app.module.shared.schema import BaseResponseModel
6+
from app.module.shared.schema import StandardResponse
67

7-
class DatasetMappingBase(BaseResponseModel):
8+
class _DatasetMappingBase(BaseResponseModel):
89
"""数据集映射 基础模型"""
910
dataset_id: str = Field(..., description="源数据集ID")
1011

11-
class DatasetMappingCreateRequest(DatasetMappingBase):
12+
class DatasetMappingCreateRequest(_DatasetMappingBase):
1213
"""数据集映射 创建 请求模型"""
1314
pass
1415

@@ -17,13 +18,12 @@ class DatasetMappingCreateResponse(BaseResponseModel):
1718
id: str = Field(..., description="映射UUID")
1819
labeling_project_id: str = Field(..., description="Label Studio项目ID")
1920
labeling_project_name: str = Field(..., description="Label Studio项目名称")
20-
message: str = Field(..., description="响应消息")
2121

2222
class DatasetMappingUpdateRequest(BaseResponseModel):
2323
"""数据集映射 更新 请求模型"""
2424
dataset_id: Optional[str] = Field(None, description="源数据集ID")
2525

26-
class DatasetMappingResponse(DatasetMappingBase):
26+
class DatasetMappingResponse(_DatasetMappingBase):
2727
"""数据集映射 查询 响应模型"""
2828
id: str = Field(..., description="映射UUID")
2929
labeling_project_id: str = Field(..., description="标注项目ID")
@@ -38,5 +38,4 @@ class Config:
3838
class DeleteDatasetResponse(BaseResponseModel):
3939
"""删除数据集响应模型"""
4040
id: str = Field(..., description="映射UUID")
41-
status: str = Field(..., description="删除状态")
42-
message: str = Field(..., description="响应消息")
41+
status: str = Field(..., description="删除状态")

runtime/datamate-python/app/module/annotation/schema/sync.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
from pydantic import Field
2-
from typing import Optional
3-
from datetime import datetime
42

53
from app.module.shared.schema import BaseResponseModel
4+
from app.module.shared.schema import StandardResponse
65

76

87
class SyncDatasetRequest(BaseResponseModel):
@@ -17,3 +16,6 @@ class SyncDatasetResponse(BaseResponseModel):
1716
synced_files: int = Field(..., description="已同步文件数量")
1817
total_files: int = Field(0, description="总文件数量")
1918
message: str = Field(..., description="响应消息")
19+
20+
class SyncDatasetResponseStd(StandardResponse[SyncDatasetResponse]):
21+
pass

runtime/datamate-python/app/module/management/api/__init__.py

Whitespace-only changes.

runtime/datamate-python/app/module/management/api/system.py

Lines changed: 0 additions & 33 deletions
This file was deleted.

runtime/datamate-python/app/module/management/service/__init__.py

Whitespace-only changes.
Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""
22
通用响应模型
33
"""
4-
from typing import Generic, TypeVar, Optional, List
4+
from typing import Generic, TypeVar, Optional, List, Type
55
from pydantic import BaseModel, Field
66

77
# 定义泛型类型变量
@@ -29,18 +29,11 @@ class StandardResponse(BaseResponseModel, Generic[T]):
2929
"""
3030
code: int = Field(..., description="HTTP状态码")
3131
message: str = Field(..., description="响应消息")
32-
data: Optional[T] = Field(None, description="响应数据")
33-
32+
data: T = Field(..., description="响应数据")
33+
3434
class Config:
3535
populate_by_name = True
3636
alias_generator = to_camel
37-
json_schema_extra = {
38-
"example": {
39-
"code": 200,
40-
"message": "success",
41-
"data": {}
42-
}
43-
}
4437

4538
class PaginatedData(BaseResponseModel, Generic[T]):
4639
"""分页数据容器"""
@@ -49,14 +42,3 @@ class PaginatedData(BaseResponseModel, Generic[T]):
4942
total_elements: int = Field(..., description="总条数")
5043
total_pages: int = Field(..., description="总页数")
5144
content: List[T] = Field(..., description="当前页数据")
52-
53-
class Config:
54-
json_schema_extra = {
55-
"example": {
56-
"page": 1,
57-
"size": 20,
58-
"totalElements": 100,
59-
"totalPages": 5,
60-
"content": []
61-
}
62-
}

runtime/datamate-python/app/module/management/__init__.py renamed to runtime/datamate-python/app/module/system/__init__.py

File renamed without changes.

0 commit comments

Comments
 (0)