definitions:
  controller.Response:
    properties:
      code:
        allOf:
        - $ref: '#/definitions/controller.ResponseCode'
        description: 业务状态码
      data:
        description: 业务数据, omitempty表示如果为空则不序列化
      message:
        description: 提示信息
        type: string
    type: object
  controller.ResponseCode:
    enum:
    - 2000
    - 2001
    - 4000
    - 4001
    - 4003
    - 4004
    - 4009
    - 5000
    - 5003
    type: integer
    x-enum-comments:
      CodeBadRequest: 请求参数错误
      CodeConflict: 资源冲突
      CodeCreated: 创建成功
      CodeForbidden: 禁止访问
      CodeInternalError: 服务器内部错误
      CodeNotFound: 资源未找到
      CodeServiceUnavailable: 服务不可用
      CodeSuccess: 操作成功
      CodeUnauthorized: 未授权
    x-enum-descriptions:
    - 操作成功
    - 创建成功
    - 请求参数错误
    - 未授权
    - 禁止访问
    - 资源未找到
    - 资源冲突
    - 服务器内部错误
    - 服务不可用
    x-enum-varnames:
    - CodeSuccess
    - CodeCreated
    - CodeBadRequest
    - CodeUnauthorized
    - CodeForbidden
    - CodeNotFound
    - CodeConflict
    - CodeInternalError
    - CodeServiceUnavailable
  dto.ActiveAlarmDTO:
    properties:
      alarm_code:
        $ref: '#/definitions/models.AlarmCode'
      alarm_details:
        type: string
      alarm_summary:
        type: string
      created_at:
        type: string
      id:
        type: integer
      ignored_until:
        type: string
      is_ignored:
        type: boolean
      last_notified_at:
        type: string
      level:
        $ref: '#/definitions/models.SeverityLevel'
      source_id:
        type: integer
      source_type:
        $ref: '#/definitions/models.AlarmSourceType'
      trigger_time:
        type: string
      updated_at:
        type: string
    type: object
  dto.AreaControllerResponse:
    properties:
      created_at:
        type: string
      id:
        type: integer
      location:
        type: string
      name:
        type: string
      network_id:
        type: string
      properties:
        additionalProperties: true
        type: object
      status:
        type: string
      updated_at:
        type: string
    type: object
  dto.AreaThresholdAlarmDTO:
    properties:
      area_controller_id:
        type: integer
      id:
        type: integer
      level:
        $ref: '#/definitions/models.SeverityLevel'
      operator:
        $ref: '#/definitions/models.Operator'
      sensor_type:
        $ref: '#/definitions/models.SensorType'
      thresholds:
        type: number
    type: object
  dto.AssignEmptyPensToBatchRequest:
    properties:
      pen_ids:
        description: 待分配的猪栏ID列表
        example:
        - 1
        - 2
        - 3
        items:
          type: integer
        minItems: 1
        type: array
    required:
    - pen_ids
    type: object
  dto.BuyPigsRequest:
    properties:
      pen_id:
        description: 猪栏ID
        type: integer
      quantity:
        description: 买入猪只数量
        minimum: 1
        type: integer
      remarks:
        description: 备注
        type: string
      total_price:
        description: 总价
        minimum: 0
        type: number
      trade_date:
        description: 交易日期
        type: string
      trader_name:
        description: 交易方名称
        type: string
      unit_price:
        description: 单价
        minimum: 0
        type: number
    required:
    - pen_id
    - quantity
    - total_price
    - trade_date
    - trader_name
    - unit_price
    type: object
  dto.CreateAreaControllerRequest:
    properties:
      location:
        type: string
      name:
        type: string
      network_id:
        type: string
      properties:
        additionalProperties: true
        type: object
    required:
    - name
    - network_id
    type: object
  dto.CreateAreaThresholdAlarmDTO:
    properties:
      area_controller_id:
        description: 区域主控ID
        type: integer
      level:
        allOf:
        - $ref: '#/definitions/models.SeverityLevel'
        description: 告警等级，可选
      operator:
        allOf:
        - $ref: '#/definitions/models.Operator'
        description: 操作符
      sensor_type:
        allOf:
        - $ref: '#/definitions/models.SensorType'
        description: 传感器类型
      thresholds:
        description: 阈值
        type: number
    required:
    - area_controller_id
    - operator
    - sensor_type
    - thresholds
    type: object
  dto.CreateDeviceRequest:
    properties:
      area_controller_id:
        type: integer
      device_template_id:
        type: integer
      location:
        type: string
      name:
        type: string
      properties:
        additionalProperties: true
        type: object
    required:
    - area_controller_id
    - device_template_id
    - name
    type: object
  dto.CreateDeviceTemplateRequest:
    properties:
      category:
        $ref: '#/definitions/models.DeviceCategory'
      commands:
        additionalProperties: true
        type: object
      description:
        type: string
      manufacturer:
        type: string
      name:
        type: string
      values:
        items:
          $ref: '#/definitions/models.ValueDescriptor'
        type: array
    required:
    - category
    - commands
    - name
    type: object
  dto.CreateDeviceThresholdAlarmDTO:
    properties:
      device_id:
        description: 设备ID
        type: integer
      level:
        allOf:
        - $ref: '#/definitions/models.SeverityLevel'
        description: 告警等级，可选，如果未提供则使用默认值
      operator:
        allOf:
        - $ref: '#/definitions/models.Operator'
        description: 操作符 (使用string类型，与前端交互更通用)
      sensor_type:
        allOf:
        - $ref: '#/definitions/models.SensorType'
        description: 传感器类型
      thresholds:
        description: 阈值
        type: number
    required:
    - device_id
    - operator
    - sensor_type
    - thresholds
    type: object
  dto.CreatePenRequest:
    properties:
      capacity:
        type: integer
      house_id:
        type: integer
      pen_number:
        type: string
    required:
    - capacity
    - house_id
    - pen_number
    type: object
  dto.CreatePigHouseRequest:
    properties:
      description:
        type: string
      name:
        type: string
    required:
    - name
    type: object
  dto.CreatePlanRequest:
    properties:
      cron_expression:
        example: 0 0 6 * * *
        type: string
      description:
        example: 根据温度自动调节风扇和加热器
        type: string
      execute_num:
        example: 10
        minimum: 0
        type: integer
      execution_type:
        allOf:
        - $ref: '#/definitions/models.PlanExecutionType'
        example: 自动
      name:
        example: 猪舍温度控制计划
        type: string
      sub_plan_ids:
        items:
          type: integer
        type: array
      tasks:
        items:
          $ref: '#/definitions/dto.TaskRequest'
        type: array
    required:
    - execution_type
    - name
    type: object
  dto.CreateUserRequest:
    properties:
      password:
        example: password123
        type: string
      username:
        example: newuser
        type: string
    required:
    - password
    - username
    type: object
  dto.CreateUserResponse:
    properties:
      id:
        example: 1
        type: integer
      username:
        example: newuser
        type: string
    type: object
  dto.DeleteDeviceThresholdAlarmDTO:
    properties:
      sensor_type:
        allOf:
        - $ref: '#/definitions/models.SensorType'
        description: 传感器类型
    required:
    - sensor_type
    type: object
  dto.DeviceCommandLogDTO:
    properties:
      acknowledged_at:
        type: string
      device_id:
        type: integer
      message_id:
        type: string
      received_success:
        type: boolean
      sent_at:
        type: string
    type: object
  dto.DeviceResponse:
    properties:
      area_controller_id:
        type: integer
      area_controller_name:
        type: string
      created_at:
        type: string
      device_template_id:
        type: integer
      device_template_name:
        type: string
      id:
        type: integer
      location:
        type: string
      name:
        type: string
      properties:
        additionalProperties: true
        type: object
      updated_at:
        type: string
    type: object
  dto.DeviceTemplateResponse:
    properties:
      category:
        $ref: '#/definitions/models.DeviceCategory'
      commands:
        additionalProperties: true
        type: object
      created_at:
        type: string
      description:
        type: string
      id:
        type: integer
      manufacturer:
        type: string
      name:
        type: string
      updated_at:
        type: string
      values:
        items:
          $ref: '#/definitions/models.ValueDescriptor'
        type: array
    type: object
  dto.DeviceThresholdAlarmDTO:
    properties:
      device_id:
        type: integer
      id:
        type: integer
      level:
        $ref: '#/definitions/models.SeverityLevel'
      operator:
        $ref: '#/definitions/models.Operator'
      sensor_type:
        $ref: '#/definitions/models.SensorType'
      thresholds:
        type: number
    type: object
  dto.HistoricalAlarmDTO:
    properties:
      alarm_code:
        $ref: '#/definitions/models.AlarmCode'
      alarm_summary:
        type: string
      id:
        type: integer
      json_details:
        type: string
      level:
        $ref: '#/definitions/models.SeverityLevel'
      resolve_method:
        type: string
      resolve_time:
        type: string
      resolved_by:
        type: integer
      source_id:
        type: integer
      source_type:
        $ref: '#/definitions/models.AlarmSourceType'
      trigger_time:
        type: string
    type: object
  dto.ListActiveAlarmResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.ActiveAlarmDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListAreaThresholdAlarmResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.AreaThresholdAlarmDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListDeviceCommandLogResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.DeviceCommandLogDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListDeviceThresholdAlarmResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.DeviceThresholdAlarmDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListHistoricalAlarmResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.HistoricalAlarmDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListMedicationLogResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.MedicationLogDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListNotificationResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.NotificationDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListPendingCollectionResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.PendingCollectionDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListPigBatchLogResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.PigBatchLogDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListPigPurchaseResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.PigPurchaseDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListPigSaleResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.PigSaleDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListPigSickLogResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.PigSickLogDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListPigTransferLogResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.PigTransferLogDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListPlanExecutionLogResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.PlanExecutionLogDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListPlansResponse:
    properties:
      plans:
        items:
          $ref: '#/definitions/dto.PlanResponse'
        type: array
      total:
        example: 100
        type: integer
    type: object
  dto.ListSensorDataResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.SensorDataDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListTaskExecutionLogResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.TaskExecutionLogDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListUserActionLogResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.UserActionLogDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListWeighingBatchResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.WeighingBatchDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.ListWeighingRecordResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/dto.WeighingRecordDTO'
        type: array
      pagination:
        $ref: '#/definitions/dto.PaginationDTO'
    type: object
  dto.LoginRequest:
    properties:
      identifier:
        description: Identifier 可以是用户名、邮箱、手机号、微信号或飞书账号
        example: testuser
        type: string
      password:
        example: password123
        type: string
    required:
    - identifier
    - password
    type: object
  dto.LoginResponse:
    properties:
      id:
        example: 1
        type: integer
      token:
        example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
        type: string
      username:
        example: testuser
        type: string
    type: object
  dto.ManualControlDeviceRequest:
    properties:
      action:
        description: Action 不传表示这是一个传感器, 会触发一次采集
        type: string
    type: object
  dto.MedicationDTO:
    properties:
      id:
        type: integer
      name:
        type: string
    type: object
  dto.MedicationLogDTO:
    properties:
      description:
        type: string
      dosage_used:
        type: number
      happened_at:
        type: string
      id:
        type: integer
      medication:
        $ref: '#/definitions/dto.MedicationDTO'
      medication_id:
        type: integer
      operator_id:
        type: integer
      pig_batch_id:
        type: integer
      reason:
        $ref: '#/definitions/models.MedicationReasonType'
      target_count:
        type: integer
    type: object
  dto.MovePigsIntoPenRequest:
    properties:
      quantity:
        description: 移入猪只数量
        minimum: 1
        type: integer
      remarks:
        description: 备注
        type: string
      to_pen_id:
        description: 目标猪栏ID
        type: integer
    required:
    - quantity
    - to_pen_id
    type: object
  dto.NotificationDTO:
    properties:
      alarm_timestamp:
        type: string
      created_at:
        type: string
      error_message:
        type: string
      id:
        type: integer
      level:
        $ref: '#/definitions/models.SeverityLevel'
      message:
        type: string
      notifier_type:
        $ref: '#/definitions/models.NotifierType'
      status:
        $ref: '#/definitions/models.NotificationStatus'
      title:
        type: string
      to_address:
        type: string
      updated_at:
        type: string
      user_id:
        type: integer
    type: object
  dto.PaginationDTO:
    properties:
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  dto.PenResponse:
    properties:
      capacity:
        type: integer
      current_pig_count:
        type: integer
      house_id:
        type: integer
      id:
        type: integer
      pen_number:
        type: string
      pig_batch_id:
        type: integer
      status:
        $ref: '#/definitions/models.PenStatus'
    type: object
  dto.PendingCollectionDTO:
    properties:
      command_metadata:
        items:
          type: integer
        type: array
      correlation_id:
        type: string
      created_at:
        type: string
      device_id:
        type: integer
      fulfilled_at:
        type: string
      status:
        $ref: '#/definitions/models.PendingCollectionStatus'
    type: object
  dto.PigBatchCreateDTO:
    properties:
      batch_number:
        description: 批次编号，必填
        type: string
      initial_count:
        description: 初始数量，必填，最小为1
        minimum: 1
        type: integer
      origin_type:
        allOf:
        - $ref: '#/definitions/models.PigBatchOriginType'
        description: 批次来源，必填
      start_date:
        description: 批次开始日期，必填
        type: string
      status:
        allOf:
        - $ref: '#/definitions/models.PigBatchStatus'
        description: 批次状态，必填
    required:
    - batch_number
    - initial_count
    - origin_type
    - start_date
    - status
    type: object
  dto.PigBatchLogDTO:
    properties:
      after_count:
        type: integer
      before_count:
        type: integer
      change_count:
        type: integer
      change_type:
        $ref: '#/definitions/models.LogChangeType'
      created_at:
        type: string
      happened_at:
        type: string
      id:
        type: integer
      operator_id:
        type: integer
      pig_batch_id:
        type: integer
      reason:
        type: string
      updated_at:
        type: string
    type: object
  dto.PigBatchResponseDTO:
    properties:
      batch_number:
        description: 批次编号
        type: string
      create_time:
        description: 创建时间
        type: string
      current_total_pigs_in_pens:
        description: 当前存栏总数
        type: integer
      current_total_quantity:
        description: 当前总数
        type: integer
      end_date:
        description: 批次结束日期
        type: string
      id:
        description: 批次ID
        type: integer
      initial_count:
        description: 初始数量
        type: integer
      is_active:
        description: 是否活跃
        type: boolean
      origin_type:
        allOf:
        - $ref: '#/definitions/models.PigBatchOriginType'
        description: 批次来源
      start_date:
        description: 批次开始日期
        type: string
      status:
        allOf:
        - $ref: '#/definitions/models.PigBatchStatus'
        description: 批次状态
      update_time:
        description: 更新时间
        type: string
    type: object
  dto.PigBatchUpdateDTO:
    properties:
      batch_number:
        description: 批次编号，可选
        type: string
      end_date:
        description: 批次结束日期，可选
        type: string
      initial_count:
        description: 初始数量，可选
        type: integer
      origin_type:
        allOf:
        - $ref: '#/definitions/models.PigBatchOriginType'
        description: 批次来源，可选
      start_date:
        description: 批次开始日期，可选
        type: string
      status:
        allOf:
        - $ref: '#/definitions/models.PigBatchStatus'
        description: 批次状态，可选
    type: object
  dto.PigHouseResponse:
    properties:
      description:
        type: string
      id:
        type: integer
      name:
        type: string
    type: object
  dto.PigPurchaseDTO:
    properties:
      created_at:
        type: string
      id:
        type: integer
      operator_id:
        type: integer
      pig_batch_id:
        type: integer
      purchase_date:
        type: string
      quantity:
        type: integer
      remarks:
        type: string
      supplier:
        type: string
      total_price:
        type: number
      unit_price:
        type: number
      updated_at:
        type: string
    type: object
  dto.PigSaleDTO:
    properties:
      buyer:
        type: string
      created_at:
        type: string
      id:
        type: integer
      operator_id:
        type: integer
      pig_batch_id:
        type: integer
      quantity:
        type: integer
      remarks:
        type: string
      sale_date:
        type: string
      total_price:
        type: number
      unit_price:
        type: number
      updated_at:
        type: string
    type: object
  dto.PigSickLogDTO:
    properties:
      after_count:
        type: integer
      before_count:
        type: integer
      change_count:
        type: integer
      created_at:
        type: string
      happened_at:
        type: string
      id:
        type: integer
      operator_id:
        type: integer
      pen_id:
        type: integer
      pig_batch_id:
        type: integer
      reason:
        $ref: '#/definitions/models.PigBatchSickPigReasonType'
      remarks:
        type: string
      treatment_location:
        $ref: '#/definitions/models.PigBatchSickPigTreatmentLocation'
      updated_at:
        type: string
    type: object
  dto.PigTransferLogDTO:
    properties:
      correlation_id:
        type: string
      created_at:
        type: string
      id:
        type: integer
      operator_id:
        type: integer
      pen_id:
        type: integer
      pig_batch_id:
        type: integer
      quantity:
        type: integer
      remarks:
        type: string
      transfer_time:
        type: string
      type:
        $ref: '#/definitions/models.PigTransferType'
      updated_at:
        type: string
    type: object
  dto.PlanExecutionLogDTO:
    properties:
      created_at:
        type: string
      ended_at:
        type: string
      error:
        type: string
      id:
        type: integer
      plan_id:
        type: integer
      plan_name:
        type: string
      started_at:
        type: string
      status:
        $ref: '#/definitions/models.ExecutionStatus'
      updated_at:
        type: string
    type: object
  dto.PlanResponse:
    properties:
      content_type:
        allOf:
        - $ref: '#/definitions/models.PlanContentType'
        example: 任务
      cron_expression:
        example: 0 0 6 * * *
        type: string
      description:
        example: 根据温度自动调节风扇和加热器
        type: string
      execute_count:
        example: 0
        type: integer
      execute_num:
        example: 10
        type: integer
      execution_type:
        allOf:
        - $ref: '#/definitions/models.PlanExecutionType'
        example: 自动
      id:
        example: 1
        type: integer
      name:
        example: 猪舍温度控制计划
        type: string
      plan_type:
        allOf:
        - $ref: '#/definitions/models.PlanType'
        example: 自定义任务
      status:
        allOf:
        - $ref: '#/definitions/models.PlanStatus'
        example: 已启用
      sub_plans:
        items:
          $ref: '#/definitions/dto.SubPlanResponse'
        type: array
      tasks:
        items:
          $ref: '#/definitions/dto.TaskResponse'
        type: array
    type: object
  dto.ReclassifyPenToNewBatchRequest:
    properties:
      pen_id:
        description: 待划拨的猪栏ID
        type: integer
      remarks:
        description: 备注
        type: string
      to_batch_id:
        description: 目标猪批次ID
        type: integer
    required:
    - pen_id
    - to_batch_id
    type: object
  dto.RecordCullRequest:
    properties:
      happened_at:
        description: 发生时间
        type: string
      pen_id:
        description: 猪栏ID
        type: integer
      quantity:
        description: 淘汰猪数量
        minimum: 1
        type: integer
      remarks:
        description: 备注
        type: string
    required:
    - happened_at
    - pen_id
    - quantity
    type: object
  dto.RecordDeathRequest:
    properties:
      happened_at:
        description: 发生时间
        type: string
      pen_id:
        description: 猪栏ID
        type: integer
      quantity:
        description: 死亡猪数量
        minimum: 1
        type: integer
      remarks:
        description: 备注
        type: string
    required:
    - happened_at
    - pen_id
    - quantity
    type: object
  dto.RecordSickPigCullRequest:
    properties:
      happened_at:
        description: 发生时间
        type: string
      pen_id:
        description: 猪栏ID
        type: integer
      quantity:
        description: 淘汰猪数量
        minimum: 1
        type: integer
      remarks:
        description: 备注
        type: string
      treatment_location:
        allOf:
        - $ref: '#/definitions/models.PigBatchSickPigTreatmentLocation'
        description: 治疗地点
    required:
    - happened_at
    - pen_id
    - quantity
    - treatment_location
    type: object
  dto.RecordSickPigDeathRequest:
    properties:
      happened_at:
        description: 发生时间
        type: string
      pen_id:
        description: 猪栏ID
        type: integer
      quantity:
        description: 死亡猪数量
        minimum: 1
        type: integer
      remarks:
        description: 备注
        type: string
      treatment_location:
        allOf:
        - $ref: '#/definitions/models.PigBatchSickPigTreatmentLocation'
        description: 治疗地点
    required:
    - happened_at
    - pen_id
    - quantity
    - treatment_location
    type: object
  dto.RecordSickPigRecoveryRequest:
    properties:
      happened_at:
        description: 发生时间
        type: string
      pen_id:
        description: 猪栏ID
        type: integer
      quantity:
        description: 康复猪数量
        minimum: 1
        type: integer
      remarks:
        description: 备注
        type: string
      treatment_location:
        allOf:
        - $ref: '#/definitions/models.PigBatchSickPigTreatmentLocation'
        description: 治疗地点
    required:
    - happened_at
    - pen_id
    - quantity
    - treatment_location
    type: object
  dto.RecordSickPigsRequest:
    properties:
      happened_at:
        description: 发生时间
        type: string
      pen_id:
        description: 猪栏ID
        type: integer
      quantity:
        description: 病猪数量
        minimum: 1
        type: integer
      remarks:
        description: 备注
        type: string
      treatment_location:
        allOf:
        - $ref: '#/definitions/models.PigBatchSickPigTreatmentLocation'
        description: 治疗地点
    required:
    - happened_at
    - pen_id
    - quantity
    - treatment_location
    type: object
  dto.SellPigsRequest:
    properties:
      pen_id:
        description: 猪栏ID
        type: integer
      quantity:
        description: 卖出猪只数量
        minimum: 1
        type: integer
      remarks:
        description: 备注
        type: string
      total_price:
        description: 总价
        minimum: 0
        type: number
      trade_date:
        description: 交易日期
        type: string
      trader_name:
        description: 交易方名称
        type: string
      unit_price:
        description: 单价
        minimum: 0
        type: number
    required:
    - pen_id
    - quantity
    - total_price
    - trade_date
    - trader_name
    - unit_price
    type: object
  dto.SendTestNotificationRequest:
    properties:
      type:
        allOf:
        - $ref: '#/definitions/models.NotifierType'
        description: Type 指定要测试的通知渠道
    required:
    - type
    type: object
  dto.SensorDataDTO:
    properties:
      area_controller_id:
        type: integer
      data:
        items:
          type: integer
        type: array
      device_id:
        type: integer
      sensor_type:
        $ref: '#/definitions/models.SensorType'
      time:
        type: string
    type: object
  dto.SnoozeAlarmRequest:
    properties:
      duration_minutes:
        description: 忽略时长，单位分钟
        minimum: 1
        type: integer
    required:
    - duration_minutes
    type: object
  dto.SubPlanResponse:
    properties:
      child_plan:
        $ref: '#/definitions/dto.PlanResponse'
      child_plan_id:
        example: 2
        type: integer
      execution_order:
        example: 1
        type: integer
      id:
        example: 1
        type: integer
      parent_plan_id:
        example: 1
        type: integer
    type: object
  dto.TaskDTO:
    properties:
      description:
        type: string
      id:
        type: integer
      name:
        type: string
    type: object
  dto.TaskExecutionLogDTO:
    properties:
      created_at:
        type: string
      ended_at:
        type: string
      id:
        type: integer
      output:
        type: string
      plan_execution_log_id:
        type: integer
      started_at:
        type: string
      status:
        $ref: '#/definitions/models.ExecutionStatus'
      task:
        allOf:
        - $ref: '#/definitions/dto.TaskDTO'
        description: 嵌套的任务信息
      task_id:
        type: integer
      updated_at:
        type: string
    type: object
  dto.TaskRequest:
    properties:
      description:
        example: 打开1号风扇
        type: string
      execution_order:
        example: 1
        type: integer
      name:
        example: 打开风扇
        type: string
      parameters:
        additionalProperties: true
        type: object
      type:
        allOf:
        - $ref: '#/definitions/models.TaskType'
        example: 等待
    type: object
  dto.TaskResponse:
    properties:
      description:
        example: 打开1号风扇
        type: string
      execution_order:
        example: 1
        type: integer
      id:
        example: 1
        type: integer
      name:
        example: 打开风扇
        type: string
      parameters:
        additionalProperties: true
        type: object
      plan_id:
        example: 1
        type: integer
      type:
        allOf:
        - $ref: '#/definitions/models.TaskType'
        example: 等待
    type: object
  dto.TransferPigsAcrossBatchesRequest:
    properties:
      dest_batch_id:
        description: 目标猪批次ID
        type: integer
      from_pen_id:
        description: 源猪栏ID
        type: integer
      quantity:
        description: 调栏猪只数量
        minimum: 1
        type: integer
      remarks:
        description: 备注
        type: string
      to_pen_id:
        description: 目标猪栏ID
        type: integer
    required:
    - dest_batch_id
    - from_pen_id
    - quantity
    - to_pen_id
    type: object
  dto.TransferPigsWithinBatchRequest:
    properties:
      from_pen_id:
        description: 源猪栏ID
        type: integer
      quantity:
        description: 调栏猪只数量
        minimum: 1
        type: integer
      remarks:
        description: 备注
        type: string
      to_pen_id:
        description: 目标猪栏ID
        type: integer
    required:
    - from_pen_id
    - quantity
    - to_pen_id
    type: object
  dto.UpdateAreaControllerRequest:
    properties:
      location:
        type: string
      name:
        type: string
      network_id:
        type: string
      properties:
        additionalProperties: true
        type: object
    required:
    - name
    - network_id
    type: object
  dto.UpdateAreaThresholdAlarmDTO:
    properties:
      level:
        allOf:
        - $ref: '#/definitions/models.SeverityLevel'
        description: 新的告警等级，可选
      operator:
        allOf:
        - $ref: '#/definitions/models.Operator'
        description: 新的操作符
      thresholds:
        description: 新的阈值
        type: number
    required:
    - operator
    - thresholds
    type: object
  dto.UpdateDeviceRequest:
    properties:
      area_controller_id:
        type: integer
      device_template_id:
        type: integer
      location:
        type: string
      name:
        type: string
      properties:
        additionalProperties: true
        type: object
    required:
    - area_controller_id
    - device_template_id
    - name
    type: object
  dto.UpdateDeviceTemplateRequest:
    properties:
      category:
        $ref: '#/definitions/models.DeviceCategory'
      commands:
        additionalProperties: true
        type: object
      description:
        type: string
      manufacturer:
        type: string
      name:
        type: string
      values:
        items:
          $ref: '#/definitions/models.ValueDescriptor'
        type: array
    required:
    - category
    - commands
    - name
    type: object
  dto.UpdateDeviceThresholdAlarmDTO:
    properties:
      level:
        allOf:
        - $ref: '#/definitions/models.SeverityLevel'
        description: 新的告警等级，可选
      operator:
        allOf:
        - $ref: '#/definitions/models.Operator'
        description: 新的操作符
      thresholds:
        description: 新的阈值
        type: number
    required:
    - operator
    - thresholds
    type: object
  dto.UpdatePenRequest:
    properties:
      capacity:
        type: integer
      house_id:
        type: integer
      pen_number:
        type: string
      status:
        allOf:
        - $ref: '#/definitions/models.PenStatus'
        description: 添加oneof校验
        enum:
        - 空闲
        - 使用中
        - 病猪栏
        - 康复栏
        - 清洗消毒
        - 维修中
    required:
    - capacity
    - house_id
    - pen_number
    - status
    type: object
  dto.UpdatePenStatusRequest:
    properties:
      status:
        allOf:
        - $ref: '#/definitions/models.PenStatus'
        enum:
        - 空闲
        - 使用中
        - 病猪栏
        - 康复栏
        - 清洗消毒
        - 维修中
        example: 病猪栏
    required:
    - status
    type: object
  dto.UpdatePigHouseRequest:
    properties:
      description:
        type: string
      name:
        type: string
    required:
    - name
    type: object
  dto.UpdatePlanRequest:
    properties:
      cron_expression:
        example: 0 0 6 * * *
        type: string
      description:
        example: 更新后的描述
        type: string
      execute_num:
        example: 10
        minimum: 0
        type: integer
      execution_type:
        allOf:
        - $ref: '#/definitions/models.PlanExecutionType'
        example: 自动
      name:
        example: 猪舍温度控制计划V2
        type: string
      sub_plan_ids:
        items:
          type: integer
        type: array
      tasks:
        items:
          $ref: '#/definitions/dto.TaskRequest'
        type: array
    required:
    - execution_type
    type: object
  dto.UserActionLogDTO:
    properties:
      action_type:
        type: string
      description:
        type: string
      http_method:
        type: string
      http_path:
        type: string
      id:
        type: integer
      result_details:
        type: string
      source_ip:
        type: string
      status:
        $ref: '#/definitions/models.AuditStatus'
      target_resource:
        items:
          type: integer
        type: array
      time:
        type: string
      user_id:
        type: integer
      username:
        type: string
    type: object
  dto.WeighingBatchDTO:
    properties:
      created_at:
        type: string
      description:
        type: string
      id:
        type: integer
      pig_batch_id:
        type: integer
      updated_at:
        type: string
      weighing_time:
        type: string
    type: object
  dto.WeighingRecordDTO:
    properties:
      created_at:
        type: string
      id:
        type: integer
      operator_id:
        type: integer
      pen_id:
        type: integer
      remark:
        type: string
      updated_at:
        type: string
      weighing_batch_id:
        type: integer
      weighing_time:
        type: string
      weight:
        type: number
    type: object
  models.AlarmCode:
    enum:
    - 温度阈值
    - 湿度阈值
    - 重量阈值
    - 电池电量阈值
    - 信号强度阈值
    - 设备离线
    - 区域主控离线
    type: string
    x-enum-varnames:
    - AlarmCodeTemperature
    - AlarmCodeHumidity
    - AlarmCodeWeight
    - AlarmCodeBatteryLevel
    - AlarmCodeSignalMetrics
    - AlarmCodeDeviceOffline
    - AlarmCodeAreaControllerOffline
  models.AlarmSourceType:
    enum:
    - 普通设备
    - 区域主控
    - 系统
    type: string
    x-enum-varnames:
    - AlarmSourceTypeDevice
    - AlarmSourceTypeAreaController
    - AlarmSourceTypeSystem
  models.AuditStatus:
    enum:
    - 成功
    - 失败
    type: string
    x-enum-varnames:
    - AuditStatusSuccess
    - AuditStatusFailed
  models.DeviceCategory:
    enum:
    - 执行器
    - 传感器
    type: string
    x-enum-varnames:
    - CategoryActuator
    - CategorySensor
  models.ExecutionStatus:
    enum:
    - 已开始
    - 已完成
    - 失败
    - 已取消
    - 等待中
    type: string
    x-enum-comments:
      ExecutionStatusCancelled: 执行取消
      ExecutionStatusCompleted: 执行完成
      ExecutionStatusFailed: 执行失败
      ExecutionStatusStarted: 开始执行
      ExecutionStatusWaiting: 等待执行 (用于预写日志)
    x-enum-descriptions:
    - 开始执行
    - 执行完成
    - 执行失败
    - 执行取消
    - 等待执行 (用于预写日志)
    x-enum-varnames:
    - ExecutionStatusStarted
    - ExecutionStatusCompleted
    - ExecutionStatusFailed
    - ExecutionStatusCancelled
    - ExecutionStatusWaiting
  models.LogChangeType:
    enum:
    - 死亡
    - 淘汰
    - 销售
    - 购买
    - 转入
    - 转出
    - 盘点校正
    type: string
    x-enum-varnames:
    - ChangeTypeDeath
    - ChangeTypeCull
    - ChangeTypeSale
    - ChangeTypeBuy
    - ChangeTypeTransferIn
    - ChangeTypeTransferOut
    - ChangeTypeCorrection
  models.MedicationReasonType:
    enum:
    - 预防
    - 治疗
    - 保健
    type: string
    x-enum-varnames:
    - ReasonTypePreventive
    - ReasonTypeTreatment
    - ReasonTypeHealthCare
  models.NotificationStatus:
    enum:
    - 发送成功
    - 发送失败
    - 已跳过
    type: string
    x-enum-comments:
      NotificationStatusFailed: 通知发送失败
      NotificationStatusSkipped: 通知因某些原因被跳过（例如：用户未配置联系方式）
      NotificationStatusSuccess: 通知已成功发送
    x-enum-descriptions:
    - 通知已成功发送
    - 通知发送失败
    - 通知因某些原因被跳过（例如：用户未配置联系方式）
    x-enum-varnames:
    - NotificationStatusSuccess
    - NotificationStatusFailed
    - NotificationStatusSkipped
  models.NotifierType:
    enum:
    - 邮件
    - 企业微信
    - 飞书
    - 日志
    type: string
    x-enum-varnames:
    - NotifierTypeSMTP
    - NotifierTypeWeChat
    - NotifierTypeLark
    - NotifierTypeLog
  models.Operator:
    enum:
    - <
    - <=
    - '>'
    - '>='
    - =
    - '!='
    type: string
    x-enum-varnames:
    - OperatorLessThan
    - OperatorLessThanOrEqualTo
    - OperatorGreaterThan
    - OperatorGreaterThanOrEqualTo
    - OperatorEqualTo
    - OperatorNotEqualTo
  models.PenStatus:
    enum:
    - 空闲
    - 使用中
    - 病猪栏
    - 康复栏
    - 清洗消毒
    - 维修中
    type: string
    x-enum-varnames:
    - PenStatusEmpty
    - PenStatusOccupied
    - PenStatusSickPen
    - PenStatusRecovering
    - PenStatusCleaning
    - PenStatusUnderMaint
  models.PendingCollectionStatus:
    enum:
    - 等待中
    - 已完成
    - 已超时
    type: string
    x-enum-comments:
      PendingStatusFulfilled: 已收到设备响应并成功处理
      PendingStatusPending: 请求已发送，等待设备响应
      PendingStatusTimedOut: 请求超时，未收到设备响应
    x-enum-descriptions:
    - 请求已发送，等待设备响应
    - 已收到设备响应并成功处理
    - 请求超时，未收到设备响应
    x-enum-varnames:
    - PendingStatusPending
    - PendingStatusFulfilled
    - PendingStatusTimedOut
  models.PigBatchOriginType:
    enum:
    - 自繁
    - 外购
    type: string
    x-enum-varnames:
    - OriginTypeSelfFarrowed
    - OriginTypePurchased
  models.PigBatchSickPigReasonType:
    enum:
    - 患病
    - 康复
    - 死亡
    - 淘汰
    - 转入
    - 转出
    - 其他
    type: string
    x-enum-comments:
      SickPigReasonTypeDeath: 猪只死亡
      SickPigReasonTypeEliminate: 猪只淘汰
      SickPigReasonTypeIllness: 猪只患病
      SickPigReasonTypeOther: 其他原因
      SickPigReasonTypeRecovery: 猪只康复
      SickPigReasonTypeTransferIn: 病猪转入当前批次
      SickPigReasonTypeTransferOut: 病猪转出当前批次 (例如转到其他批次或出售)
    x-enum-descriptions:
    - 猪只患病
    - 猪只康复
    - 猪只死亡
    - 猪只淘汰
    - 病猪转入当前批次
    - 病猪转出当前批次 (例如转到其他批次或出售)
    - 其他原因
    x-enum-varnames:
    - SickPigReasonTypeIllness
    - SickPigReasonTypeRecovery
    - SickPigReasonTypeDeath
    - SickPigReasonTypeEliminate
    - SickPigReasonTypeTransferIn
    - SickPigReasonTypeTransferOut
    - SickPigReasonTypeOther
  models.PigBatchSickPigTreatmentLocation:
    enum:
    - 原地治疗
    - 病猪栏治疗
    type: string
    x-enum-varnames:
    - TreatmentLocationOnSite
    - TreatmentLocationSickBay
  models.PigBatchStatus:
    enum:
    - 保育
    - 生长
    - 育肥
    - 待售
    - 已出售
    - 已归档
    type: string
    x-enum-comments:
      BatchStatusArchived: 批次结束（如全群淘汰等）
      BatchStatusFinishing: 最后的育肥阶段
      BatchStatusForSale: 达到出栏标准
      BatchStatusGrowing: 生长育肥阶段
      BatchStatusWeaning: 从断奶到保育结束
    x-enum-descriptions:
    - 从断奶到保育结束
    - 生长育肥阶段
    - 最后的育肥阶段
    - 达到出栏标准
    - ""
    - 批次结束（如全群淘汰等）
    x-enum-varnames:
    - BatchStatusWeaning
    - BatchStatusGrowing
    - BatchStatusFinishing
    - BatchStatusForSale
    - BatchStatusSold
    - BatchStatusArchived
  models.PigTransferType:
    enum:
    - 群内调栏
    - 跨群调栏
    - 销售
    - 死亡
    - 淘汰
    - 新购入
    - 产房转入
    type: string
    x-enum-comments:
      PigTransferTypeCrossBatch: 不同猪群间的调动
      PigTransferTypeCull: 猪只淘汰
      PigTransferTypeDeath: 猪只死亡
      PigTransferTypeDeliveryRoomTransfor: 产房转入
      PigTransferTypeInternal: 同一猪群内猪栏间的调动
      PigTransferTypePurchase: 新购入猪只
      PigTransferTypeSale: 猪只售出
    x-enum-descriptions:
    - 同一猪群内猪栏间的调动
    - 不同猪群间的调动
    - 猪只售出
    - 猪只死亡
    - 猪只淘汰
    - 新购入猪只
    - 产房转入
    x-enum-varnames:
    - PigTransferTypeInternal
    - PigTransferTypeCrossBatch
    - PigTransferTypeSale
    - PigTransferTypeDeath
    - PigTransferTypeCull
    - PigTransferTypePurchase
    - PigTransferTypeDeliveryRoomTransfor
  models.PlanContentType:
    enum:
    - 子计划
    - 任务
    type: string
    x-enum-comments:
      PlanContentTypeSubPlans: 计划包含子计划
      PlanContentTypeTasks: 计划包含任务
    x-enum-descriptions:
    - 计划包含子计划
    - 计划包含任务
    x-enum-varnames:
    - PlanContentTypeSubPlans
    - PlanContentTypeTasks
  models.PlanExecutionType:
    enum:
    - 自动
    - 手动
    type: string
    x-enum-comments:
      PlanExecutionTypeAutomatic: 自动执行 (包含定时和循环)
      PlanExecutionTypeManual: 手动执行
    x-enum-descriptions:
    - 自动执行 (包含定时和循环)
    - 手动执行
    x-enum-varnames:
    - PlanExecutionTypeAutomatic
    - PlanExecutionTypeManual
  models.PlanStatus:
    enum:
    - 已禁用
    - 已启用
    - 执行完毕
    - 执行失败
    type: string
    x-enum-comments:
      PlanStatusDisabled: 禁用计划
      PlanStatusEnabled: 启用计划
      PlanStatusFailed: 执行失败
      PlanStatusStopped: 执行完毕
    x-enum-descriptions:
    - 禁用计划
    - 启用计划
    - 执行完毕
    - 执行失败
    x-enum-varnames:
    - PlanStatusDisabled
    - PlanStatusEnabled
    - PlanStatusStopped
    - PlanStatusFailed
  models.PlanType:
    enum:
    - 自定义任务
    - 系统任务
    type: string
    x-enum-varnames:
    - PlanTypeCustom
    - PlanTypeSystem
  models.SensorType:
    enum:
    - 信号强度
    - 电池电量
    - 温度
    - 湿度
    - 重量
    type: string
    x-enum-comments:
      SensorTypeBatteryLevel: 电池电量
      SensorTypeHumidity: 湿度
      SensorTypeSignalMetrics: 信号强度
      SensorTypeTemperature: 温度
      SensorTypeWeight: 重量
    x-enum-descriptions:
    - 信号强度
    - 电池电量
    - 温度
    - 湿度
    - 重量
    x-enum-varnames:
    - SensorTypeSignalMetrics
    - SensorTypeBatteryLevel
    - SensorTypeTemperature
    - SensorTypeHumidity
    - SensorTypeWeight
  models.SeverityLevel:
    enum:
    - debug
    - info
    - warn
    - error
    - dpanic
    - panic
    - fatal
    type: string
    x-enum-varnames:
    - DebugLevel
    - InfoLevel
    - WarnLevel
    - ErrorLevel
    - DPanicLevel
    - PanicLevel
    - FatalLevel
  models.TaskType:
    enum:
    - 计划分析
    - 等待
    - 下料
    - 全量采集
    - 告警通知
    - 通知刷新
    - 设备阈值检查
    - 区域阈值检查
    type: string
    x-enum-comments:
      TaskPlanAnalysis: 解析Plan的Task列表并添加到待执行队列的特殊任务
      TaskTypeAlarmNotification: 告警通知任务
      TaskTypeAreaCollectorThresholdCheck: 区域阈值检查任务
      TaskTypeDeviceThresholdCheck: 设备阈值检查任务
      TaskTypeFullCollection: 新增的全量采集任务
      TaskTypeNotificationRefresh: 通知刷新任务
      TaskTypeReleaseFeedWeight: 下料口释放指定重量任务
      TaskTypeWaiting: 等待任务
    x-enum-descriptions:
    - 解析Plan的Task列表并添加到待执行队列的特殊任务
    - 等待任务
    - 下料口释放指定重量任务
    - 新增的全量采集任务
    - 告警通知任务
    - 通知刷新任务
    - 设备阈值检查任务
    - 区域阈值检查任务
    x-enum-varnames:
    - TaskPlanAnalysis
    - TaskTypeWaiting
    - TaskTypeReleaseFeedWeight
    - TaskTypeFullCollection
    - TaskTypeAlarmNotification
    - TaskTypeNotificationRefresh
    - TaskTypeDeviceThresholdCheck
    - TaskTypeAreaCollectorThresholdCheck
  models.ValueDescriptor:
    properties:
      multiplier:
        description: 乘数，用于原始数据转换
        type: number
      offset:
        description: 偏移量，用于原始数据转换
        type: number
      type:
        $ref: '#/definitions/models.SensorType'
    type: object
  repository.PlanTypeFilter:
    enum:
    - 所有任务
    - 自定义任务
    - 系统任务
    type: string
    x-enum-varnames:
    - PlanTypeFilterAll
    - PlanTypeFilterCustom
    - PlanTypeFilterSystem
  zapcore.Level:
    enum:
    - 7
    - -1
    - 0
    - 1
    - 2
    - 3
    - 4
    - 5
    - -1
    - 5
    - 6
    format: int32
    type: integer
    x-enum-varnames:
    - _numLevels
    - DebugLevel
    - InfoLevel
    - WarnLevel
    - ErrorLevel
    - DPanicLevel
    - PanicLevel
    - FatalLevel
    - _minLevel
    - _maxLevel
    - InvalidLevel
