{ "swagger": "2.0", "info": { "contact": {} }, "paths": { "/api/v1/devices": { "get": { "description": "获取系统中所有设备的列表", "produces": [ "application/json" ], "tags": [ "设备管理" ], "summary": "获取设备列表", "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/controller.Response" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/git_huangwc_com_pig_pig-farm-controller_internal_app_controller_device.DeviceResponse" } } } } ] } } } }, "post": { "description": "根据提供的信息创建一个新设备", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "设备管理" ], "summary": "创建新设备", "parameters": [ { "description": "设备信息", "name": "device", "in": "body", "required": true, "schema": { "$ref": "#/definitions/device.CreateDeviceRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/controller.Response" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/git_huangwc_com_pig_pig-farm-controller_internal_app_controller_device.DeviceResponse" } } } ] } } } } }, "/api/v1/devices/{id}": { "get": { "description": "根据设备ID获取单个设备的详细信息", "produces": [ "application/json" ], "tags": [ "设备管理" ], "summary": "获取设备信息", "parameters": [ { "type": "string", "description": "设备ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/controller.Response" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/git_huangwc_com_pig_pig-farm-controller_internal_app_controller_device.DeviceResponse" } } } ] } } } }, "put": { "description": "根据设备ID更新一个已存在的设备信息", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "设备管理" ], "summary": "更新设备信息", "parameters": [ { "type": "string", "description": "设备ID", "name": "id", "in": "path", "required": true }, { "description": "要更新的设备信息", "name": "device", "in": "body", "required": true, "schema": { "$ref": "#/definitions/device.UpdateDeviceRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/controller.Response" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/git_huangwc_com_pig_pig-farm-controller_internal_app_controller_device.DeviceResponse" } } } ] } } } }, "delete": { "description": "根据设备ID删除一个设备(软删除)", "produces": [ "application/json" ], "tags": [ "设备管理" ], "summary": "删除设备", "parameters": [ { "type": "string", "description": "设备ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/controller.Response" } } } } }, "/api/v1/plans": { "get": { "description": "获取所有计划的列表", "produces": [ "application/json" ], "tags": [ "计划管理" ], "summary": "获取计划列表", "responses": { "200": { "description": "业务码为200代表成功获取列表", "schema": { "allOf": [ { "$ref": "#/definitions/controller.Response" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/plan.ListPlansResponse" } } } ] } } } }, "post": { "description": "创建一个新的计划,包括其基本信息和所有关联的子计划/任务。", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "计划管理" ], "summary": "创建计划", "parameters": [ { "description": "计划信息", "name": "plan", "in": "body", "required": true, "schema": { "$ref": "#/definitions/plan.CreatePlanRequest" } } ], "responses": { "200": { "description": "业务码为201代表创建成功", "schema": { "allOf": [ { "$ref": "#/definitions/controller.Response" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/plan.PlanResponse" } } } ] } } } } }, "/api/v1/plans/{id}": { "get": { "description": "根据计划ID获取单个计划的详细信息。", "produces": [ "application/json" ], "tags": [ "计划管理" ], "summary": "获取计划详情", "parameters": [ { "type": "integer", "description": "计划ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "业务码为200代表成功获取", "schema": { "allOf": [ { "$ref": "#/definitions/controller.Response" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/plan.PlanResponse" } } } ] } } } }, "put": { "description": "根据计划ID更新计划的详细信息。", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "计划管理" ], "summary": "更新计划", "parameters": [ { "type": "integer", "description": "计划ID", "name": "id", "in": "path", "required": true }, { "description": "更新后的计划信息", "name": "plan", "in": "body", "required": true, "schema": { "$ref": "#/definitions/plan.UpdatePlanRequest" } } ], "responses": { "200": { "description": "业务码为200代表更新成功", "schema": { "allOf": [ { "$ref": "#/definitions/controller.Response" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/plan.PlanResponse" } } } ] } } } }, "delete": { "description": "根据计划ID删除计划。", "produces": [ "application/json" ], "tags": [ "计划管理" ], "summary": "删除计划", "parameters": [ { "type": "integer", "description": "计划ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "业务码为200代表删除成功", "schema": { "$ref": "#/definitions/controller.Response" } } } } }, "/api/v1/plans/{id}/start": { "post": { "description": "根据计划ID启动一个计划的执行。", "produces": [ "application/json" ], "tags": [ "计划管理" ], "summary": "启动计划", "parameters": [ { "type": "integer", "description": "计划ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "业务码为200代表成功启动计划", "schema": { "$ref": "#/definitions/controller.Response" } } } } }, "/api/v1/plans/{id}/stop": { "post": { "description": "根据计划ID停止一个正在执行的计划。", "produces": [ "application/json" ], "tags": [ "计划管理" ], "summary": "停止计划", "parameters": [ { "type": "integer", "description": "计划ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "业务码为200代表成功停止计划", "schema": { "$ref": "#/definitions/controller.Response" } } } } }, "/api/v1/users": { "post": { "description": "根据用户名和密码创建一个新的系统用户。", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "用户管理" ], "summary": "创建新用户", "parameters": [ { "description": "用户信息", "name": "user", "in": "body", "required": true, "schema": { "$ref": "#/definitions/user.CreateUserRequest" } } ], "responses": { "200": { "description": "业务码为201代表创建成功", "schema": { "allOf": [ { "$ref": "#/definitions/controller.Response" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/user.CreateUserResponse" } } } ] } } } } }, "/api/v1/users/login": { "post": { "description": "用户使用用户名和密码登录,成功后返回 JWT 令牌。", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "用户管理" ], "summary": "用户登录", "parameters": [ { "description": "登录凭证", "name": "credentials", "in": "body", "required": true, "schema": { "$ref": "#/definitions/user.LoginRequest" } } ], "responses": { "200": { "description": "业务码为200代表登录成功", "schema": { "allOf": [ { "$ref": "#/definitions/controller.Response" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/user.LoginResponse" } } } ] } } } } } }, "definitions": { "controller.Response": { "type": "object", "properties": { "code": { "description": "业务状态码", "type": "integer" }, "data": { "description": "业务数据" }, "message": { "description": "提示信息", "type": "string" } } }, "device.CreateDeviceRequest": { "type": "object", "required": [ "name", "type" ], "properties": { "location": { "type": "string" }, "name": { "type": "string" }, "parent_id": { "type": "integer" }, "properties": { "type": "object", "additionalProperties": true }, "sub_type": { "$ref": "#/definitions/models.DeviceSubType" }, "type": { "$ref": "#/definitions/models.DeviceType" } } }, "device.UpdateDeviceRequest": { "type": "object", "required": [ "name", "type" ], "properties": { "location": { "type": "string" }, "name": { "type": "string" }, "parent_id": { "type": "integer" }, "properties": { "type": "object", "additionalProperties": true }, "sub_type": { "$ref": "#/definitions/models.DeviceSubType" }, "type": { "$ref": "#/definitions/models.DeviceType" } } }, "git_huangwc_com_pig_pig-farm-controller_internal_app_controller_device.DeviceResponse": { "type": "object", "properties": { "created_at": { "type": "string" }, "id": { "type": "integer" }, "location": { "type": "string" }, "name": { "type": "string" }, "parent_id": { "type": "integer" }, "properties": { "type": "object", "additionalProperties": true }, "sub_type": { "$ref": "#/definitions/models.DeviceSubType" }, "type": { "$ref": "#/definitions/models.DeviceType" }, "updated_at": { "type": "string" } } }, "models.DeviceSubType": { "type": "string", "enum": [ "", "temperature", "humidity", "ammonia", "weight", "feed_valve", "fan", "water_curtain" ], "x-enum-varnames": [ "SubTypeNone", "SubTypeSensorTemp", "SubTypeSensorHumidity", "SubTypeSensorAmmonia", "SubTypeSensorWeight", "SubTypeValveFeed", "SubTypeFan", "SubTypeWaterCurtain" ] }, "models.DeviceType": { "type": "string", "enum": [ "area_controller", "device" ], "x-enum-varnames": [ "DeviceTypeAreaController", "DeviceTypeDevice" ] }, "models.PlanContentType": { "type": "string", "enum": [ "sub_plans", "tasks" ], "x-enum-comments": { "PlanContentTypeSubPlans": "计划包含子计划", "PlanContentTypeTasks": "计划包含任务" }, "x-enum-descriptions": [ "计划包含子计划", "计划包含任务" ], "x-enum-varnames": [ "PlanContentTypeSubPlans", "PlanContentTypeTasks" ] }, "models.PlanExecutionType": { "type": "string", "enum": [ "automatic", "manual" ], "x-enum-comments": { "PlanExecutionTypeAutomatic": "自动执行 (包含定时和循环)", "PlanExecutionTypeManual": "手动执行" }, "x-enum-descriptions": [ "自动执行 (包含定时和循环)", "手动执行" ], "x-enum-varnames": [ "PlanExecutionTypeAutomatic", "PlanExecutionTypeManual" ] }, "models.PlanStatus": { "type": "integer", "format": "int32", "enum": [ 0, 1, 2, 3 ], "x-enum-comments": { "PlanStatusDisabled": "禁用计划", "PlanStatusEnabled": "启用计划", "PlanStatusFailed": "执行失败", "PlanStatusStopeed": "执行完毕" }, "x-enum-descriptions": [ "禁用计划", "启用计划", "执行完毕", "执行失败" ], "x-enum-varnames": [ "PlanStatusDisabled", "PlanStatusEnabled", "PlanStatusStopeed", "PlanStatusFailed" ] }, "models.TaskType": { "type": "string", "enum": [ "plan_analysis", "waiting", "release_feed_weight" ], "x-enum-comments": { "TaskPlanAnalysis": "解析Plan的Task列表并添加到待执行队列的特殊任务", "TaskTypeReleaseFeedWeight": "下料口释放指定重量任务", "TaskTypeWaiting": "等待任务" }, "x-enum-descriptions": [ "解析Plan的Task列表并添加到待执行队列的特殊任务", "等待任务", "下料口释放指定重量任务" ], "x-enum-varnames": [ "TaskPlanAnalysis", "TaskTypeWaiting", "TaskTypeReleaseFeedWeight" ] }, "plan.CreatePlanRequest": { "type": "object", "required": [ "execution_type", "name" ], "properties": { "cron_expression": { "type": "string", "example": "0 0 6 * * *" }, "description": { "type": "string", "example": "根据温度自动调节风扇和加热器" }, "execute_num": { "type": "integer", "example": 10 }, "execution_type": { "allOf": [ { "$ref": "#/definitions/models.PlanExecutionType" } ], "example": "automatic" }, "name": { "type": "string", "example": "猪舍温度控制计划" }, "sub_plan_ids": { "type": "array", "items": { "type": "integer" } }, "tasks": { "type": "array", "items": { "$ref": "#/definitions/plan.TaskRequest" } } } }, "plan.ListPlansResponse": { "type": "object", "properties": { "plans": { "type": "array", "items": { "$ref": "#/definitions/plan.PlanResponse" } }, "total": { "type": "integer", "example": 100 } } }, "plan.PlanResponse": { "type": "object", "properties": { "content_type": { "allOf": [ { "$ref": "#/definitions/models.PlanContentType" } ], "example": "tasks" }, "cron_expression": { "type": "string", "example": "0 0 6 * * *" }, "description": { "type": "string", "example": "根据温度自动调节风扇和加热器" }, "execute_count": { "type": "integer", "example": 0 }, "execute_num": { "type": "integer", "example": 10 }, "execution_type": { "allOf": [ { "$ref": "#/definitions/models.PlanExecutionType" } ], "example": "automatic" }, "id": { "type": "integer", "example": 1 }, "name": { "type": "string", "example": "猪舍温度控制计划" }, "status": { "allOf": [ { "$ref": "#/definitions/models.PlanStatus" } ], "example": 0 }, "sub_plans": { "type": "array", "items": { "$ref": "#/definitions/plan.SubPlanResponse" } }, "tasks": { "type": "array", "items": { "$ref": "#/definitions/plan.TaskResponse" } } } }, "plan.SubPlanResponse": { "type": "object", "properties": { "child_plan": { "$ref": "#/definitions/plan.PlanResponse" }, "child_plan_id": { "type": "integer", "example": 2 }, "execution_order": { "type": "integer", "example": 1 }, "id": { "type": "integer", "example": 1 }, "parent_plan_id": { "type": "integer", "example": 1 } } }, "plan.TaskRequest": { "type": "object", "properties": { "description": { "type": "string", "example": "打开1号风扇" }, "execution_order": { "type": "integer", "example": 1 }, "name": { "type": "string", "example": "打开风扇" }, "parameters": { "type": "object", "additionalProperties": true }, "type": { "allOf": [ { "$ref": "#/definitions/models.TaskType" } ], "example": "waiting" } } }, "plan.TaskResponse": { "type": "object", "properties": { "description": { "type": "string", "example": "打开1号风扇" }, "execution_order": { "type": "integer", "example": 1 }, "id": { "type": "integer", "example": 1 }, "name": { "type": "string", "example": "打开风扇" }, "parameters": { "type": "object", "additionalProperties": true }, "plan_id": { "type": "integer", "example": 1 }, "type": { "allOf": [ { "$ref": "#/definitions/models.TaskType" } ], "example": "waiting" } } }, "plan.UpdatePlanRequest": { "type": "object", "properties": { "cron_expression": { "type": "string", "example": "0 0 6 * * *" }, "description": { "type": "string", "example": "更新后的描述" }, "execute_num": { "type": "integer", "example": 10 }, "execution_type": { "allOf": [ { "$ref": "#/definitions/models.PlanExecutionType" } ], "example": "automatic" }, "name": { "type": "string", "example": "猪舍温度控制计划V2" }, "sub_plan_ids": { "type": "array", "items": { "type": "integer" } }, "tasks": { "type": "array", "items": { "$ref": "#/definitions/plan.TaskRequest" } } } }, "user.CreateUserRequest": { "type": "object", "required": [ "password", "username" ], "properties": { "password": { "type": "string", "minLength": 6, "example": "password123" }, "username": { "type": "string", "example": "newuser" } } }, "user.CreateUserResponse": { "type": "object", "properties": { "id": { "type": "integer", "example": 1 }, "username": { "type": "string", "example": "newuser" } } }, "user.LoginRequest": { "type": "object", "required": [ "password", "username" ], "properties": { "password": { "type": "string", "example": "password123" }, "username": { "type": "string", "example": "testuser" } } }, "user.LoginResponse": { "type": "object", "properties": { "id": { "type": "integer", "example": 1 }, "token": { "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }, "username": { "type": "string", "example": "testuser" } } } } }