import "../base.api"
import "./sop_stage.api"

type (
    // The response data of sop task list | SopTask列表数据
    SopTaskListResp {
        BaseDataInfo

        // SopTask list data | SopTask列表数据
        Data SopTaskListInfo `json:"data"`
    }

    // The response data of sop task record list | SopTask列表数据
    SopTaskRecordListResp {
        BaseDataInfo

        // SopTask list data | SopTask列表数据
        Data []SopTaskRecordInfo `json:"data"`
    }

    // SopTask list data | SopTask列表数据
    SopTaskRecordInfo {
        // NodeId 节点ID
        SourceType  *int `json:"sourceType,optional"`

        // NodeId 节点ID
        SourceId  *uint64 `json:"sourceId,optional"`

        // 节点名称
        Name  *string `json:"name,optional"`

        // 消息总数
        TotalCount *int64 `json:"totalCount,optional"`

        // 成功数
        SuccessCount *int64 `json:"successCount,optional"`

        // 失败数
        FailureCount *int64 `json:"failureCount,optional"`

        // 成功率
        SuccessRate *int64 `json:"successRate,optional"`
    }

    // SopTask list data | SopTask列表数据
    SopTaskListInfo {
        BaseListInfo

        // The API list data | SopTask列表数据
        Data  []SopTaskInfo  `json:"data"`
    }

    // Get sop task list request params | SopTask列表请求参数
    SopTaskListReq {
        PageInfo

        // SOP 任务名称 
        Name  *string `json:"name,optional"`

        // 创建者 id 
        CreatorId  *string `json:"creatorId,optional"`
    }

    // SopTask information response | SopTask信息返回体
    SopTaskInfoResp {
        BaseDataInfo

        // SopTask information | SopTask数据
        Data SopTaskInfo `json:"data"`
    }

    // SopTask create response | SopTask创建回体
    SopTaskCreateResp {
        BaseDataInfo

        // SopTask id | SopTask id
        Data uint64 `json:"data"`
    }
)

@server(
    jwt: Auth
    group: sop_task
    middleware: Authority
)

service Wechat {
    // Create sop task information | 创建SopTask
    @handler createSopTask
    post /sop_task/create (SopTaskInfo) returns (SopTaskCreateResp)

    // Update sop task information | 更新SopTask
    @handler updateSopTask
    post /sop_task/update (SopTaskInfo) returns (BaseMsgResp)

    // Delete sop task information | 删除SopTask信息
    @handler deleteSopTask
    post /sop_task/delete (IDsReq) returns (BaseMsgResp)

    // Get sop task list | 获取SopTask列表
    @handler getSopTaskList
    post /sop_task/list (SopTaskListReq) returns (SopTaskListResp)

    // Get sop task record list | 获取SopTask列表
    @handler getSopTaskRecordList
    post /sop_task/record_list (IDReq) returns (SopTaskRecordListResp)

    // Get sop task by ID | 通过ID获取SopTask
    @handler getSopTaskById
    post /sop_task (IDReq) returns (SopTaskInfoResp)

    // Get sop task by ID | 通过ID获取SopTask详情
    @handler getSopTaskDetail
    post /sop_task/detail (IDReq) returns (SopTaskInfoResp)

    // Publish sop task | 发布 SopTask
    @handler publishSopTask
    post /sop_task/publish (IDReq) returns (BaseMsgResp)

    // task start | SopTask 开始
    @handler sopTaskStart
    post /sop_task/start (IDReq) returns (BaseMsgResp)

    // task stop | SopTask 停止
    @handler sopTaskStop
    post /sop_task/stop (IDReq) returns (BaseMsgResp)
}