info:
  contact:
    email: divano@example.com
    name: Divano
    url: http://www.example.com
  description: 这是一个用于管理猪场设备的后端服务。
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  title: 猪场管理系统 API
  version: "1.0"
paths:
  /api/v1/alarm/threshold/{id}/cancel-snooze:
    post:
      consumes:
      - application/json
      description: 根据告警ID取消对一个阈值告警的忽略状态
      parameters:
      - description: 告警ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: 成功取消忽略告警
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 取消忽略阈值告警
      tags:
      - 告警管理
  /api/v1/alarm/threshold/{id}/snooze:
    post:
      consumes:
      - application/json
      description: 根据告警ID忽略一个活跃的阈值告警，或更新其忽略时间
      parameters:
      - description: 告警ID
        in: path
        name: id
        required: true
        type: string
      - description: 忽略告警请求体
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/dto.SnoozeAlarmRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 成功忽略告警
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 忽略阈值告警
      tags:
      - 告警管理
  /api/v1/alarm/threshold/active-alarms:
    get:
      consumes:
      - application/json
      description: 根据过滤条件和分页参数查询活跃告警列表
      parameters:
      - description: 告警触发时间范围 - 结束时间
        in: query
        name: end_time
        type: string
      - description: 按是否被忽略过滤
        in: query
        name: is_ignored
        type: boolean
      - description: 按告警严重性等级过滤
        enum:
        - debug
        - info
        - warn
        - error
        - dpanic
        - panic
        - fatal
        in: query
        name: level
        type: string
        x-enum-varnames:
        - DebugLevel
        - InfoLevel
        - WarnLevel
        - ErrorLevel
        - DPanicLevel
        - PanicLevel
        - FatalLevel
      - description: 排序字段，例如 "trigger_time DESC"
        in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - description: 按告警来源ID过滤
        in: query
        name: source_id
        type: integer
      - description: 按告警来源类型过滤
        enum:
        - 普通设备
        - 区域主控
        - 系统
        in: query
        name: source_type
        type: string
        x-enum-varnames:
        - AlarmSourceTypeDevice
        - AlarmSourceTypeAreaController
        - AlarmSourceTypeSystem
      - description: 告警触发时间范围 - 开始时间
        in: query
        name: trigger_time
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: 成功获取活跃告警列表
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListActiveAlarmResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 批量查询活跃告警
      tags:
      - 告警管理
  /api/v1/alarm/threshold/area:
    get:
      consumes:
      - application/json
      description: 根据过滤条件和分页参数查询区域阈值告警列表
      parameters:
      - description: 按区域主控ID过滤
        in: query
        name: area_controller_id
        type: integer
      - description: 按告警等级过滤
        enum:
        - debug
        - info
        - warn
        - error
        - dpanic
        - panic
        - fatal
        in: query
        name: level
        type: string
        x-enum-varnames:
        - DebugLevel
        - InfoLevel
        - WarnLevel
        - ErrorLevel
        - DPanicLevel
        - PanicLevel
        - FatalLevel
      - description: 排序字段，例如 "id DESC"
        in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - description: 按传感器类型过滤
        enum:
        - 信号强度
        - 电池电量
        - 温度
        - 湿度
        - 重量
        in: query
        name: sensor_type
        type: string
        x-enum-comments:
          SensorTypeBatteryLevel: 电池电量
          SensorTypeHumidity: 湿度
          SensorTypeSignalMetrics: 信号强度
          SensorTypeTemperature: 温度
          SensorTypeWeight: 重量
        x-enum-descriptions:
        - 信号强度
        - 电池电量
        - 温度
        - 湿度
        - 重量
        x-enum-varnames:
        - SensorTypeSignalMetrics
        - SensorTypeBatteryLevel
        - SensorTypeTemperature
        - SensorTypeHumidity
        - SensorTypeWeight
      produces:
      - application/json
      responses:
        "200":
          description: 成功获取区域阈值告警列表
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListAreaThresholdAlarmResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 批量查询区域阈值告警
      tags:
      - 告警管理
    post:
      consumes:
      - application/json
      description: 为指定的区域主控创建一个新的阈值告警规则
      parameters:
      - description: 创建区域阈值告警请求体
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/dto.CreateAreaThresholdAlarmDTO'
      produces:
      - application/json
      responses:
        "200":
          description: 成功创建区域阈值告警
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 创建区域阈值告警
      tags:
      - 告警管理
  /api/v1/alarm/threshold/area/{task_id}:
    delete:
      description: 根据任务ID删除区域阈值告警规则
      parameters:
      - description: 任务ID
        in: path
        name: task_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: 成功删除区域阈值告警
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 删除区域阈值告警
      tags:
      - 告警管理
    get:
      description: 根据任务ID获取单个区域阈值告警规则的详细信息
      parameters:
      - description: 任务ID
        in: path
        name: task_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: 成功获取区域阈值告警
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.AreaThresholdAlarmDTO'
              type: object
      security:
      - BearerAuth: []
      summary: 获取区域阈值告警
      tags:
      - 告警管理
    put:
      consumes:
      - application/json
      description: 根据任务ID更新已存在的区域阈值告警规则
      parameters:
      - description: 任务ID
        in: path
        name: task_id
        required: true
        type: integer
      - description: 更新区域阈值告警请求体
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/dto.UpdateAreaThresholdAlarmDTO'
      produces:
      - application/json
      responses:
        "200":
          description: 成功更新区域阈值告警
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 更新区域阈值告警
      tags:
      - 告警管理
  /api/v1/alarm/threshold/device:
    get:
      consumes:
      - application/json
      description: 根据过滤条件和分页参数查询设备阈值告警列表
      parameters:
      - description: 按设备ID过滤
        in: query
        name: device_id
        type: integer
      - description: 按告警等级过滤
        enum:
        - debug
        - info
        - warn
        - error
        - dpanic
        - panic
        - fatal
        in: query
        name: level
        type: string
        x-enum-varnames:
        - DebugLevel
        - InfoLevel
        - WarnLevel
        - ErrorLevel
        - DPanicLevel
        - PanicLevel
        - FatalLevel
      - description: 排序字段，例如 "id DESC"
        in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - description: 按传感器类型过滤
        enum:
        - 信号强度
        - 电池电量
        - 温度
        - 湿度
        - 重量
        in: query
        name: sensor_type
        type: string
        x-enum-comments:
          SensorTypeBatteryLevel: 电池电量
          SensorTypeHumidity: 湿度
          SensorTypeSignalMetrics: 信号强度
          SensorTypeTemperature: 温度
          SensorTypeWeight: 重量
        x-enum-descriptions:
        - 信号强度
        - 电池电量
        - 温度
        - 湿度
        - 重量
        x-enum-varnames:
        - SensorTypeSignalMetrics
        - SensorTypeBatteryLevel
        - SensorTypeTemperature
        - SensorTypeHumidity
        - SensorTypeWeight
      produces:
      - application/json
      responses:
        "200":
          description: 成功获取设备阈值告警列表
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListDeviceThresholdAlarmResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 批量查询设备阈值告警
      tags:
      - 告警管理
    post:
      consumes:
      - application/json
      description: 为单个设备创建一条新的阈值告警规则
      parameters:
      - description: 创建设备阈值告警请求体
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/dto.CreateDeviceThresholdAlarmDTO'
      produces:
      - application/json
      responses:
        "200":
          description: 成功创建设备阈值告警
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 创建设备阈值告警
      tags:
      - 告警管理
  /api/v1/alarm/threshold/device/{task_id}:
    delete:
      consumes:
      - application/json
      description: 根据任务ID删除设备阈值告警规则
      parameters:
      - description: 任务ID
        in: path
        name: task_id
        required: true
        type: integer
      - description: 删除设备阈值告警请求体
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/dto.DeleteDeviceThresholdAlarmDTO'
      produces:
      - application/json
      responses:
        "200":
          description: 成功删除设备阈值告警
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 删除设备阈值告警
      tags:
      - 告警管理
    get:
      description: 根据任务ID获取单个设备阈值告警规则的详细信息
      parameters:
      - description: 任务ID
        in: path
        name: task_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: 成功获取设备阈值告警
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.DeviceThresholdAlarmDTO'
              type: object
      security:
      - BearerAuth: []
      summary: 获取设备阈值告警
      tags:
      - 告警管理
    put:
      consumes:
      - application/json
      description: 根据任务ID更新已存在的设备阈值告警规则
      parameters:
      - description: 任务ID
        in: path
        name: task_id
        required: true
        type: integer
      - description: 更新设备阈值告警请求体
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/dto.UpdateDeviceThresholdAlarmDTO'
      produces:
      - application/json
      responses:
        "200":
          description: 成功更新设备阈值告警
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 更新设备阈值告警
      tags:
      - 告警管理
  /api/v1/alarm/threshold/historical-alarms:
    get:
      consumes:
      - application/json
      description: 根据过滤条件和分页参数查询历史告警列表
      parameters:
      - description: 按告警严重性等级过滤
        enum:
        - debug
        - info
        - warn
        - error
        - dpanic
        - panic
        - fatal
        in: query
        name: level
        type: string
        x-enum-varnames:
        - DebugLevel
        - InfoLevel
        - WarnLevel
        - ErrorLevel
        - DPanicLevel
        - PanicLevel
        - FatalLevel
      - description: 排序字段，例如 "trigger_time DESC"
        in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - description: 告警解决时间范围 - 结束时间
        in: query
        name: resolve_time_end
        type: string
      - description: 告警解决时间范围 - 开始时间
        in: query
        name: resolve_time_start
        type: string
      - description: 按告警来源ID过滤
        in: query
        name: source_id
        type: integer
      - description: 按告警来源类型过滤
        enum:
        - 普通设备
        - 区域主控
        - 系统
        in: query
        name: source_type
        type: string
        x-enum-varnames:
        - AlarmSourceTypeDevice
        - AlarmSourceTypeAreaController
        - AlarmSourceTypeSystem
      - description: 告警触发时间范围 - 结束时间
        in: query
        name: trigger_time_end
        type: string
      - description: 告警触发时间范围 - 开始时间
        in: query
        name: trigger_time_start
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: 成功获取历史告警列表
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListHistoricalAlarmResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 批量查询历史告警
      tags:
      - 告警管理
  /api/v1/area-controllers:
    get:
      description: 获取系统中所有区域主控的列表
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  items:
                    $ref: '#/definitions/dto.AreaControllerResponse'
                  type: array
              type: object
      security:
      - BearerAuth: []
      summary: 获取所有区域主控列表
      tags:
      - 区域主控管理
    post:
      consumes:
      - application/json
      description: 根据提供的信息创建一个新区域主控
      parameters:
      - description: 区域主控信息
        in: body
        name: areaController
        required: true
        schema:
          $ref: '#/definitions/dto.CreateAreaControllerRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.AreaControllerResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 创建新区域主控
      tags:
      - 区域主控管理
  /api/v1/area-controllers/{id}:
    delete:
      description: 根据ID删除一个区域主控（软删除）
      parameters:
      - description: 区域主控ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 删除区域主控
      tags:
      - 区域主控管理
    get:
      description: 根据ID获取单个区域主控的详细信息
      parameters:
      - description: 区域主控ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.AreaControllerResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取区域主控信息
      tags:
      - 区域主控管理
    put:
      consumes:
      - application/json
      description: 根据ID更新一个已存在的区域主控信息
      parameters:
      - description: 区域主控ID
        in: path
        name: id
        required: true
        type: string
      - description: 要更新的区域主控信息
        in: body
        name: areaController
        required: true
        schema:
          $ref: '#/definitions/dto.UpdateAreaControllerRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.AreaControllerResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 更新区域主控信息
      tags:
      - 区域主控管理
  /api/v1/device-templates:
    get:
      description: 获取系统中所有设备模板的列表
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  items:
                    $ref: '#/definitions/dto.DeviceTemplateResponse'
                  type: array
              type: object
      security:
      - BearerAuth: []
      summary: 获取设备模板列表
      tags:
      - 设备模板管理
    post:
      consumes:
      - application/json
      description: 根据提供的信息创建一个新设备模板
      parameters:
      - description: 设备模板信息
        in: body
        name: deviceTemplate
        required: true
        schema:
          $ref: '#/definitions/dto.CreateDeviceTemplateRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.DeviceTemplateResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 创建新设备模板
      tags:
      - 设备模板管理
  /api/v1/device-templates/{id}:
    delete:
      description: 根据设备模板ID删除一个设备模板（软删除）
      parameters:
      - description: 设备模板ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 删除设备模板
      tags:
      - 设备模板管理
    get:
      description: 根据设备模板ID获取单个设备模板的详细信息
      parameters:
      - description: 设备模板ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.DeviceTemplateResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取设备模板信息
      tags:
      - 设备模板管理
    put:
      consumes:
      - application/json
      description: 根据设备模板ID更新一个已存在的设备模板信息
      parameters:
      - description: 设备模板ID
        in: path
        name: id
        required: true
        type: string
      - description: 要更新的设备模板信息
        in: body
        name: deviceTemplate
        required: true
        schema:
          $ref: '#/definitions/dto.UpdateDeviceTemplateRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.DeviceTemplateResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 更新设备模板信息
      tags:
      - 设备模板管理
  /api/v1/devices:
    get:
      description: 获取系统中所有设备的列表
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  items:
                    $ref: '#/definitions/dto.DeviceResponse'
                  type: array
              type: object
      security:
      - BearerAuth: []
      summary: 获取设备列表
      tags:
      - 设备管理
    post:
      consumes:
      - application/json
      description: 根据提供的信息创建一个新设备
      parameters:
      - description: 设备信息
        in: body
        name: device
        required: true
        schema:
          $ref: '#/definitions/dto.CreateDeviceRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.DeviceResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 创建新设备
      tags:
      - 设备管理
  /api/v1/devices/{id}:
    delete:
      description: 根据设备ID删除一个设备（软删除）
      parameters:
      - description: 设备ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 删除设备
      tags:
      - 设备管理
    get:
      description: 根据设备ID获取单个设备的详细信息
      parameters:
      - description: 设备ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.DeviceResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取设备信息
      tags:
      - 设备管理
    put:
      consumes:
      - application/json
      description: 根据设备ID更新一个已存在的设备信息
      parameters:
      - description: 设备ID
        in: path
        name: id
        required: true
        type: string
      - description: 要更新的设备信息
        in: body
        name: device
        required: true
        schema:
          $ref: '#/definitions/dto.UpdateDeviceRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.DeviceResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 更新设备信息
      tags:
      - 设备管理
  /api/v1/devices/manual-control/{id}:
    post:
      consumes:
      - application/json
      description: 根据设备ID和指定的动作（开启或关闭）来手动控制设备
      parameters:
      - description: 设备ID
        in: path
        name: id
        required: true
        type: string
      - description: 手动控制指令
        in: body
        name: manualControl
        required: true
        schema:
          $ref: '#/definitions/dto.ManualControlDeviceRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 手动控制设备
      tags:
      - 设备管理
  /api/v1/monitor/device-command-logs:
    get:
      description: 根据提供的过滤条件，分页获取设备命令日志
      parameters:
      - in: query
        name: device_id
        type: integer
      - in: query
        name: end_time
        type: string
      - in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: received_success
        type: boolean
      - in: query
        name: start_time
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListDeviceCommandLogResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取设备命令日志列表
      tags:
      - 数据监控
  /api/v1/monitor/medication-logs:
    get:
      description: 根据提供的过滤条件，分页获取用药记录
      parameters:
      - in: query
        name: end_time
        type: string
      - in: query
        name: medication_id
        type: integer
      - in: query
        name: operator_id
        type: integer
      - in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: pig_batch_id
        type: integer
      - in: query
        name: reason
        type: string
      - in: query
        name: start_time
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListMedicationLogResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取用药记录列表
      tags:
      - 数据监控
  /api/v1/monitor/notifications:
    get:
      description: 根据提供的过滤条件，分页获取通知列表
      parameters:
      - in: query
        name: end_time
        type: string
      - enum:
        - 7
        - -1
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - -1
        - 5
        - 6
        format: int32
        in: query
        name: level
        type: integer
        x-enum-varnames:
        - _numLevels
        - DebugLevel
        - InfoLevel
        - WarnLevel
        - ErrorLevel
        - DPanicLevel
        - PanicLevel
        - FatalLevel
        - _minLevel
        - _maxLevel
        - InvalidLevel
      - enum:
        - 邮件
        - 企业微信
        - 飞书
        - 日志
        in: query
        name: notifier_type
        type: string
        x-enum-varnames:
        - NotifierTypeSMTP
        - NotifierTypeWeChat
        - NotifierTypeLark
        - NotifierTypeLog
      - in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: start_time
        type: string
      - enum:
        - 发送成功
        - 发送失败
        - 已跳过
        in: query
        name: status
        type: string
        x-enum-comments:
          NotificationStatusFailed: 通知发送失败
          NotificationStatusSkipped: 通知因某些原因被跳过（例如：用户未配置联系方式）
          NotificationStatusSuccess: 通知已成功发送
        x-enum-descriptions:
        - 通知已成功发送
        - 通知发送失败
        - 通知因某些原因被跳过（例如：用户未配置联系方式）
        x-enum-varnames:
        - NotificationStatusSuccess
        - NotificationStatusFailed
        - NotificationStatusSkipped
      - in: query
        name: user_id
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListNotificationResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 批量查询通知
      tags:
      - 数据监控
  /api/v1/monitor/pending-collections:
    get:
      description: 根据提供的过滤条件，分页获取待采集请求
      parameters:
      - in: query
        name: device_id
        type: integer
      - in: query
        name: end_time
        type: string
      - in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: start_time
        type: string
      - in: query
        name: status
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListPendingCollectionResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取待采集请求列表
      tags:
      - 数据监控
  /api/v1/monitor/pig-batch-logs:
    get:
      description: 根据提供的过滤条件，分页获取猪批次日志
      parameters:
      - in: query
        name: change_type
        type: string
      - in: query
        name: end_time
        type: string
      - in: query
        name: operator_id
        type: integer
      - in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: pig_batch_id
        type: integer
      - in: query
        name: start_time
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListPigBatchLogResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取猪批次日志列表
      tags:
      - 数据监控
  /api/v1/monitor/pig-purchases:
    get:
      description: 根据提供的过滤条件，分页获取猪只采购记录
      parameters:
      - in: query
        name: end_time
        type: string
      - in: query
        name: operator_id
        type: integer
      - in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: pig_batch_id
        type: integer
      - in: query
        name: start_time
        type: string
      - in: query
        name: supplier
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListPigPurchaseResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取猪只采购记录列表
      tags:
      - 数据监控
  /api/v1/monitor/pig-sales:
    get:
      description: 根据提供的过滤条件，分页获取猪只售卖记录
      parameters:
      - in: query
        name: buyer
        type: string
      - in: query
        name: end_time
        type: string
      - in: query
        name: operator_id
        type: integer
      - in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: pig_batch_id
        type: integer
      - in: query
        name: start_time
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListPigSaleResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取猪只售卖记录列表
      tags:
      - 数据监控
  /api/v1/monitor/pig-sick-logs:
    get:
      description: 根据提供的过滤条件，分页获取病猪日志
      parameters:
      - in: query
        name: end_time
        type: string
      - in: query
        name: operator_id
        type: integer
      - in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: pen_id
        type: integer
      - in: query
        name: pig_batch_id
        type: integer
      - in: query
        name: reason
        type: string
      - in: query
        name: start_time
        type: string
      - in: query
        name: treatment_location
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListPigSickLogResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取病猪日志列表
      tags:
      - 数据监控
  /api/v1/monitor/pig-transfer-logs:
    get:
      description: 根据提供的过滤条件，分页获取猪只迁移日志
      parameters:
      - in: query
        name: correlation_id
        type: string
      - in: query
        name: end_time
        type: string
      - in: query
        name: operator_id
        type: integer
      - in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: pen_id
        type: integer
      - in: query
        name: pig_batch_id
        type: integer
      - in: query
        name: start_time
        type: string
      - in: query
        name: transfer_type
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListPigTransferLogResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取猪只迁移日志列表
      tags:
      - 数据监控
  /api/v1/monitor/plan-execution-logs:
    get:
      description: 根据提供的过滤条件，分页获取计划执行日志
      parameters:
      - in: query
        name: end_time
        type: string
      - in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: plan_id
        type: integer
      - in: query
        name: start_time
        type: string
      - in: query
        name: status
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListPlanExecutionLogResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取计划执行日志列表
      tags:
      - 数据监控
  /api/v1/monitor/sensor-data:
    get:
      description: 根据提供的过滤条件，分页获取传感器数据
      parameters:
      - in: query
        name: device_id
        type: integer
      - in: query
        name: end_time
        type: string
      - in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: sensor_type
        type: string
      - in: query
        name: start_time
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListSensorDataResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取传感器数据列表
      tags:
      - 数据监控
  /api/v1/monitor/task-execution-logs:
    get:
      description: 根据提供的过滤条件，分页获取任务执行日志
      parameters:
      - in: query
        name: end_time
        type: string
      - in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: plan_execution_log_id
        type: integer
      - in: query
        name: start_time
        type: string
      - in: query
        name: status
        type: string
      - in: query
        name: task_id
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListTaskExecutionLogResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取任务执行日志列表
      tags:
      - 数据监控
  /api/v1/monitor/user-action-logs:
    get:
      description: 根据提供的过滤条件，分页获取用户操作日志
      parameters:
      - in: query
        name: action_type
        type: string
      - in: query
        name: end_time
        type: string
      - in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: start_time
        type: string
      - in: query
        name: status
        type: string
      - in: query
        name: user_id
        type: integer
      - in: query
        name: username
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListUserActionLogResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取用户操作日志列表
      tags:
      - 数据监控
  /api/v1/monitor/weighing-batches:
    get:
      description: 根据提供的过滤条件，分页获取批次称重记录
      parameters:
      - in: query
        name: end_time
        type: string
      - in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: pig_batch_id
        type: integer
      - in: query
        name: start_time
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListWeighingBatchResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取批次称重记录列表
      tags:
      - 数据监控
  /api/v1/monitor/weighing-records:
    get:
      description: 根据提供的过滤条件，分页获取单次称重记录
      parameters:
      - in: query
        name: end_time
        type: string
      - in: query
        name: operator_id
        type: integer
      - in: query
        name: order_by
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: pen_id
        type: integer
      - in: query
        name: start_time
        type: string
      - in: query
        name: weighing_batch_id
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListWeighingRecordResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取单次称重记录列表
      tags:
      - 数据监控
  /api/v1/pens:
    get:
      description: 获取所有猪栏的列表
      produces:
      - application/json
      responses:
        "200":
          description: 获取成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  items:
                    $ref: '#/definitions/dto.PenResponse'
                  type: array
              type: object
      security:
      - BearerAuth: []
      summary: 获取猪栏列表
      tags:
      - 猪场管理
    post:
      consumes:
      - application/json
      description: 创建一个新的猪栏
      parameters:
      - description: 猪栏信息
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.CreatePenRequest'
      produces:
      - application/json
      responses:
        "201":
          description: 创建成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.PenResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 创建猪栏
      tags:
      - 猪场管理
  /api/v1/pens/{id}:
    delete:
      description: 根据ID删除一个猪栏
      parameters:
      - description: 猪栏ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: 删除成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 删除猪栏
      tags:
      - 猪场管理
    get:
      description: 根据ID获取单个猪栏信息
      parameters:
      - description: 猪栏ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: 获取成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.PenResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取单个猪栏
      tags:
      - 猪场管理
    put:
      consumes:
      - application/json
      description: 更新一个已存在的猪栏信息
      parameters:
      - description: 猪栏ID
        in: path
        name: id
        required: true
        type: integer
      - description: 猪栏信息
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.UpdatePenRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 更新成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.PenResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 更新猪栏
      tags:
      - 猪场管理
  /api/v1/pens/{id}/status:
    put:
      consumes:
      - application/json
      description: 更新指定猪栏的当前状态
      parameters:
      - description: 猪栏ID
        in: path
        name: id
        required: true
        type: integer
      - description: 新的猪栏状态
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.UpdatePenStatusRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 更新成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.PenResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 更新猪栏状态
      tags:
      - 猪场管理
  /api/v1/pig-batches:
    get:
      description: 获取所有猪批次的列表，支持按活跃状态筛选
      parameters:
      - description: 是否活跃 (true/false)
        in: query
        name: is_active
        type: boolean
      produces:
      - application/json
      responses:
        "200":
          description: 获取成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  items:
                    $ref: '#/definitions/dto.PigBatchResponseDTO'
                  type: array
              type: object
      security:
      - BearerAuth: []
      summary: 获取猪批次列表
      tags:
      - 猪群管理
    post:
      consumes:
      - application/json
      description: 创建一个新的猪批次
      parameters:
      - description: 猪批次信息
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.PigBatchCreateDTO'
      produces:
      - application/json
      responses:
        "201":
          description: 创建成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.PigBatchResponseDTO'
              type: object
      security:
      - BearerAuth: []
      summary: 创建猪批次
      tags:
      - 猪群管理
  /api/v1/pig-batches/{id}:
    delete:
      description: 根据ID删除一个猪批次
      parameters:
      - description: 猪批次ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: 删除成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 删除猪批次
      tags:
      - 猪群管理
    get:
      description: 根据ID获取单个猪批次信息
      parameters:
      - description: 猪批次ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: 获取成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.PigBatchResponseDTO'
              type: object
      security:
      - BearerAuth: []
      summary: 获取单个猪批次
      tags:
      - 猪群管理
    put:
      consumes:
      - application/json
      description: 更新一个已存在的猪批次信息
      parameters:
      - description: 猪批次ID
        in: path
        name: id
        required: true
        type: integer
      - description: 猪批次信息
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.PigBatchUpdateDTO'
      produces:
      - application/json
      responses:
        "200":
          description: 更新成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.PigBatchResponseDTO'
              type: object
      security:
      - BearerAuth: []
      summary: 更新猪批次
      tags:
      - 猪群管理
  /api/v1/pig-batches/assign-pens/{id}:
    post:
      consumes:
      - application/json
      description: 将一个或多个空闲猪栏分配给指定的猪批次
      parameters:
      - description: 猪批次ID
        in: path
        name: id
        required: true
        type: integer
      - description: 待分配的猪栏ID列表
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.AssignEmptyPensToBatchRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 分配成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 为猪批次分配空栏
      tags:
      - 猪群管理
  /api/v1/pig-batches/buy-pigs/{id}:
    post:
      consumes:
      - application/json
      description: 记录猪批次中的猪只购买事件
      parameters:
      - description: 猪批次ID
        in: path
        name: id
        required: true
        type: integer
      - description: 买猪请求信息
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.BuyPigsRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 买猪成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 处理买猪的业务逻辑
      tags:
      - 猪群管理
  /api/v1/pig-batches/move-pigs-into-pen/{id}:
    post:
      consumes:
      - application/json
      description: 将指定数量的猪只从批次的“虚拟库存”移入一个已分配的猪栏
      parameters:
      - description: 猪批次ID
        in: path
        name: id
        required: true
        type: integer
      - description: 移入猪只请求信息 (包含目标猪栏ID、数量和备注)
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.MovePigsIntoPenRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 移入成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 将猪只从“虚拟库存”移入指定猪栏
      tags:
      - 猪群管理
  /api/v1/pig-batches/reclassify-pen/{fromBatchID}:
    post:
      consumes:
      - application/json
      description: 将一个猪栏（连同其中的猪只）从一个批次整体划拨到另一个批次
      parameters:
      - description: 源猪批次ID
        in: path
        name: fromBatchID
        required: true
        type: integer
      - description: 划拨请求信息 (包含目标批次ID、猪栏ID和备注)
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.ReclassifyPenToNewBatchRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 划拨成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 将猪栏划拨到新批次
      tags:
      - 猪群管理
  /api/v1/pig-batches/record-cull/{id}:
    post:
      consumes:
      - application/json
      description: 记录猪批次中正常猪只淘汰的数量和发生时间
      parameters:
      - description: 猪批次ID
        in: path
        name: id
        required: true
        type: integer
      - description: 记录正常猪只淘汰请求信息
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.RecordCullRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 记录成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 记录正常猪只淘汰事件
      tags:
      - 猪群管理
  /api/v1/pig-batches/record-death/{id}:
    post:
      consumes:
      - application/json
      description: 记录猪批次中正常猪只死亡的数量和发生时间
      parameters:
      - description: 猪批次ID
        in: path
        name: id
        required: true
        type: integer
      - description: 记录正常猪只死亡请求信息
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.RecordDeathRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 记录成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 记录正常猪只死亡事件
      tags:
      - 猪群管理
  /api/v1/pig-batches/record-sick-pig-cull/{id}:
    post:
      consumes:
      - application/json
      description: 记录猪批次中病猪淘汰的数量、治疗地点和发生时间
      parameters:
      - description: 猪批次ID
        in: path
        name: id
        required: true
        type: integer
      - description: 记录病猪淘汰请求信息
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.RecordSickPigCullRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 记录成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 记录病猪淘汰事件
      tags:
      - 猪群管理
  /api/v1/pig-batches/record-sick-pig-death/{id}:
    post:
      consumes:
      - application/json
      description: 记录猪批次中病猪死亡的数量、治疗地点和发生时间
      parameters:
      - description: 猪批次ID
        in: path
        name: id
        required: true
        type: integer
      - description: 记录病猪死亡请求信息
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.RecordSickPigDeathRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 记录成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 记录病猪死亡事件
      tags:
      - 猪群管理
  /api/v1/pig-batches/record-sick-pig-recovery/{id}:
    post:
      consumes:
      - application/json
      description: 记录猪批次中病猪康复的数量、治疗地点和发生时间
      parameters:
      - description: 猪批次ID
        in: path
        name: id
        required: true
        type: integer
      - description: 记录病猪康复请求信息
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.RecordSickPigRecoveryRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 记录成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 记录病猪康复事件
      tags:
      - 猪群管理
  /api/v1/pig-batches/record-sick-pigs/{id}:
    post:
      consumes:
      - application/json
      description: 记录猪批次中新增病猪的数量、治疗地点和发生时间
      parameters:
      - description: 猪批次ID
        in: path
        name: id
        required: true
        type: integer
      - description: 记录病猪请求信息
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.RecordSickPigsRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 记录成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 记录新增病猪事件
      tags:
      - 猪群管理
  /api/v1/pig-batches/remove-pen/{penID}/{batchID}:
    delete:
      description: 将一个空闲猪栏从指定的猪批次中移除
      parameters:
      - description: 猪批次ID
        in: path
        name: batchID
        required: true
        type: integer
      - description: 待移除的猪栏ID
        in: path
        name: penID
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: 移除成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 从猪批次移除空栏
      tags:
      - 猪群管理
  /api/v1/pig-batches/sell-pigs/{id}:
    post:
      consumes:
      - application/json
      description: 记录猪批次中的猪只出售事件
      parameters:
      - description: 猪批次ID
        in: path
        name: id
        required: true
        type: integer
      - description: 卖猪请求信息
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.SellPigsRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 卖猪成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 处理卖猪的业务逻辑
      tags:
      - 猪群管理
  /api/v1/pig-batches/transfer-across-batches/{sourceBatchID}:
    post:
      consumes:
      - application/json
      description: 将指定数量的猪只从一个猪群的猪栏调动到另一个猪群的猪栏
      parameters:
      - description: 源猪批次ID
        in: path
        name: sourceBatchID
        required: true
        type: integer
      - description: 跨群调栏请求信息
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.TransferPigsAcrossBatchesRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 调栏成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 跨猪群调栏
      tags:
      - 猪群管理
  /api/v1/pig-batches/transfer-within-batch/{id}:
    post:
      consumes:
      - application/json
      description: 将指定数量的猪只在同一个猪群的不同猪栏间调动
      parameters:
      - description: 猪批次ID
        in: path
        name: id
        required: true
        type: integer
      - description: 群内调栏请求信息
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.TransferPigsWithinBatchRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 调栏成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 群内调栏
      tags:
      - 猪群管理
  /api/v1/pig-houses:
    get:
      description: 获取所有猪舍的列表
      produces:
      - application/json
      responses:
        "200":
          description: 获取成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  items:
                    $ref: '#/definitions/dto.PigHouseResponse'
                  type: array
              type: object
      security:
      - BearerAuth: []
      summary: 获取猪舍列表
      tags:
      - 猪场管理
    post:
      consumes:
      - application/json
      description: 根据提供的信息创建一个新猪舍
      parameters:
      - description: 猪舍信息
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.CreatePigHouseRequest'
      produces:
      - application/json
      responses:
        "201":
          description: 创建成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.PigHouseResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 创建猪舍
      tags:
      - 猪场管理
  /api/v1/pig-houses/{id}:
    delete:
      description: 根据ID删除一个猪舍
      parameters:
      - description: 猪舍ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: 删除成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 删除猪舍
      tags:
      - 猪场管理
    get:
      description: 根据ID获取单个猪舍信息
      parameters:
      - description: 猪舍ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: 获取成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.PigHouseResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取单个猪舍
      tags:
      - 猪场管理
    put:
      consumes:
      - application/json
      description: 更新一个已存在的猪舍信息
      parameters:
      - description: 猪舍ID
        in: path
        name: id
        required: true
        type: integer
      - description: 猪舍信息
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.UpdatePigHouseRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 更新成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.PigHouseResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 更新猪舍
      tags:
      - 猪场管理
  /api/v1/plans:
    get:
      description: 获取所有计划的列表，支持按类型过滤和分页
      parameters:
      - description: 页码
        in: query
        name: page
        type: integer
      - description: 每页大小
        in: query
        name: page_size
        type: integer
      - description: 计划类型
        enum:
        - 所有任务
        - 自定义任务
        - 系统任务
        in: query
        name: plan_type
        type: string
        x-enum-varnames:
        - PlanTypeFilterAll
        - PlanTypeFilterCustom
        - PlanTypeFilterSystem
      produces:
      - application/json
      responses:
        "200":
          description: 业务码为200代表成功获取列表
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.ListPlansResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取计划列表
      tags:
      - 计划管理
    post:
      consumes:
      - application/json
      description: 创建一个新的计划，包括其基本信息和所有关联的子计划/任务。
      parameters:
      - description: 计划信息
        in: body
        name: plan
        required: true
        schema:
          $ref: '#/definitions/dto.CreatePlanRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 业务码为201代表创建成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.PlanResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 创建计划
      tags:
      - 计划管理
  /api/v1/plans/{id}:
    delete:
      description: 根据计划ID删除计划。（软删除）系统计划不允许删除。
      parameters:
      - description: 计划ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: 业务码为200代表删除成功
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 删除计划
      tags:
      - 计划管理
    get:
      description: 根据计划ID获取单个计划的详细信息。
      parameters:
      - description: 计划ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: 业务码为200代表成功获取
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.PlanResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 获取计划详情
      tags:
      - 计划管理
    put:
      consumes:
      - application/json
      description: 根据计划ID更新计划的详细信息。系统计划不允许修改。
      parameters:
      - description: 计划ID
        in: path
        name: id
        required: true
        type: integer
      - description: 更新后的计划信息
        in: body
        name: plan
        required: true
        schema:
          $ref: '#/definitions/dto.UpdatePlanRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 业务码为200代表更新成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.PlanResponse'
              type: object
      security:
      - BearerAuth: []
      summary: 更新计划
      tags:
      - 计划管理
  /api/v1/plans/{id}/start:
    post:
      description: 根据计划ID启动一个计划的执行。系统计划不允许手动启动。
      parameters:
      - description: 计划ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: 业务码为200代表成功启动计划
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 启动计划
      tags:
      - 计划管理
  /api/v1/plans/{id}/stop:
    post:
      description: 根据计划ID停止一个正在执行的计划。系统计划不能被停止。
      parameters:
      - description: 计划ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: 业务码为200代表成功停止计划
          schema:
            $ref: '#/definitions/controller.Response'
      security:
      - BearerAuth: []
      summary: 停止计划
      tags:
      - 计划管理
  /api/v1/users:
    post:
      consumes:
      - application/json
      description: 根据用户名和密码创建一个新的系统用户。
      parameters:
      - description: 用户信息
        in: body
        name: user
        required: true
        schema:
          $ref: '#/definitions/dto.CreateUserRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 业务码为201代表创建成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.CreateUserResponse'
              type: object
      summary: 创建新用户
      tags:
      - 用户管理
  /api/v1/users/{id}/notifications/test:
    post:
      consumes:
      - application/json
      description: 为指定用户发送一条特定渠道的测试消息，以验证其配置是否正确。
      parameters:
      - description: 用户ID
        in: path
        name: id
        required: true
        type: integer
      - description: 请求体
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/dto.SendTestNotificationRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 成功响应
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  type: string
              type: object
      security:
      - BearerAuth: []
      summary: 发送测试通知
      tags:
      - 用户管理
  /api/v1/users/login:
    post:
      consumes:
      - application/json
      description: 用户可以使用用户名、邮箱、手机号、微信号或飞书账号进行登录，成功后返回 JWT 令牌。
      parameters:
      - description: 登录凭证
        in: body
        name: credentials
        required: true
        schema:
          $ref: '#/definitions/dto.LoginRequest'
      produces:
      - application/json
      responses:
        "200":
          description: 业务码为200代表登录成功
          schema:
            allOf:
            - $ref: '#/definitions/controller.Response'
            - properties:
                data:
                  $ref: '#/definitions/dto.LoginResponse'
              type: object
      summary: 用户登录
      tags:
      - 用户管理
  /healthz:
    get:
      description: 检查服务进程是否运行正常，只要服务能响应就返回 200 OK。
      produces:
      - application/json
      responses:
        "200":
          description: 服务存活
          schema:
            $ref: '#/definitions/controller.Response'
      summary: 服务存活检查
      tags:
      - 健康检查
  /readyz:
    get:
      description: 检查服务是否已准备好接收流量。当前实现为只要服务能响应即代表就绪。
      produces:
      - application/json
      responses:
        "200":
          description: 服务已就绪
          schema:
            $ref: '#/definitions/controller.Response'
      summary: 服务就绪检查
      tags:
      - 健康检查
securityDefinitions:
  BearerAuth:
    in: header
    name: Authorization
    type: apiKey
swagger: "2.0"
