定义otatask模型

This commit is contained in:
2025-12-03 16:23:33 +08:00
parent 4a3c82fc25
commit a1deb0011b
4 changed files with 65 additions and 27 deletions

View File

@@ -153,6 +153,44 @@ func (PendingCollection) TableName() string {
return "pending_collections"
}
// --- OTA 升级任务 ---
// OTATaskStatus 定义 OTA 升级任务的状态
type OTATaskStatus string
const (
OTATaskStatusPending OTATaskStatus = "待开始" // 任务已创建,等待下发
OTATaskStatusInProgress OTATaskStatus = "进行中" // 任务已下发,设备正在处理
OTATaskStatusSuccess OTATaskStatus = "成功" // 设备报告升级成功,新固件已运行
OTATaskStatusAlreadyUpToDate OTATaskStatus = "版本已是最新" // 设备报告版本已是最新,未执行升级
OTATaskStatusFailedPreCheck OTATaskStatus = "预检失败" // 设备报告升级前检查失败 (如拒绝降级、准备分区失败)
OTATaskStatusFailedDownload OTATaskStatus = "下载或校验失败" // 设备报告文件下载或校验失败 (包括清单文件和固件文件)
OTATaskStatusFailedRollback OTATaskStatus = "固件回滚" // 新固件启动失败,设备自动回滚
OTATaskStatusTimedOut OTATaskStatus = "超时" // 平台在超时后仍未收到最终报告
OTATaskStatusPlatformError OTATaskStatus = "平台内部错误" // 平台处理过程中发生的非设备报告错误
)
// OTATask 记录一次 OTA 升级任务的详细信息
type OTATask struct {
// ID 是数据库自增主键,将作为 task_id 在平台与设备间通信
ID uint32 `gorm:"primaryKey"`
// CreatedAt 是任务创建和开始的时间,作为联合主键方便只查询热点数据
CreatedAt time.Time `gorm:"primaryKey"`
AreaControllerID uint32 `gorm:"not null;index;comment:目标区域主控的ID"`
TargetVersion string `gorm:"type:varchar(32);not null;comment:目标固件版本号"`
Status OTATaskStatus `gorm:"type:varchar(32);not null;index;comment:任务状态"`
ErrorMessage string `gorm:"type:text;comment:错误信息,如果任务失败"`
FailedFilePath string `gorm:"type:text;comment:失败时关联的文件路径"`
CompletedAt *time.Time `gorm:"comment:任务完成(成功或失败)的时间"`
FinalReportedVersion string `gorm:"type:varchar(32);comment:任务结束后,设备上报的最终固件版本"`
}
// TableName 自定义 GORM 使用的数据库表名
func (OTATask) TableName() string {
return "ota_tasks"
}
// --- 用户审计日志 ---
// --- 审计日志状态常量 ---