syntax = "proto3";
option go_package = "../protogo";

/**  任务信息相关的接口  **/
// 前端请求：任务预报
// tableId: Task_Forecast
message ReqTaskForecast{
  repeated int32 satellite = 1;
  int32 site = 2; // site id
  double slice = 3;  // 预报间隔:slice (1.00 ),
  double minEleAngle = 4; // 最低仰角:minEleAngle (5),
  string start = 5;
  string end = 6;
  TaskGrade grade = 7; // 如果是3，则为紧急任务，紧急任务的状态为1
  int32 uid = 8; // 当前登录的用户id
}

// 前端请求：任务列表
// tableId: Task_List
message ReqTaskList{
  repeated TaskStatus status = 1;  // 1-编排列表（未下达）; 2,3,4,10-库存任务: 已下达、已完成
  string codeSearch = 2; // 卫星编号模糊查询
  string noSearch = 3; // 任务编号模糊查询
  TaskGrade grade = 4;  // 可选；紧急任务查询时必填
  string start = 5;
  string end = 6;
}

// 任务状态
enum TaskStatus{
  StatusInit = 0; // 未编排0，
  StatusUndo = 1; //未下达（编排中）1、
  StatusWaiting = 2; //已下达（等待执行）2、
  StatusDoing = 3;  // 执行中3，
  StatusDone = 4; //已执行4、
  StatusFailed = 10; // 执行失败10
}
// 任务等级
enum TaskGrade{
  GradeNone = 0;
  GradeNormal = 1; //普通
  GradeImportant = 2; //重要
  GradeUrgent = 3;  // 必控
}

// 后端返回：任务列表
// tableId: Task_Forecast/Task_List
message RetTaskElement{
  int32 id = 1;
  string no = 2; // 编号
  string sId = 3; // 卫星id
  string sNorad = 4;
  string sName = 5; // 卫星名称
  int32 circle = 6;
  string startDt = 7;
  string endDt = 8;
  int32 duration = 9; // 持续时长s
  TaskStatus status = 10;
  double startAziAngle = 11; // 起始方位
  double endAziAngle = 12; // 结束方位角
  double startEleAngle = 13; // 初始仰角
  double maxEleAngle = 14; // 最大仰角
  double minDist = 15; // 最近
  double maxDist = 16; // 最远
  bool conflict = 17; // 是否冲突
  bool shortage = 18; // 是否不足3分钟
  TaskGrade grade = 19; //等级
  int32 siteId = 20; //站点id
  string siteName = 21; //站点name
}

// 前端请求：任务删除
// tableId: Task_Del
message ReqTaskDel{
  repeated int32 id = 1;
  int32 uid = 2; // 当前登录的用户id
}

// 前端请求：任务俯仰方位数据
// tableId: Task_Detail_Dat
message ReqTaskDetailDat{
  int32 id = 1;
}
// 后端返回：任务俯仰方位数据
// tableId: Task_Detail_Dat
message RetTaskDat{
  string date = 1;
  string time = 2;
  string aziAngle = 3; // 方位角
  string eleAngle = 4;
}

// 前端请求：任务星下点数据
// tableId: Task_Detail_Point
message ReqTaskDetailPoint{
  int32 id = 1;
}
// 后端返回：任务星下点数据
// tableId: Task_Detail_Point
message RetTaskPoint{
  string date = 1;  // 年月日
  string time = 2;  // 时分秒
  string x = 3; // x坐标
  string y = 4; // y坐标
  string z = 5; // z坐标
  string lat = 6; // 经度
  string lon = 7; // 纬度
  string alt = 8; // 高度
}

// 前端请求：变更任务状态，下达任务、加入编排、修改等级
// tableId: Task_Update
message ReqTaskUpdate{
  repeated int32 id = 1;
  int32 uid = 2; // 当前登录的用户id
  TaskStatus status = 3;  // 修改状态只有：加入编排0-1、下达1-2、取消下达2-1
  TaskGrade grade = 4; // 等级1,2,3
}