modify: 上报接口 422 问题

This commit is contained in:
2026-07-28 15:44:42 +08:00
parent 4d6ad2eae2
commit a12ceec221
+25 -1
View File
@@ -5,7 +5,7 @@
未声明的额外字段通过 model_config extra=allow 保留。
"""
from typing import Any, Optional
from pydantic import BaseModel, Field
from pydantic import BaseModel, Field, field_validator
# ============================================================
@@ -23,6 +23,14 @@ class GpsInfo(BaseModel):
longitude: float = Field(default=0.0, description="经度")
angleCourse: float = Field(default=0.0, description="GPS 角度")
@field_validator('kSpeed', 'nSpeed', 'latitude', 'longitude', 'angleCourse', mode='before')
@classmethod
def _empty_str_to_zero(cls, v: Any) -> Any:
"""设备可能上报空字符串,转为 0.0"""
if v == '' or v is None:
return 0.0
return v
class MediaInfo(BaseModel):
"""视频通道信息"""
@@ -38,6 +46,14 @@ class MediaInfo(BaseModel):
RtspTransport: bool = Field(default=False, description="是否开启 RTSP 转发")
Params: Optional[dict] = Field(default=None, description="预留其他参数")
@field_validator('MediaWidth', 'MediaHeight', mode='before')
@classmethod
def _empty_str_to_zero(cls, v: Any) -> Any:
"""设备可能上报空字符串,转为 0"""
if v == '' or v is None:
return 0
return v
class ResultProperty(BaseModel):
"""告警 Result 中的属性项"""
@@ -125,6 +141,14 @@ class AlarmReportRequest(BaseModel):
DataId: int = Field(default=0, description="数据 ID")
Id: int = Field(default=0, description="记录 ID")
@field_validator('DataId', 'Id', 'TimeStamp', 'Type', mode='before')
@classmethod
def _empty_str_to_zero(cls, v: Any) -> Any:
"""设备可能上报空字符串,转为 0"""
if v == '' or v is None:
return 0
return v
# ============================================================
# 告警上报响应体