支持设备定时定位上报与OTA通道选择

This commit is contained in:
stu2not
2026-06-15 08:52:30 +08:00
parent 9d1537bd5d
commit 2b04a2fca8
15 changed files with 893 additions and 24 deletions

View File

@@ -33,13 +33,30 @@ class DeviceFirmwareUpdateManager(DatabaseServiceBase):
return {
"device_id": row.device_id,
"firmware_version": row.firmware_version,
"ota_channel": getattr(row, "ota_channel", None),
"target_version": getattr(row, "target_version", None),
"firmware_url": getattr(row, "firmware_url", None),
"firmware_id": getattr(row, "firmware_id", None),
"source": getattr(row, "source", None),
"update_status": row.update_status,
"progress": row.progress,
"created_at": row.created_at,
"updated_at": row.updated_at,
}
async def create_firmware_update(self, device_id: str, firmware_version: str, update_status: str = "success", progress: float = 0.0):
async def create_firmware_update(
self,
device_id: str,
firmware_version: str,
update_status: str = "success",
progress: float = 0.0,
*,
ota_channel: str | None = None,
target_version: str | None = None,
firmware_url: str | None = None,
firmware_id: int | None = None,
source: str | None = None,
):
"""新增固件更新记录"""
await self._init_database()
db_session = await self.get_session()
@@ -55,7 +72,12 @@ class DeviceFirmwareUpdateManager(DatabaseServiceBase):
.values(
firmware_version=firmware_version,
update_status=update_status,
progress=progress
progress=progress,
ota_channel=ota_channel,
target_version=target_version,
firmware_url=firmware_url,
firmware_id=firmware_id,
source=source,
)
)
await db_session.execute(update_stmt)
@@ -66,7 +88,12 @@ class DeviceFirmwareUpdateManager(DatabaseServiceBase):
serial_number=serial_number,
firmware_version=firmware_version,
update_status=update_status,
progress=progress
progress=progress,
ota_channel=ota_channel,
target_version=target_version,
firmware_url=firmware_url,
firmware_id=firmware_id,
source=source,
)
await db_session.execute(insert_stmt)
@@ -75,6 +102,11 @@ class DeviceFirmwareUpdateManager(DatabaseServiceBase):
self._update_cache(device_id, {
"device_id": device_id,
"firmware_version": firmware_version,
"ota_channel": ota_channel,
"target_version": target_version,
"firmware_url": firmware_url,
"firmware_id": firmware_id,
"source": source,
"update_status": update_status,
"progress": progress
})
@@ -113,6 +145,12 @@ class DeviceFirmwareUpdateManager(DatabaseServiceBase):
firmware_version: str,
update_status: str,
progress: Optional[float] = None,
*,
ota_channel: str | None = None,
target_version: str | None = None,
firmware_url: str | None = None,
firmware_id: int | None = None,
source: str | None = None,
) -> bool:
"""更新设备固件信息(支持部分字段更新)"""
await self._init_database()
@@ -124,6 +162,14 @@ class DeviceFirmwareUpdateManager(DatabaseServiceBase):
}
if progress is not None:
update_values["progress"] = progress
optional_values = {
"ota_channel": ota_channel,
"target_version": target_version,
"firmware_url": firmware_url,
"firmware_id": firmware_id,
"source": source,
}
update_values.update({key: value for key, value in optional_values.items() if value is not None})
query = select(DeviceFirmwareUpdate).where(DeviceFirmwareUpdate.device_id == device_id)
result = await db_session.execute(query)
@@ -144,6 +190,11 @@ class DeviceFirmwareUpdateManager(DatabaseServiceBase):
firmware_version=firmware_version,
update_status=update_status,
progress=progress if progress is not None else 0.0,
ota_channel=ota_channel,
target_version=target_version,
firmware_url=firmware_url,
firmware_id=firmware_id,
source=source,
)
await db_session.execute(insert_stmt)