枚举改成中文

This commit is contained in:
2025-10-01 20:39:59 +08:00
parent f814e682cf
commit 3cc88a5248
12 changed files with 136 additions and 128 deletions

View File

@@ -19,7 +19,7 @@ import (
type CreatePlanRequest struct {
Name string `json:"name" binding:"required" example:"猪舍温度控制计划"`
Description string `json:"description" example:"根据温度自动调节风扇和加热器"`
ExecutionType models.PlanExecutionType `json:"execution_type" binding:"required" example:"automatic"`
ExecutionType models.PlanExecutionType `json:"execution_type" binding:"required" example:"自动"`
ExecuteNum uint `json:"execute_num,omitempty" example:"10"`
CronExpression string `json:"cron_expression" example:"0 0 6 * * *"`
SubPlanIDs []uint `json:"sub_plan_ids,omitempty"`
@@ -31,12 +31,12 @@ type PlanResponse struct {
ID uint `json:"id" example:"1"`
Name string `json:"name" example:"猪舍温度控制计划"`
Description string `json:"description" example:"根据温度自动调节风扇和加热器"`
ExecutionType models.PlanExecutionType `json:"execution_type" example:"automatic"`
Status models.PlanStatus `json:"status" example:"0"`
ExecutionType models.PlanExecutionType `json:"execution_type" example:"自动"`
Status models.PlanStatus `json:"status" example:"已启用"`
ExecuteNum uint `json:"execute_num" example:"10"`
ExecuteCount uint `json:"execute_count" example:"0"`
CronExpression string `json:"cron_expression" example:"0 0 6 * * *"`
ContentType models.PlanContentType `json:"content_type" example:"tasks"`
ContentType models.PlanContentType `json:"content_type" example:"任务"`
SubPlans []SubPlanResponse `json:"sub_plans,omitempty"`
Tasks []TaskResponse `json:"tasks,omitempty"`
}
@@ -51,7 +51,7 @@ type ListPlansResponse struct {
type UpdatePlanRequest struct {
Name string `json:"name" example:"猪舍温度控制计划V2"`
Description string `json:"description" example:"更新后的描述"`
ExecutionType models.PlanExecutionType `json:"execution_type" example:"automatic"`
ExecutionType models.PlanExecutionType `json:"execution_type" example:"自动"`
ExecuteNum uint `json:"execute_num,omitempty" example:"10"`
CronExpression string `json:"cron_expression" example:"0 0 6 * * *"`
SubPlanIDs []uint `json:"sub_plan_ids,omitempty"`
@@ -72,7 +72,7 @@ type TaskRequest struct {
Name string `json:"name" example:"打开风扇"`
Description string `json:"description" example:"打开1号风扇"`
ExecutionOrder int `json:"execution_order" example:"1"`
Type models.TaskType `json:"type" example:"waiting"`
Type models.TaskType `json:"type" example:"等待"`
Parameters map[string]interface{} `json:"parameters,omitempty"`
}
@@ -83,7 +83,7 @@ type TaskResponse struct {
Name string `json:"name" example:"打开风扇"`
Description string `json:"description" example:"打开1号风扇"`
ExecutionOrder int `json:"execution_order" example:"1"`
Type models.TaskType `json:"type" example:"waiting"`
Type models.TaskType `json:"type" example:"等待"`
Parameters map[string]interface{} `json:"parameters,omitempty"`
}

View File

@@ -435,7 +435,7 @@ func (s *Scheduler) handlePlanCompletion(planLogID uint) {
// 如果是自动计划且达到执行次数上限,或计划是手动类型,则更新计划状态为已停止
if (plan.ExecutionType == models.PlanExecutionTypeAutomatic && plan.ExecuteNum > 0 && newExecuteCount >= plan.ExecuteNum) || plan.ExecutionType == models.PlanExecutionTypeManual {
newStatus = models.PlanStatusStopeed
newStatus = models.PlanStatusStopped
s.logger.Infof("计划 %d 已完成执行,状态更新为 '执行完毕'。", topLevelPlanID)
}

View File

@@ -263,7 +263,7 @@ func (app *Application) initializePendingTasks(
if plan.ExecutionType == models.PlanExecutionTypeManual ||
(plan.ExecutionType == models.PlanExecutionTypeAutomatic && plan.ExecuteCount >= plan.ExecuteNum) {
// 更新计划状态为已停止
plan.Status = models.PlanStatusStopeed
plan.Status = models.PlanStatusStopped
logger.Infof("计划 #%d 状态已更新为 '执行完毕'。", plan.ID)
}

View File

@@ -15,9 +15,9 @@ type DeviceCategory string
const (
// CategoryActuator 代表一个执行器,可以被控制(例如:风机、阀门)
CategoryActuator DeviceCategory = "actuator"
CategoryActuator DeviceCategory = "执行器"
// CategorySensor 代表一个传感器,用于报告测量值(例如:温度计)
CategorySensor DeviceCategory = "sensor"
CategorySensor DeviceCategory = "传感器"
)
// ValueDescriptor 描述了传感器可以报告的单个数值。

View File

@@ -17,11 +17,11 @@ const (
type ExecutionStatus string
const (
ExecutionStatusStarted ExecutionStatus = "started" // 开始执行
ExecutionStatusCompleted ExecutionStatus = "completed" // 执行完成
ExecutionStatusFailed ExecutionStatus = "failed" // 执行失败
ExecutionStatusCancelled ExecutionStatus = "cancelled" // 执行取消
ExecutionStatusWaiting ExecutionStatus = "waiting" // 等待执行 (用于预写日志)
ExecutionStatusStarted ExecutionStatus = "已开始" // 开始执行
ExecutionStatusCompleted ExecutionStatus = "已完成" // 执行完成
ExecutionStatusFailed ExecutionStatus = "失败" // 执行失败
ExecutionStatusCancelled ExecutionStatus = "已取消" // 执行取消
ExecutionStatusWaiting ExecutionStatus = "等待中" // 等待执行 (用于预写日志)
)
// PlanExecutionLog 记录整个计划的一次执行历史
@@ -92,9 +92,9 @@ func (log *TaskExecutionLog) AfterFind(tx *gorm.DB) (err error) {
type PendingCollectionStatus string
const (
PendingStatusPending PendingCollectionStatus = "pending" // 请求已发送,等待设备响应
PendingStatusFulfilled PendingCollectionStatus = "fulfilled" // 已收到设备响应并成功处理
PendingStatusTimedOut PendingCollectionStatus = "timed_out" // 请求超时,未收到设备响应
PendingStatusPending PendingCollectionStatus = "等待中" // 请求已发送,等待设备响应
PendingStatusFulfilled PendingCollectionStatus = "已完成" // 已收到设备响应并成功处理
PendingStatusTimedOut PendingCollectionStatus = "已超时" // 请求超时,未收到设备响应
)
// DeviceCommandLog 记录所有“发后即忘”的下行指令日志。
@@ -160,8 +160,8 @@ func (PendingCollection) TableName() string {
type AuditStatus string
const (
AuditStatusSuccess AuditStatus = "success"
AuditStatusFailed AuditStatus = "failed"
AuditStatusSuccess AuditStatus = "成功"
AuditStatusFailed AuditStatus = "失败"
)
// --- 审计日志相关上下文键 ---

View File

@@ -0,0 +1,5 @@
package models
/*
饲料和饲喂相关的模型
*/

View File

@@ -0,0 +1,5 @@
package models
/*
和猪只本身相关的模型
*/

View File

@@ -15,25 +15,25 @@ import (
type PlanExecutionType string
const (
PlanExecutionTypeAutomatic PlanExecutionType = "automatic" // 自动执行 (包含定时和循环)
PlanExecutionTypeManual PlanExecutionType = "manual" // 手动执行
PlanExecutionTypeAutomatic PlanExecutionType = "自动" // 自动执行 (包含定时和循环)
PlanExecutionTypeManual PlanExecutionType = "手动" // 手动执行
)
// PlanContentType 定义了计划包含的内容类型
type PlanContentType string
const (
PlanContentTypeSubPlans PlanContentType = "sub_plans" // 计划包含子计划
PlanContentTypeTasks PlanContentType = "tasks" // 计划包含任务
PlanContentTypeSubPlans PlanContentType = "子计划" // 计划包含子计划
PlanContentTypeTasks PlanContentType = "任务" // 计划包含任务
)
// TaskType 定义了任务的类型,每个类型可以对应 task 包中的一个具体动作
type TaskType string
const (
TaskPlanAnalysis TaskType = "plan_analysis" // 解析Plan的Task列表并添加到待执行队列的特殊任务
TaskTypeWaiting TaskType = "waiting" // 等待任务
TaskTypeReleaseFeedWeight TaskType = "release_feed_weight" // 下料口释放指定重量任务
TaskPlanAnalysis TaskType = "计划分析" // 解析Plan的Task列表并添加到待执行队列的特殊任务
TaskTypeWaiting TaskType = "等待" // 等待任务
TaskTypeReleaseFeedWeight TaskType = "下料" // 下料口释放指定重量任务
)
// -- Task Parameters --
@@ -42,13 +42,14 @@ const (
ParamsPlanID = "plan_id"
)
type PlanStatus uint8
// PlanStatus 定义了计划的状态
type PlanStatus string
const (
PlanStatusDisabled PlanStatus = 0 // 禁用计划
PlanStatusEnabled PlanStatus = 1 // 启用计划
PlanStatusStopeed PlanStatus = 2 // 执行完毕
PlanStatusFailed PlanStatus = 3 // 执行失败
PlanStatusDisabled PlanStatus = "已禁用" // 禁用计划
PlanStatusEnabled PlanStatus = "已启用" // 启用计划
PlanStatusStopped PlanStatus = "执行完毕" // 执行完毕
PlanStatusFailed PlanStatus = "执行失败" // 执行失败
)
// Plan 代表系统中的一个计划,可以包含子计划或任务
@@ -58,9 +59,9 @@ type Plan struct {
Name string `gorm:"not null" json:"name"`
Description string `json:"description"`
ExecutionType PlanExecutionType `gorm:"not null;index" json:"execution_type"`
Status PlanStatus `gorm:"default:0;index" json:"status"` // 计划是否被启动
ExecuteNum uint `gorm:"default:0" json:"execute_num"` // 计划预期执行次数
ExecuteCount uint `gorm:"default:0" json:"execute_count"` // 执行计数器
Status PlanStatus `gorm:"default:'已禁用';index" json:"status"` // 计划是否被启动
ExecuteNum uint `gorm:"default:0" json:"execute_num"` // 计划预期执行次数
ExecuteCount uint `gorm:"default:0" json:"execute_count"` // 执行计数器
// 针对 PlanExecutionTypeAutomatic使用 Cron 表达式定义调度规则
CronExpression string `json:"cron_expression"`

View File

@@ -10,11 +10,11 @@ import (
type SensorType string
const (
SensorTypeSignalMetrics SensorType = "signal_metrics" // 信号强度
SensorTypeBatteryLevel SensorType = "battery_level" // 电池电量
SensorTypeTemperature SensorType = "temperature" // 温度
SensorTypeHumidity SensorType = "humidity" // 湿度
SensorTypeWeight SensorType = "weight" // 重量
SensorTypeSignalMetrics SensorType = "信号强度" // 信号强度
SensorTypeBatteryLevel SensorType = "电池电量" // 电池电量
SensorTypeTemperature SensorType = "温度" // 温度
SensorTypeHumidity SensorType = "湿度" // 湿度
SensorTypeWeight SensorType = "重量" // 重量
)
// SignalMetrics 存储信号强度数据