2026-03-13 20:40:20 +08:00
|
|
|
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
|
|
|
|
// versions:
|
|
|
|
|
|
// protoc-gen-go v1.36.11
|
2026-05-12 01:28:18 +08:00
|
|
|
|
// protoc v7.34.1
|
2026-03-13 20:40:20 +08:00
|
|
|
|
// source: proto/runner/runner.proto
|
|
|
|
|
|
|
|
|
|
|
|
package runner
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
|
|
|
|
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
|
|
|
|
|
reflect "reflect"
|
|
|
|
|
|
sync "sync"
|
|
|
|
|
|
unsafe "unsafe"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
|
// Verify that this generated code is sufficiently up-to-date.
|
|
|
|
|
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
|
|
|
|
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
|
|
|
|
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// TaskType 任务类型枚举
|
|
|
|
|
|
type TaskType int32
|
|
|
|
|
|
|
|
|
|
|
|
const (
|
2026-05-31 21:29:45 +08:00
|
|
|
|
TaskType_TASK_TYPE_UNKNOWN TaskType = 0 // 未知类型
|
|
|
|
|
|
TaskType_TASK_TYPE_LOGIN TaskType = 1 // 登录验证
|
|
|
|
|
|
TaskType_TASK_TYPE_GET_SCHEDULE TaskType = 2 // 获取课表
|
|
|
|
|
|
TaskType_TASK_TYPE_GET_GRADES TaskType = 3 // 获取成绩
|
|
|
|
|
|
TaskType_TASK_TYPE_GET_EXAMS TaskType = 4 // 获取考试安排
|
|
|
|
|
|
TaskType_TASK_TYPE_GET_USER_INFO TaskType = 5 // 获取用户信息
|
|
|
|
|
|
TaskType_TASK_TYPE_GET_EMPTY_CLASSROOM TaskType = 6 // 获取空教室
|
2026-03-13 20:40:20 +08:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// Enum value maps for TaskType.
|
|
|
|
|
|
var (
|
|
|
|
|
|
TaskType_name = map[int32]string{
|
|
|
|
|
|
0: "TASK_TYPE_UNKNOWN",
|
|
|
|
|
|
1: "TASK_TYPE_LOGIN",
|
|
|
|
|
|
2: "TASK_TYPE_GET_SCHEDULE",
|
|
|
|
|
|
3: "TASK_TYPE_GET_GRADES",
|
|
|
|
|
|
4: "TASK_TYPE_GET_EXAMS",
|
|
|
|
|
|
5: "TASK_TYPE_GET_USER_INFO",
|
2026-05-31 21:29:45 +08:00
|
|
|
|
6: "TASK_TYPE_GET_EMPTY_CLASSROOM",
|
2026-03-13 20:40:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
TaskType_value = map[string]int32{
|
2026-05-31 21:29:45 +08:00
|
|
|
|
"TASK_TYPE_UNKNOWN": 0,
|
|
|
|
|
|
"TASK_TYPE_LOGIN": 1,
|
|
|
|
|
|
"TASK_TYPE_GET_SCHEDULE": 2,
|
|
|
|
|
|
"TASK_TYPE_GET_GRADES": 3,
|
|
|
|
|
|
"TASK_TYPE_GET_EXAMS": 4,
|
|
|
|
|
|
"TASK_TYPE_GET_USER_INFO": 5,
|
|
|
|
|
|
"TASK_TYPE_GET_EMPTY_CLASSROOM": 6,
|
2026-03-13 20:40:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
func (x TaskType) Enum() *TaskType {
|
|
|
|
|
|
p := new(TaskType)
|
|
|
|
|
|
*p = x
|
|
|
|
|
|
return p
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x TaskType) String() string {
|
|
|
|
|
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (TaskType) Descriptor() protoreflect.EnumDescriptor {
|
|
|
|
|
|
return file_proto_runner_runner_proto_enumTypes[0].Descriptor()
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (TaskType) Type() protoreflect.EnumType {
|
|
|
|
|
|
return &file_proto_runner_runner_proto_enumTypes[0]
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x TaskType) Number() protoreflect.EnumNumber {
|
|
|
|
|
|
return protoreflect.EnumNumber(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use TaskType.Descriptor instead.
|
|
|
|
|
|
func (TaskType) EnumDescriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{0}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// TaskStatus 任务状态枚举
|
|
|
|
|
|
type TaskStatus int32
|
|
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
|
TaskStatus_TASK_STATUS_UNKNOWN TaskStatus = 0 // 未知状态
|
|
|
|
|
|
TaskStatus_TASK_STATUS_SUCCESS TaskStatus = 1 // 成功
|
|
|
|
|
|
TaskStatus_TASK_STATUS_FAILED TaskStatus = 2 // 失败
|
|
|
|
|
|
TaskStatus_TASK_STATUS_TIMEOUT TaskStatus = 3 // 超时
|
|
|
|
|
|
TaskStatus_TASK_STATUS_CANCELLED TaskStatus = 4 // 已取消
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// Enum value maps for TaskStatus.
|
|
|
|
|
|
var (
|
|
|
|
|
|
TaskStatus_name = map[int32]string{
|
|
|
|
|
|
0: "TASK_STATUS_UNKNOWN",
|
|
|
|
|
|
1: "TASK_STATUS_SUCCESS",
|
|
|
|
|
|
2: "TASK_STATUS_FAILED",
|
|
|
|
|
|
3: "TASK_STATUS_TIMEOUT",
|
|
|
|
|
|
4: "TASK_STATUS_CANCELLED",
|
|
|
|
|
|
}
|
|
|
|
|
|
TaskStatus_value = map[string]int32{
|
|
|
|
|
|
"TASK_STATUS_UNKNOWN": 0,
|
|
|
|
|
|
"TASK_STATUS_SUCCESS": 1,
|
|
|
|
|
|
"TASK_STATUS_FAILED": 2,
|
|
|
|
|
|
"TASK_STATUS_TIMEOUT": 3,
|
|
|
|
|
|
"TASK_STATUS_CANCELLED": 4,
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
func (x TaskStatus) Enum() *TaskStatus {
|
|
|
|
|
|
p := new(TaskStatus)
|
|
|
|
|
|
*p = x
|
|
|
|
|
|
return p
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x TaskStatus) String() string {
|
|
|
|
|
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (TaskStatus) Descriptor() protoreflect.EnumDescriptor {
|
|
|
|
|
|
return file_proto_runner_runner_proto_enumTypes[1].Descriptor()
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (TaskStatus) Type() protoreflect.EnumType {
|
|
|
|
|
|
return &file_proto_runner_runner_proto_enumTypes[1]
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x TaskStatus) Number() protoreflect.EnumNumber {
|
|
|
|
|
|
return protoreflect.EnumNumber(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use TaskStatus.Descriptor instead.
|
|
|
|
|
|
func (TaskStatus) EnumDescriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{1}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// StreamMessage 双向流消息包装
|
|
|
|
|
|
type StreamMessage struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
// Types that are valid to be assigned to Message:
|
|
|
|
|
|
//
|
|
|
|
|
|
// *StreamMessage_Register
|
|
|
|
|
|
// *StreamMessage_RegisterResponse
|
|
|
|
|
|
// *StreamMessage_Heartbeat
|
|
|
|
|
|
// *StreamMessage_HeartbeatAck
|
|
|
|
|
|
// *StreamMessage_Task
|
|
|
|
|
|
// *StreamMessage_Result
|
|
|
|
|
|
// *StreamMessage_TaskCancel
|
|
|
|
|
|
Message isStreamMessage_Message `protobuf_oneof:"message"`
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *StreamMessage) Reset() {
|
|
|
|
|
|
*x = StreamMessage{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[0]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *StreamMessage) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*StreamMessage) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *StreamMessage) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[0]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use StreamMessage.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*StreamMessage) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{0}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *StreamMessage) GetMessage() isStreamMessage_Message {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Message
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *StreamMessage) GetRegister() *RegisterRequest {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
if x, ok := x.Message.(*StreamMessage_Register); ok {
|
|
|
|
|
|
return x.Register
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *StreamMessage) GetRegisterResponse() *RegisterResponse {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
if x, ok := x.Message.(*StreamMessage_RegisterResponse); ok {
|
|
|
|
|
|
return x.RegisterResponse
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *StreamMessage) GetHeartbeat() *Heartbeat {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
if x, ok := x.Message.(*StreamMessage_Heartbeat); ok {
|
|
|
|
|
|
return x.Heartbeat
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *StreamMessage) GetHeartbeatAck() *HeartbeatAck {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
if x, ok := x.Message.(*StreamMessage_HeartbeatAck); ok {
|
|
|
|
|
|
return x.HeartbeatAck
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *StreamMessage) GetTask() *Task {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
if x, ok := x.Message.(*StreamMessage_Task); ok {
|
|
|
|
|
|
return x.Task
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *StreamMessage) GetResult() *TaskResult {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
if x, ok := x.Message.(*StreamMessage_Result); ok {
|
|
|
|
|
|
return x.Result
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *StreamMessage) GetTaskCancel() *TaskCancel {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
if x, ok := x.Message.(*StreamMessage_TaskCancel); ok {
|
|
|
|
|
|
return x.TaskCancel
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type isStreamMessage_Message interface {
|
|
|
|
|
|
isStreamMessage_Message()
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type StreamMessage_Register struct {
|
|
|
|
|
|
Register *RegisterRequest `protobuf:"bytes,1,opt,name=register,proto3,oneof"` // Runner 注册请求
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type StreamMessage_RegisterResponse struct {
|
|
|
|
|
|
RegisterResponse *RegisterResponse `protobuf:"bytes,2,opt,name=register_response,json=registerResponse,proto3,oneof"` // 注册响应
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type StreamMessage_Heartbeat struct {
|
|
|
|
|
|
Heartbeat *Heartbeat `protobuf:"bytes,3,opt,name=heartbeat,proto3,oneof"` // 心跳请求
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type StreamMessage_HeartbeatAck struct {
|
|
|
|
|
|
HeartbeatAck *HeartbeatAck `protobuf:"bytes,4,opt,name=heartbeat_ack,json=heartbeatAck,proto3,oneof"` // 心跳响应
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type StreamMessage_Task struct {
|
|
|
|
|
|
Task *Task `protobuf:"bytes,5,opt,name=task,proto3,oneof"` // 下发的任务
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type StreamMessage_Result struct {
|
|
|
|
|
|
Result *TaskResult `protobuf:"bytes,6,opt,name=result,proto3,oneof"` // 任务结果
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type StreamMessage_TaskCancel struct {
|
|
|
|
|
|
TaskCancel *TaskCancel `protobuf:"bytes,7,opt,name=task_cancel,json=taskCancel,proto3,oneof"` // 取消任务
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*StreamMessage_Register) isStreamMessage_Message() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (*StreamMessage_RegisterResponse) isStreamMessage_Message() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (*StreamMessage_Heartbeat) isStreamMessage_Message() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (*StreamMessage_HeartbeatAck) isStreamMessage_Message() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (*StreamMessage_Task) isStreamMessage_Message() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (*StreamMessage_Result) isStreamMessage_Message() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (*StreamMessage_TaskCancel) isStreamMessage_Message() {}
|
|
|
|
|
|
|
|
|
|
|
|
// RegisterRequest Runner 注册请求
|
|
|
|
|
|
type RegisterRequest struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
RunnerId string `protobuf:"bytes,1,opt,name=runner_id,json=runnerId,proto3" json:"runner_id,omitempty"` // Runner 唯一标识 (UUID)
|
|
|
|
|
|
Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // Runner 版本号
|
|
|
|
|
|
Capabilities map[string]string `protobuf:"bytes,3,rep,name=capabilities,proto3" json:"capabilities,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // 能力标签
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *RegisterRequest) Reset() {
|
|
|
|
|
|
*x = RegisterRequest{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[1]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *RegisterRequest) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*RegisterRequest) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *RegisterRequest) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[1]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use RegisterRequest.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*RegisterRequest) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{1}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *RegisterRequest) GetRunnerId() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.RunnerId
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *RegisterRequest) GetVersion() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Version
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *RegisterRequest) GetCapabilities() map[string]string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Capabilities
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// RegisterResponse 注册响应
|
|
|
|
|
|
type RegisterResponse struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` // 是否成功
|
|
|
|
|
|
SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // 会话ID,用于标识本次连接
|
|
|
|
|
|
Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` // 消息说明
|
|
|
|
|
|
HeartbeatInterval int32 `protobuf:"varint,4,opt,name=heartbeat_interval,json=heartbeatInterval,proto3" json:"heartbeat_interval,omitempty"` // 心跳间隔 (秒)
|
|
|
|
|
|
TaskTimeout int32 `protobuf:"varint,5,opt,name=task_timeout,json=taskTimeout,proto3" json:"task_timeout,omitempty"` // 默认任务超时时间 (秒)
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *RegisterResponse) Reset() {
|
|
|
|
|
|
*x = RegisterResponse{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[2]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *RegisterResponse) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*RegisterResponse) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *RegisterResponse) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[2]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use RegisterResponse.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*RegisterResponse) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{2}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *RegisterResponse) GetSuccess() bool {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Success
|
|
|
|
|
|
}
|
|
|
|
|
|
return false
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *RegisterResponse) GetSessionId() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.SessionId
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *RegisterResponse) GetMessage() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Message
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *RegisterResponse) GetHeartbeatInterval() int32 {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.HeartbeatInterval
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *RegisterResponse) GetTaskTimeout() int32 {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.TaskTimeout
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Heartbeat 心跳请求
|
|
|
|
|
|
type Heartbeat struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // 客户端时间戳 (毫秒)
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Heartbeat) Reset() {
|
|
|
|
|
|
*x = Heartbeat{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[3]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Heartbeat) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*Heartbeat) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Heartbeat) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[3]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use Heartbeat.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*Heartbeat) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{3}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Heartbeat) GetTimestamp() int64 {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Timestamp
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// HeartbeatAck 心跳响应
|
|
|
|
|
|
type HeartbeatAck struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // 服务端时间戳 (毫秒)
|
|
|
|
|
|
Latency int64 `protobuf:"varint,2,opt,name=latency,proto3" json:"latency,omitempty"` // 往返延迟 (毫秒)
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *HeartbeatAck) Reset() {
|
|
|
|
|
|
*x = HeartbeatAck{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[4]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *HeartbeatAck) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*HeartbeatAck) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *HeartbeatAck) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[4]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use HeartbeatAck.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*HeartbeatAck) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{4}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *HeartbeatAck) GetTimestamp() int64 {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Timestamp
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *HeartbeatAck) GetLatency() int64 {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Latency
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Task 任务定义
|
|
|
|
|
|
type Task struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` // 任务唯一ID (UUID)
|
|
|
|
|
|
Type TaskType `protobuf:"varint,2,opt,name=type,proto3,enum=runner.TaskType" json:"type,omitempty"` // 任务类型
|
|
|
|
|
|
CreatedAt int64 `protobuf:"varint,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // 创建时间戳 (毫秒)
|
|
|
|
|
|
TimeoutSeconds int32 `protobuf:"varint,4,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` // 超时时间 (秒)
|
|
|
|
|
|
Payload []byte `protobuf:"bytes,5,opt,name=payload,proto3" json:"payload,omitempty"` // 任务载荷 (JSON 编码)
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Task) Reset() {
|
|
|
|
|
|
*x = Task{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[5]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Task) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*Task) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Task) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[5]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use Task.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*Task) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{5}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Task) GetTaskId() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.TaskId
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Task) GetType() TaskType {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Type
|
|
|
|
|
|
}
|
|
|
|
|
|
return TaskType_TASK_TYPE_UNKNOWN
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Task) GetCreatedAt() int64 {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.CreatedAt
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Task) GetTimeoutSeconds() int32 {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.TimeoutSeconds
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Task) GetPayload() []byte {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Payload
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// TaskCancel 取消任务
|
|
|
|
|
|
type TaskCancel struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` // 要取消的任务ID
|
|
|
|
|
|
Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` // 取消原因
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *TaskCancel) Reset() {
|
|
|
|
|
|
*x = TaskCancel{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[6]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *TaskCancel) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*TaskCancel) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *TaskCancel) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[6]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use TaskCancel.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*TaskCancel) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{6}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *TaskCancel) GetTaskId() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.TaskId
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *TaskCancel) GetReason() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Reason
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// TaskResult 任务结果
|
|
|
|
|
|
type TaskResult struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` // 任务ID
|
|
|
|
|
|
Status TaskStatus `protobuf:"varint,2,opt,name=status,proto3,enum=runner.TaskStatus" json:"status,omitempty"` // 执行状态
|
|
|
|
|
|
CompletedAt int64 `protobuf:"varint,3,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"` // 完成时间戳 (毫秒)
|
|
|
|
|
|
Data []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` // 结果数据 (JSON 编码)
|
|
|
|
|
|
ErrorCode string `protobuf:"bytes,5,opt,name=error_code,json=errorCode,proto3" json:"error_code,omitempty"` // 错误码
|
|
|
|
|
|
ErrorMessage string `protobuf:"bytes,6,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` // 错误消息
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *TaskResult) Reset() {
|
|
|
|
|
|
*x = TaskResult{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[7]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *TaskResult) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*TaskResult) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *TaskResult) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[7]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use TaskResult.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*TaskResult) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{7}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *TaskResult) GetTaskId() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.TaskId
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *TaskResult) GetStatus() TaskStatus {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Status
|
|
|
|
|
|
}
|
|
|
|
|
|
return TaskStatus_TASK_STATUS_UNKNOWN
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *TaskResult) GetCompletedAt() int64 {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.CompletedAt
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *TaskResult) GetData() []byte {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Data
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *TaskResult) GetErrorCode() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.ErrorCode
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *TaskResult) GetErrorMessage() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.ErrorMessage
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// LoginPayload 登录任务载荷
|
|
|
|
|
|
type LoginPayload struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` // 学号
|
|
|
|
|
|
Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` // 密码
|
|
|
|
|
|
Twfid string `protobuf:"bytes,3,opt,name=twfid,proto3" json:"twfid,omitempty"` // 初始 Cookie (可选)
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *LoginPayload) Reset() {
|
|
|
|
|
|
*x = LoginPayload{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[8]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *LoginPayload) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*LoginPayload) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *LoginPayload) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[8]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use LoginPayload.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*LoginPayload) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{8}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *LoginPayload) GetUsername() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Username
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *LoginPayload) GetPassword() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Password
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *LoginPayload) GetTwfid() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Twfid
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// GetSchedulePayload 获取课表任务载荷
|
|
|
|
|
|
type GetSchedulePayload struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` // 学号
|
|
|
|
|
|
Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` // 密码
|
|
|
|
|
|
Semester string `protobuf:"bytes,3,opt,name=semester,proto3" json:"semester,omitempty"` // 学期,如 "2025-20262"
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetSchedulePayload) Reset() {
|
|
|
|
|
|
*x = GetSchedulePayload{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[9]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetSchedulePayload) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*GetSchedulePayload) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetSchedulePayload) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[9]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use GetSchedulePayload.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*GetSchedulePayload) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{9}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetSchedulePayload) GetUsername() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Username
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetSchedulePayload) GetPassword() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Password
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetSchedulePayload) GetSemester() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Semester
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// GetGradesPayload 获取成绩任务载荷
|
|
|
|
|
|
type GetGradesPayload struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` // 学号
|
|
|
|
|
|
Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` // 密码
|
|
|
|
|
|
Semester string `protobuf:"bytes,3,opt,name=semester,proto3" json:"semester,omitempty"` // 学期 (可选,为空则获取全部)
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetGradesPayload) Reset() {
|
|
|
|
|
|
*x = GetGradesPayload{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[10]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetGradesPayload) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*GetGradesPayload) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetGradesPayload) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[10]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use GetGradesPayload.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*GetGradesPayload) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{10}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetGradesPayload) GetUsername() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Username
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetGradesPayload) GetPassword() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Password
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetGradesPayload) GetSemester() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Semester
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// GetExamsPayload 获取考试安排任务载荷
|
|
|
|
|
|
type GetExamsPayload struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` // 学号
|
|
|
|
|
|
Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` // 密码
|
|
|
|
|
|
Semester string `protobuf:"bytes,3,opt,name=semester,proto3" json:"semester,omitempty"` // 学期
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetExamsPayload) Reset() {
|
|
|
|
|
|
*x = GetExamsPayload{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[11]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetExamsPayload) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*GetExamsPayload) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetExamsPayload) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[11]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use GetExamsPayload.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*GetExamsPayload) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{11}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetExamsPayload) GetUsername() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Username
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetExamsPayload) GetPassword() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Password
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetExamsPayload) GetSemester() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Semester
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// ScheduleResultData 课表结果数据
|
|
|
|
|
|
type ScheduleResultData struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
Semester string `protobuf:"bytes,1,opt,name=semester,proto3" json:"semester,omitempty"` // 学期
|
|
|
|
|
|
StudentId string `protobuf:"bytes,2,opt,name=student_id,json=studentId,proto3" json:"student_id,omitempty"` // 学号
|
|
|
|
|
|
StudentName string `protobuf:"bytes,3,opt,name=student_name,json=studentName,proto3" json:"student_name,omitempty"` // 学生姓名
|
|
|
|
|
|
Courses []*Course `protobuf:"bytes,4,rep,name=courses,proto3" json:"courses,omitempty"` // 课程列表
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ScheduleResultData) Reset() {
|
|
|
|
|
|
*x = ScheduleResultData{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[12]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ScheduleResultData) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*ScheduleResultData) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ScheduleResultData) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[12]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use ScheduleResultData.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*ScheduleResultData) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{12}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ScheduleResultData) GetSemester() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Semester
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ScheduleResultData) GetStudentId() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.StudentId
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ScheduleResultData) GetStudentName() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.StudentName
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ScheduleResultData) GetCourses() []*Course {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Courses
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Course 课程信息
|
|
|
|
|
|
type Course struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` // 课程代码
|
|
|
|
|
|
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // 课程名称
|
|
|
|
|
|
Teacher string `protobuf:"bytes,3,opt,name=teacher,proto3" json:"teacher,omitempty"` // 授课教师
|
|
|
|
|
|
Room string `protobuf:"bytes,4,opt,name=room,proto3" json:"room,omitempty"` // 教室
|
|
|
|
|
|
Credit float32 `protobuf:"fixed32,5,opt,name=credit,proto3" json:"credit,omitempty"` // 学分
|
|
|
|
|
|
Schedule []*ScheduleTime `protobuf:"bytes,6,rep,name=schedule,proto3" json:"schedule,omitempty"` // 上课时间安排
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Course) Reset() {
|
|
|
|
|
|
*x = Course{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[13]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Course) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*Course) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Course) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[13]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use Course.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*Course) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{13}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Course) GetCode() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Code
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Course) GetName() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Name
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Course) GetTeacher() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Teacher
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Course) GetRoom() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Room
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Course) GetCredit() float32 {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Credit
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Course) GetSchedule() []*ScheduleTime {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Schedule
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// ScheduleTime 上课时间安排
|
|
|
|
|
|
type ScheduleTime struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
Day string `protobuf:"bytes,1,opt,name=day,proto3" json:"day,omitempty"` // 星期几,"0"-"6" 表示周日到周六
|
|
|
|
|
|
Sections []int32 `protobuf:"varint,2,rep,packed,name=sections,proto3" json:"sections,omitempty"` // 节次,如 [1, 2, 3]
|
|
|
|
|
|
Weeks []int32 `protobuf:"varint,3,rep,packed,name=weeks,proto3" json:"weeks,omitempty"` // 周次,如 [1, 2, 3, 4, 5]
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ScheduleTime) Reset() {
|
|
|
|
|
|
*x = ScheduleTime{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[14]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ScheduleTime) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*ScheduleTime) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ScheduleTime) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[14]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use ScheduleTime.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*ScheduleTime) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{14}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ScheduleTime) GetDay() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Day
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ScheduleTime) GetSections() []int32 {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Sections
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ScheduleTime) GetWeeks() []int32 {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Weeks
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-05-12 01:28:18 +08:00
|
|
|
|
// GpaSummary 学分绩汇总信息
|
|
|
|
|
|
type GpaSummary struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
AverageGpa string `protobuf:"bytes,1,opt,name=average_gpa,json=averageGpa,proto3" json:"average_gpa,omitempty"` // 平均学分绩
|
|
|
|
|
|
Rank string `protobuf:"bytes,2,opt,name=rank,proto3" json:"rank,omitempty"` // 专业排名
|
|
|
|
|
|
ExamTotalGpa string `protobuf:"bytes,3,opt,name=exam_total_gpa,json=examTotalGpa,proto3" json:"exam_total_gpa,omitempty"` // 考试课学分绩
|
|
|
|
|
|
ExamTotalCredits string `protobuf:"bytes,4,opt,name=exam_total_credits,json=examTotalCredits,proto3" json:"exam_total_credits,omitempty"` // 考试课学分数
|
|
|
|
|
|
FailCredits string `protobuf:"bytes,5,opt,name=fail_credits,json=failCredits,proto3" json:"fail_credits,omitempty"` // 考查课不及格学分
|
|
|
|
|
|
Semesters string `protobuf:"bytes,6,opt,name=semesters,proto3" json:"semesters,omitempty"` // 计算学期数
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GpaSummary) Reset() {
|
|
|
|
|
|
*x = GpaSummary{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[15]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GpaSummary) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*GpaSummary) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GpaSummary) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[15]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use GpaSummary.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*GpaSummary) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{15}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GpaSummary) GetAverageGpa() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.AverageGpa
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GpaSummary) GetRank() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Rank
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GpaSummary) GetExamTotalGpa() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.ExamTotalGpa
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GpaSummary) GetExamTotalCredits() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.ExamTotalCredits
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GpaSummary) GetFailCredits() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.FailCredits
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GpaSummary) GetSemesters() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Semesters
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-13 20:40:20 +08:00
|
|
|
|
// GradesResultData 成绩结果数据
|
|
|
|
|
|
type GradesResultData struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
2026-05-12 01:28:18 +08:00
|
|
|
|
Semester string `protobuf:"bytes,1,opt,name=semester,proto3" json:"semester,omitempty"` // 学期
|
|
|
|
|
|
StudentId string `protobuf:"bytes,2,opt,name=student_id,json=studentId,proto3" json:"student_id,omitempty"` // 学号
|
|
|
|
|
|
Grades []*Grade `protobuf:"bytes,3,rep,name=grades,proto3" json:"grades,omitempty"` // 成绩列表
|
|
|
|
|
|
GpaSummary *GpaSummary `protobuf:"bytes,4,opt,name=gpa_summary,json=gpaSummary,proto3" json:"gpa_summary,omitempty"` // 学分绩汇总 (可选)
|
2026-03-13 20:40:20 +08:00
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GradesResultData) Reset() {
|
|
|
|
|
|
*x = GradesResultData{}
|
2026-05-12 01:28:18 +08:00
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[16]
|
2026-03-13 20:40:20 +08:00
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GradesResultData) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*GradesResultData) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GradesResultData) ProtoReflect() protoreflect.Message {
|
2026-05-12 01:28:18 +08:00
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[16]
|
2026-03-13 20:40:20 +08:00
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use GradesResultData.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*GradesResultData) Descriptor() ([]byte, []int) {
|
2026-05-12 01:28:18 +08:00
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{16}
|
2026-03-13 20:40:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GradesResultData) GetSemester() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Semester
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GradesResultData) GetStudentId() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.StudentId
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GradesResultData) GetGrades() []*Grade {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Grades
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-05-12 01:28:18 +08:00
|
|
|
|
func (x *GradesResultData) GetGpaSummary() *GpaSummary {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.GpaSummary
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-13 20:40:20 +08:00
|
|
|
|
// Grade 成绩信息
|
|
|
|
|
|
type Grade struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
2026-05-12 01:28:18 +08:00
|
|
|
|
Term string `protobuf:"bytes,1,opt,name=term,proto3" json:"term,omitempty"` // 学期
|
|
|
|
|
|
CourseCode string `protobuf:"bytes,2,opt,name=course_code,json=courseCode,proto3" json:"course_code,omitempty"` // 课程代码
|
|
|
|
|
|
CourseName string `protobuf:"bytes,3,opt,name=course_name,json=courseName,proto3" json:"course_name,omitempty"` // 课程名称
|
|
|
|
|
|
Nature string `protobuf:"bytes,4,opt,name=nature,proto3" json:"nature,omitempty"` // 课程性质
|
|
|
|
|
|
Category string `protobuf:"bytes,5,opt,name=category,proto3" json:"category,omitempty"` // 课程类别
|
|
|
|
|
|
Credit string `protobuf:"bytes,6,opt,name=credit,proto3" json:"credit,omitempty"` // 学分
|
|
|
|
|
|
Score string `protobuf:"bytes,7,opt,name=score,proto3" json:"score,omitempty"` // 成绩 (可能是等级或分数)
|
|
|
|
|
|
GradePoint string `protobuf:"bytes,8,opt,name=grade_point,json=gradePoint,proto3" json:"grade_point,omitempty"` // 绩点
|
|
|
|
|
|
IsExam string `protobuf:"bytes,9,opt,name=is_exam,json=isExam,proto3" json:"is_exam,omitempty"` // 是否考试课
|
2026-03-13 20:40:20 +08:00
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Grade) Reset() {
|
|
|
|
|
|
*x = Grade{}
|
2026-05-12 01:28:18 +08:00
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[17]
|
2026-03-13 20:40:20 +08:00
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Grade) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*Grade) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Grade) ProtoReflect() protoreflect.Message {
|
2026-05-12 01:28:18 +08:00
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[17]
|
2026-03-13 20:40:20 +08:00
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use Grade.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*Grade) Descriptor() ([]byte, []int) {
|
2026-05-12 01:28:18 +08:00
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{17}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Grade) GetTerm() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Term
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
2026-03-13 20:40:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Grade) GetCourseCode() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.CourseCode
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Grade) GetCourseName() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.CourseName
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-05-12 01:28:18 +08:00
|
|
|
|
func (x *Grade) GetNature() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Nature
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Grade) GetCategory() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Category
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Grade) GetCredit() string {
|
2026-03-13 20:40:20 +08:00
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Credit
|
|
|
|
|
|
}
|
2026-05-12 01:28:18 +08:00
|
|
|
|
return ""
|
2026-03-13 20:40:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-05-12 01:28:18 +08:00
|
|
|
|
func (x *Grade) GetScore() string {
|
2026-03-13 20:40:20 +08:00
|
|
|
|
if x != nil {
|
2026-05-12 01:28:18 +08:00
|
|
|
|
return x.Score
|
2026-03-13 20:40:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-05-12 01:28:18 +08:00
|
|
|
|
func (x *Grade) GetGradePoint() string {
|
2026-03-13 20:40:20 +08:00
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.GradePoint
|
|
|
|
|
|
}
|
2026-05-12 01:28:18 +08:00
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Grade) GetIsExam() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.IsExam
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
2026-03-13 20:40:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// ExamsResultData 考试安排结果数据
|
|
|
|
|
|
type ExamsResultData struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
Semester string `protobuf:"bytes,1,opt,name=semester,proto3" json:"semester,omitempty"` // 学期
|
|
|
|
|
|
StudentId string `protobuf:"bytes,2,opt,name=student_id,json=studentId,proto3" json:"student_id,omitempty"` // 学号
|
|
|
|
|
|
Exams []*Exam `protobuf:"bytes,3,rep,name=exams,proto3" json:"exams,omitempty"` // 考试列表
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ExamsResultData) Reset() {
|
|
|
|
|
|
*x = ExamsResultData{}
|
2026-05-12 01:28:18 +08:00
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[18]
|
2026-03-13 20:40:20 +08:00
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ExamsResultData) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*ExamsResultData) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ExamsResultData) ProtoReflect() protoreflect.Message {
|
2026-05-12 01:28:18 +08:00
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[18]
|
2026-03-13 20:40:20 +08:00
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use ExamsResultData.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*ExamsResultData) Descriptor() ([]byte, []int) {
|
2026-05-12 01:28:18 +08:00
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{18}
|
2026-03-13 20:40:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ExamsResultData) GetSemester() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Semester
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ExamsResultData) GetStudentId() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.StudentId
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *ExamsResultData) GetExams() []*Exam {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Exams
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Exam 考试信息
|
|
|
|
|
|
type Exam struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
2026-05-12 01:28:18 +08:00
|
|
|
|
CourseName string `protobuf:"bytes,1,opt,name=course_name,json=courseName,proto3" json:"course_name,omitempty"` // 课程名称
|
|
|
|
|
|
ExamType string `protobuf:"bytes,2,opt,name=exam_type,json=examType,proto3" json:"exam_type,omitempty"` // 考试类型 (期末/期中/补考)
|
|
|
|
|
|
Date string `protobuf:"bytes,3,opt,name=date,proto3" json:"date,omitempty"` // 考试日期
|
|
|
|
|
|
Time string `protobuf:"bytes,4,opt,name=time,proto3" json:"time,omitempty"` // 考试时间
|
|
|
|
|
|
Week string `protobuf:"bytes,5,opt,name=week,proto3" json:"week,omitempty"` // 考试周次
|
|
|
|
|
|
Weekday string `protobuf:"bytes,6,opt,name=weekday,proto3" json:"weekday,omitempty"` // 星期几
|
2026-03-13 20:40:20 +08:00
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Exam) Reset() {
|
|
|
|
|
|
*x = Exam{}
|
2026-05-12 01:28:18 +08:00
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[19]
|
2026-03-13 20:40:20 +08:00
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Exam) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*Exam) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Exam) ProtoReflect() protoreflect.Message {
|
2026-05-12 01:28:18 +08:00
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[19]
|
2026-03-13 20:40:20 +08:00
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use Exam.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*Exam) Descriptor() ([]byte, []int) {
|
2026-05-12 01:28:18 +08:00
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{19}
|
2026-03-13 20:40:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Exam) GetCourseName() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.CourseName
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Exam) GetExamType() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.ExamType
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Exam) GetDate() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Date
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *Exam) GetTime() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Time
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-05-12 01:28:18 +08:00
|
|
|
|
func (x *Exam) GetWeek() string {
|
2026-03-13 20:40:20 +08:00
|
|
|
|
if x != nil {
|
2026-05-12 01:28:18 +08:00
|
|
|
|
return x.Week
|
2026-03-13 20:40:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-05-12 01:28:18 +08:00
|
|
|
|
func (x *Exam) GetWeekday() string {
|
2026-03-13 20:40:20 +08:00
|
|
|
|
if x != nil {
|
2026-05-12 01:28:18 +08:00
|
|
|
|
return x.Weekday
|
2026-03-13 20:40:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// UserInfoResultData 用户信息结果数据
|
|
|
|
|
|
type UserInfoResultData struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
StudentId string `protobuf:"bytes,1,opt,name=student_id,json=studentId,proto3" json:"student_id,omitempty"` // 学号
|
|
|
|
|
|
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // 姓名
|
|
|
|
|
|
Gender string `protobuf:"bytes,3,opt,name=gender,proto3" json:"gender,omitempty"` // 性别
|
|
|
|
|
|
College string `protobuf:"bytes,4,opt,name=college,proto3" json:"college,omitempty"` // 学院
|
|
|
|
|
|
Major string `protobuf:"bytes,5,opt,name=major,proto3" json:"major,omitempty"` // 专业
|
|
|
|
|
|
ClassName string `protobuf:"bytes,6,opt,name=class_name,json=className,proto3" json:"class_name,omitempty"` // 班级
|
|
|
|
|
|
Grade string `protobuf:"bytes,7,opt,name=grade,proto3" json:"grade,omitempty"` // 年级
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *UserInfoResultData) Reset() {
|
|
|
|
|
|
*x = UserInfoResultData{}
|
2026-05-12 01:28:18 +08:00
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[20]
|
2026-03-13 20:40:20 +08:00
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *UserInfoResultData) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*UserInfoResultData) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *UserInfoResultData) ProtoReflect() protoreflect.Message {
|
2026-05-12 01:28:18 +08:00
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[20]
|
2026-03-13 20:40:20 +08:00
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use UserInfoResultData.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*UserInfoResultData) Descriptor() ([]byte, []int) {
|
2026-05-12 01:28:18 +08:00
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{20}
|
2026-03-13 20:40:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *UserInfoResultData) GetStudentId() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.StudentId
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *UserInfoResultData) GetName() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Name
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *UserInfoResultData) GetGender() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Gender
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *UserInfoResultData) GetCollege() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.College
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *UserInfoResultData) GetMajor() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Major
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *UserInfoResultData) GetClassName() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.ClassName
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *UserInfoResultData) GetGrade() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Grade
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-05-31 21:29:45 +08:00
|
|
|
|
// GetEmptyClassroomPayload 获取空教室任务载荷
|
|
|
|
|
|
type GetEmptyClassroomPayload struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` // 学号
|
|
|
|
|
|
Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` // 密码
|
|
|
|
|
|
Semester string `protobuf:"bytes,3,opt,name=semester,proto3" json:"semester,omitempty"` // 学期
|
|
|
|
|
|
WeekStart string `protobuf:"bytes,4,opt,name=week_start,json=weekStart,proto3" json:"week_start,omitempty"` // 起始周次
|
|
|
|
|
|
WeekEnd string `protobuf:"bytes,5,opt,name=week_end,json=weekEnd,proto3" json:"week_end,omitempty"` // 结束周次
|
|
|
|
|
|
CampusCode string `protobuf:"bytes,6,opt,name=campus_code,json=campusCode,proto3" json:"campus_code,omitempty"` // 校区代码
|
|
|
|
|
|
BuildingCode string `protobuf:"bytes,7,opt,name=building_code,json=buildingCode,proto3" json:"building_code,omitempty"` // 楼号代码(可选)
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetEmptyClassroomPayload) Reset() {
|
|
|
|
|
|
*x = GetEmptyClassroomPayload{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[21]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetEmptyClassroomPayload) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*GetEmptyClassroomPayload) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetEmptyClassroomPayload) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[21]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use GetEmptyClassroomPayload.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*GetEmptyClassroomPayload) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{21}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetEmptyClassroomPayload) GetUsername() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Username
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetEmptyClassroomPayload) GetPassword() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Password
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetEmptyClassroomPayload) GetSemester() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Semester
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetEmptyClassroomPayload) GetWeekStart() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.WeekStart
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetEmptyClassroomPayload) GetWeekEnd() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.WeekEnd
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetEmptyClassroomPayload) GetCampusCode() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.CampusCode
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *GetEmptyClassroomPayload) GetBuildingCode() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.BuildingCode
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// EmptyClassroomResultData 空教室结果数据
|
|
|
|
|
|
type EmptyClassroomResultData struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
Semester string `protobuf:"bytes,1,opt,name=semester,proto3" json:"semester,omitempty"` // 学期
|
|
|
|
|
|
StudentId string `protobuf:"bytes,2,opt,name=student_id,json=studentId,proto3" json:"student_id,omitempty"` // 学号
|
|
|
|
|
|
Classrooms []*EmptyClassroomEntry `protobuf:"bytes,3,rep,name=classrooms,proto3" json:"classrooms,omitempty"` // 空教室列表
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *EmptyClassroomResultData) Reset() {
|
|
|
|
|
|
*x = EmptyClassroomResultData{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[22]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *EmptyClassroomResultData) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*EmptyClassroomResultData) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *EmptyClassroomResultData) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[22]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use EmptyClassroomResultData.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*EmptyClassroomResultData) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{22}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *EmptyClassroomResultData) GetSemester() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Semester
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *EmptyClassroomResultData) GetStudentId() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.StudentId
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *EmptyClassroomResultData) GetClassrooms() []*EmptyClassroomEntry {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Classrooms
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// EmptyClassroomEntry 空教室条目
|
|
|
|
|
|
type EmptyClassroomEntry struct {
|
|
|
|
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
|
|
|
|
Classroom string `protobuf:"bytes,1,opt,name=classroom,proto3" json:"classroom,omitempty"` // 教室名称
|
|
|
|
|
|
Weekday string `protobuf:"bytes,2,opt,name=weekday,proto3" json:"weekday,omitempty"` // 星期几
|
|
|
|
|
|
Periods string `protobuf:"bytes,3,opt,name=periods,proto3" json:"periods,omitempty"` // 可用节次
|
|
|
|
|
|
Term string `protobuf:"bytes,4,opt,name=term,proto3" json:"term,omitempty"` // 学期描述
|
|
|
|
|
|
Weeks string `protobuf:"bytes,5,opt,name=weeks,proto3" json:"weeks,omitempty"` // 周次范围
|
|
|
|
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
|
|
sizeCache protoimpl.SizeCache
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *EmptyClassroomEntry) Reset() {
|
|
|
|
|
|
*x = EmptyClassroomEntry{}
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[23]
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *EmptyClassroomEntry) String() string {
|
|
|
|
|
|
return protoimpl.X.MessageStringOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (*EmptyClassroomEntry) ProtoMessage() {}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *EmptyClassroomEntry) ProtoReflect() protoreflect.Message {
|
|
|
|
|
|
mi := &file_proto_runner_runner_proto_msgTypes[23]
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
|
|
|
|
if ms.LoadMessageInfo() == nil {
|
|
|
|
|
|
ms.StoreMessageInfo(mi)
|
|
|
|
|
|
}
|
|
|
|
|
|
return ms
|
|
|
|
|
|
}
|
|
|
|
|
|
return mi.MessageOf(x)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deprecated: Use EmptyClassroomEntry.ProtoReflect.Descriptor instead.
|
|
|
|
|
|
func (*EmptyClassroomEntry) Descriptor() ([]byte, []int) {
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescGZIP(), []int{23}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *EmptyClassroomEntry) GetClassroom() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Classroom
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *EmptyClassroomEntry) GetWeekday() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Weekday
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *EmptyClassroomEntry) GetPeriods() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Periods
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *EmptyClassroomEntry) GetTerm() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Term
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (x *EmptyClassroomEntry) GetWeeks() string {
|
|
|
|
|
|
if x != nil {
|
|
|
|
|
|
return x.Weeks
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-13 20:40:20 +08:00
|
|
|
|
var File_proto_runner_runner_proto protoreflect.FileDescriptor
|
|
|
|
|
|
|
|
|
|
|
|
const file_proto_runner_runner_proto_rawDesc = "" +
|
|
|
|
|
|
"\n" +
|
|
|
|
|
|
"\x19proto/runner/runner.proto\x12\x06runner\"\x93\x03\n" +
|
|
|
|
|
|
"\rStreamMessage\x125\n" +
|
|
|
|
|
|
"\bregister\x18\x01 \x01(\v2\x17.runner.RegisterRequestH\x00R\bregister\x12G\n" +
|
|
|
|
|
|
"\x11register_response\x18\x02 \x01(\v2\x18.runner.RegisterResponseH\x00R\x10registerResponse\x121\n" +
|
|
|
|
|
|
"\theartbeat\x18\x03 \x01(\v2\x11.runner.HeartbeatH\x00R\theartbeat\x12;\n" +
|
|
|
|
|
|
"\rheartbeat_ack\x18\x04 \x01(\v2\x14.runner.HeartbeatAckH\x00R\fheartbeatAck\x12\"\n" +
|
|
|
|
|
|
"\x04task\x18\x05 \x01(\v2\f.runner.TaskH\x00R\x04task\x12,\n" +
|
|
|
|
|
|
"\x06result\x18\x06 \x01(\v2\x12.runner.TaskResultH\x00R\x06result\x125\n" +
|
|
|
|
|
|
"\vtask_cancel\x18\a \x01(\v2\x12.runner.TaskCancelH\x00R\n" +
|
|
|
|
|
|
"taskCancelB\t\n" +
|
|
|
|
|
|
"\amessage\"\xd8\x01\n" +
|
|
|
|
|
|
"\x0fRegisterRequest\x12\x1b\n" +
|
|
|
|
|
|
"\trunner_id\x18\x01 \x01(\tR\brunnerId\x12\x18\n" +
|
|
|
|
|
|
"\aversion\x18\x02 \x01(\tR\aversion\x12M\n" +
|
|
|
|
|
|
"\fcapabilities\x18\x03 \x03(\v2).runner.RegisterRequest.CapabilitiesEntryR\fcapabilities\x1a?\n" +
|
|
|
|
|
|
"\x11CapabilitiesEntry\x12\x10\n" +
|
|
|
|
|
|
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
|
|
|
|
|
|
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xb7\x01\n" +
|
|
|
|
|
|
"\x10RegisterResponse\x12\x18\n" +
|
|
|
|
|
|
"\asuccess\x18\x01 \x01(\bR\asuccess\x12\x1d\n" +
|
|
|
|
|
|
"\n" +
|
|
|
|
|
|
"session_id\x18\x02 \x01(\tR\tsessionId\x12\x18\n" +
|
|
|
|
|
|
"\amessage\x18\x03 \x01(\tR\amessage\x12-\n" +
|
|
|
|
|
|
"\x12heartbeat_interval\x18\x04 \x01(\x05R\x11heartbeatInterval\x12!\n" +
|
|
|
|
|
|
"\ftask_timeout\x18\x05 \x01(\x05R\vtaskTimeout\")\n" +
|
|
|
|
|
|
"\tHeartbeat\x12\x1c\n" +
|
|
|
|
|
|
"\ttimestamp\x18\x01 \x01(\x03R\ttimestamp\"F\n" +
|
|
|
|
|
|
"\fHeartbeatAck\x12\x1c\n" +
|
|
|
|
|
|
"\ttimestamp\x18\x01 \x01(\x03R\ttimestamp\x12\x18\n" +
|
|
|
|
|
|
"\alatency\x18\x02 \x01(\x03R\alatency\"\xa7\x01\n" +
|
|
|
|
|
|
"\x04Task\x12\x17\n" +
|
|
|
|
|
|
"\atask_id\x18\x01 \x01(\tR\x06taskId\x12$\n" +
|
|
|
|
|
|
"\x04type\x18\x02 \x01(\x0e2\x10.runner.TaskTypeR\x04type\x12\x1d\n" +
|
|
|
|
|
|
"\n" +
|
|
|
|
|
|
"created_at\x18\x03 \x01(\x03R\tcreatedAt\x12'\n" +
|
|
|
|
|
|
"\x0ftimeout_seconds\x18\x04 \x01(\x05R\x0etimeoutSeconds\x12\x18\n" +
|
|
|
|
|
|
"\apayload\x18\x05 \x01(\fR\apayload\"=\n" +
|
|
|
|
|
|
"\n" +
|
|
|
|
|
|
"TaskCancel\x12\x17\n" +
|
|
|
|
|
|
"\atask_id\x18\x01 \x01(\tR\x06taskId\x12\x16\n" +
|
|
|
|
|
|
"\x06reason\x18\x02 \x01(\tR\x06reason\"\xcc\x01\n" +
|
|
|
|
|
|
"\n" +
|
|
|
|
|
|
"TaskResult\x12\x17\n" +
|
|
|
|
|
|
"\atask_id\x18\x01 \x01(\tR\x06taskId\x12*\n" +
|
|
|
|
|
|
"\x06status\x18\x02 \x01(\x0e2\x12.runner.TaskStatusR\x06status\x12!\n" +
|
|
|
|
|
|
"\fcompleted_at\x18\x03 \x01(\x03R\vcompletedAt\x12\x12\n" +
|
|
|
|
|
|
"\x04data\x18\x04 \x01(\fR\x04data\x12\x1d\n" +
|
|
|
|
|
|
"\n" +
|
|
|
|
|
|
"error_code\x18\x05 \x01(\tR\terrorCode\x12#\n" +
|
|
|
|
|
|
"\rerror_message\x18\x06 \x01(\tR\ferrorMessage\"\\\n" +
|
|
|
|
|
|
"\fLoginPayload\x12\x1a\n" +
|
|
|
|
|
|
"\busername\x18\x01 \x01(\tR\busername\x12\x1a\n" +
|
|
|
|
|
|
"\bpassword\x18\x02 \x01(\tR\bpassword\x12\x14\n" +
|
|
|
|
|
|
"\x05twfid\x18\x03 \x01(\tR\x05twfid\"h\n" +
|
|
|
|
|
|
"\x12GetSchedulePayload\x12\x1a\n" +
|
|
|
|
|
|
"\busername\x18\x01 \x01(\tR\busername\x12\x1a\n" +
|
|
|
|
|
|
"\bpassword\x18\x02 \x01(\tR\bpassword\x12\x1a\n" +
|
|
|
|
|
|
"\bsemester\x18\x03 \x01(\tR\bsemester\"f\n" +
|
|
|
|
|
|
"\x10GetGradesPayload\x12\x1a\n" +
|
|
|
|
|
|
"\busername\x18\x01 \x01(\tR\busername\x12\x1a\n" +
|
|
|
|
|
|
"\bpassword\x18\x02 \x01(\tR\bpassword\x12\x1a\n" +
|
|
|
|
|
|
"\bsemester\x18\x03 \x01(\tR\bsemester\"e\n" +
|
|
|
|
|
|
"\x0fGetExamsPayload\x12\x1a\n" +
|
|
|
|
|
|
"\busername\x18\x01 \x01(\tR\busername\x12\x1a\n" +
|
|
|
|
|
|
"\bpassword\x18\x02 \x01(\tR\bpassword\x12\x1a\n" +
|
|
|
|
|
|
"\bsemester\x18\x03 \x01(\tR\bsemester\"\x9c\x01\n" +
|
|
|
|
|
|
"\x12ScheduleResultData\x12\x1a\n" +
|
|
|
|
|
|
"\bsemester\x18\x01 \x01(\tR\bsemester\x12\x1d\n" +
|
|
|
|
|
|
"\n" +
|
|
|
|
|
|
"student_id\x18\x02 \x01(\tR\tstudentId\x12!\n" +
|
|
|
|
|
|
"\fstudent_name\x18\x03 \x01(\tR\vstudentName\x12(\n" +
|
|
|
|
|
|
"\acourses\x18\x04 \x03(\v2\x0e.runner.CourseR\acourses\"\xa8\x01\n" +
|
|
|
|
|
|
"\x06Course\x12\x12\n" +
|
|
|
|
|
|
"\x04code\x18\x01 \x01(\tR\x04code\x12\x12\n" +
|
|
|
|
|
|
"\x04name\x18\x02 \x01(\tR\x04name\x12\x18\n" +
|
|
|
|
|
|
"\ateacher\x18\x03 \x01(\tR\ateacher\x12\x12\n" +
|
|
|
|
|
|
"\x04room\x18\x04 \x01(\tR\x04room\x12\x16\n" +
|
|
|
|
|
|
"\x06credit\x18\x05 \x01(\x02R\x06credit\x120\n" +
|
|
|
|
|
|
"\bschedule\x18\x06 \x03(\v2\x14.runner.ScheduleTimeR\bschedule\"R\n" +
|
|
|
|
|
|
"\fScheduleTime\x12\x10\n" +
|
|
|
|
|
|
"\x03day\x18\x01 \x01(\tR\x03day\x12\x1a\n" +
|
|
|
|
|
|
"\bsections\x18\x02 \x03(\x05R\bsections\x12\x14\n" +
|
2026-05-12 01:28:18 +08:00
|
|
|
|
"\x05weeks\x18\x03 \x03(\x05R\x05weeks\"\xd6\x01\n" +
|
|
|
|
|
|
"\n" +
|
|
|
|
|
|
"GpaSummary\x12\x1f\n" +
|
|
|
|
|
|
"\vaverage_gpa\x18\x01 \x01(\tR\n" +
|
|
|
|
|
|
"averageGpa\x12\x12\n" +
|
|
|
|
|
|
"\x04rank\x18\x02 \x01(\tR\x04rank\x12$\n" +
|
|
|
|
|
|
"\x0eexam_total_gpa\x18\x03 \x01(\tR\fexamTotalGpa\x12,\n" +
|
|
|
|
|
|
"\x12exam_total_credits\x18\x04 \x01(\tR\x10examTotalCredits\x12!\n" +
|
|
|
|
|
|
"\ffail_credits\x18\x05 \x01(\tR\vfailCredits\x12\x1c\n" +
|
|
|
|
|
|
"\tsemesters\x18\x06 \x01(\tR\tsemesters\"\xa9\x01\n" +
|
2026-03-13 20:40:20 +08:00
|
|
|
|
"\x10GradesResultData\x12\x1a\n" +
|
|
|
|
|
|
"\bsemester\x18\x01 \x01(\tR\bsemester\x12\x1d\n" +
|
|
|
|
|
|
"\n" +
|
|
|
|
|
|
"student_id\x18\x02 \x01(\tR\tstudentId\x12%\n" +
|
2026-05-12 01:28:18 +08:00
|
|
|
|
"\x06grades\x18\x03 \x03(\v2\r.runner.GradeR\x06grades\x123\n" +
|
|
|
|
|
|
"\vgpa_summary\x18\x04 \x01(\v2\x12.runner.GpaSummaryR\n" +
|
|
|
|
|
|
"gpaSummary\"\xf9\x01\n" +
|
|
|
|
|
|
"\x05Grade\x12\x12\n" +
|
|
|
|
|
|
"\x04term\x18\x01 \x01(\tR\x04term\x12\x1f\n" +
|
|
|
|
|
|
"\vcourse_code\x18\x02 \x01(\tR\n" +
|
2026-03-13 20:40:20 +08:00
|
|
|
|
"courseCode\x12\x1f\n" +
|
2026-05-12 01:28:18 +08:00
|
|
|
|
"\vcourse_name\x18\x03 \x01(\tR\n" +
|
2026-03-13 20:40:20 +08:00
|
|
|
|
"courseName\x12\x16\n" +
|
2026-05-12 01:28:18 +08:00
|
|
|
|
"\x06nature\x18\x04 \x01(\tR\x06nature\x12\x1a\n" +
|
|
|
|
|
|
"\bcategory\x18\x05 \x01(\tR\bcategory\x12\x16\n" +
|
|
|
|
|
|
"\x06credit\x18\x06 \x01(\tR\x06credit\x12\x14\n" +
|
|
|
|
|
|
"\x05score\x18\a \x01(\tR\x05score\x12\x1f\n" +
|
|
|
|
|
|
"\vgrade_point\x18\b \x01(\tR\n" +
|
|
|
|
|
|
"gradePoint\x12\x17\n" +
|
|
|
|
|
|
"\ais_exam\x18\t \x01(\tR\x06isExam\"p\n" +
|
2026-03-13 20:40:20 +08:00
|
|
|
|
"\x0fExamsResultData\x12\x1a\n" +
|
|
|
|
|
|
"\bsemester\x18\x01 \x01(\tR\bsemester\x12\x1d\n" +
|
|
|
|
|
|
"\n" +
|
|
|
|
|
|
"student_id\x18\x02 \x01(\tR\tstudentId\x12\"\n" +
|
2026-05-12 01:28:18 +08:00
|
|
|
|
"\x05exams\x18\x03 \x03(\v2\f.runner.ExamR\x05exams\"\x9a\x01\n" +
|
2026-03-13 20:40:20 +08:00
|
|
|
|
"\x04Exam\x12\x1f\n" +
|
2026-05-12 01:28:18 +08:00
|
|
|
|
"\vcourse_name\x18\x01 \x01(\tR\n" +
|
2026-03-13 20:40:20 +08:00
|
|
|
|
"courseName\x12\x1b\n" +
|
2026-05-12 01:28:18 +08:00
|
|
|
|
"\texam_type\x18\x02 \x01(\tR\bexamType\x12\x12\n" +
|
|
|
|
|
|
"\x04date\x18\x03 \x01(\tR\x04date\x12\x12\n" +
|
|
|
|
|
|
"\x04time\x18\x04 \x01(\tR\x04time\x12\x12\n" +
|
|
|
|
|
|
"\x04week\x18\x05 \x01(\tR\x04week\x12\x18\n" +
|
|
|
|
|
|
"\aweekday\x18\x06 \x01(\tR\aweekday\"\xc4\x01\n" +
|
2026-03-13 20:40:20 +08:00
|
|
|
|
"\x12UserInfoResultData\x12\x1d\n" +
|
|
|
|
|
|
"\n" +
|
|
|
|
|
|
"student_id\x18\x01 \x01(\tR\tstudentId\x12\x12\n" +
|
|
|
|
|
|
"\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n" +
|
|
|
|
|
|
"\x06gender\x18\x03 \x01(\tR\x06gender\x12\x18\n" +
|
|
|
|
|
|
"\acollege\x18\x04 \x01(\tR\acollege\x12\x14\n" +
|
|
|
|
|
|
"\x05major\x18\x05 \x01(\tR\x05major\x12\x1d\n" +
|
|
|
|
|
|
"\n" +
|
|
|
|
|
|
"class_name\x18\x06 \x01(\tR\tclassName\x12\x14\n" +
|
2026-05-31 21:29:45 +08:00
|
|
|
|
"\x05grade\x18\a \x01(\tR\x05grade\"\xee\x01\n" +
|
|
|
|
|
|
"\x18GetEmptyClassroomPayload\x12\x1a\n" +
|
|
|
|
|
|
"\busername\x18\x01 \x01(\tR\busername\x12\x1a\n" +
|
|
|
|
|
|
"\bpassword\x18\x02 \x01(\tR\bpassword\x12\x1a\n" +
|
|
|
|
|
|
"\bsemester\x18\x03 \x01(\tR\bsemester\x12\x1d\n" +
|
|
|
|
|
|
"\n" +
|
|
|
|
|
|
"week_start\x18\x04 \x01(\tR\tweekStart\x12\x19\n" +
|
|
|
|
|
|
"\bweek_end\x18\x05 \x01(\tR\aweekEnd\x12\x1f\n" +
|
|
|
|
|
|
"\vcampus_code\x18\x06 \x01(\tR\n" +
|
|
|
|
|
|
"campusCode\x12#\n" +
|
|
|
|
|
|
"\rbuilding_code\x18\a \x01(\tR\fbuildingCode\"\x92\x01\n" +
|
|
|
|
|
|
"\x18EmptyClassroomResultData\x12\x1a\n" +
|
|
|
|
|
|
"\bsemester\x18\x01 \x01(\tR\bsemester\x12\x1d\n" +
|
|
|
|
|
|
"\n" +
|
|
|
|
|
|
"student_id\x18\x02 \x01(\tR\tstudentId\x12;\n" +
|
|
|
|
|
|
"\n" +
|
|
|
|
|
|
"classrooms\x18\x03 \x03(\v2\x1b.runner.EmptyClassroomEntryR\n" +
|
|
|
|
|
|
"classrooms\"\x91\x01\n" +
|
|
|
|
|
|
"\x13EmptyClassroomEntry\x12\x1c\n" +
|
|
|
|
|
|
"\tclassroom\x18\x01 \x01(\tR\tclassroom\x12\x18\n" +
|
|
|
|
|
|
"\aweekday\x18\x02 \x01(\tR\aweekday\x12\x18\n" +
|
|
|
|
|
|
"\aperiods\x18\x03 \x01(\tR\aperiods\x12\x12\n" +
|
|
|
|
|
|
"\x04term\x18\x04 \x01(\tR\x04term\x12\x14\n" +
|
|
|
|
|
|
"\x05weeks\x18\x05 \x01(\tR\x05weeks*\xc5\x01\n" +
|
2026-03-13 20:40:20 +08:00
|
|
|
|
"\bTaskType\x12\x15\n" +
|
|
|
|
|
|
"\x11TASK_TYPE_UNKNOWN\x10\x00\x12\x13\n" +
|
|
|
|
|
|
"\x0fTASK_TYPE_LOGIN\x10\x01\x12\x1a\n" +
|
|
|
|
|
|
"\x16TASK_TYPE_GET_SCHEDULE\x10\x02\x12\x18\n" +
|
|
|
|
|
|
"\x14TASK_TYPE_GET_GRADES\x10\x03\x12\x17\n" +
|
|
|
|
|
|
"\x13TASK_TYPE_GET_EXAMS\x10\x04\x12\x1b\n" +
|
2026-05-31 21:29:45 +08:00
|
|
|
|
"\x17TASK_TYPE_GET_USER_INFO\x10\x05\x12!\n" +
|
|
|
|
|
|
"\x1dTASK_TYPE_GET_EMPTY_CLASSROOM\x10\x06*\x8a\x01\n" +
|
2026-03-13 20:40:20 +08:00
|
|
|
|
"\n" +
|
|
|
|
|
|
"TaskStatus\x12\x17\n" +
|
|
|
|
|
|
"\x13TASK_STATUS_UNKNOWN\x10\x00\x12\x17\n" +
|
|
|
|
|
|
"\x13TASK_STATUS_SUCCESS\x10\x01\x12\x16\n" +
|
|
|
|
|
|
"\x12TASK_STATUS_FAILED\x10\x02\x12\x17\n" +
|
|
|
|
|
|
"\x13TASK_STATUS_TIMEOUT\x10\x03\x12\x19\n" +
|
|
|
|
|
|
"\x15TASK_STATUS_CANCELLED\x10\x042H\n" +
|
|
|
|
|
|
"\tRunnerHub\x12;\n" +
|
2026-05-12 01:28:18 +08:00
|
|
|
|
"\aConnect\x12\x15.runner.StreamMessage\x1a\x15.runner.StreamMessage(\x010\x01B(Z&schedule_converter/proto/runner;runnerb\x06proto3"
|
2026-03-13 20:40:20 +08:00
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
|
file_proto_runner_runner_proto_rawDescOnce sync.Once
|
|
|
|
|
|
file_proto_runner_runner_proto_rawDescData []byte
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
func file_proto_runner_runner_proto_rawDescGZIP() []byte {
|
|
|
|
|
|
file_proto_runner_runner_proto_rawDescOnce.Do(func() {
|
|
|
|
|
|
file_proto_runner_runner_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_runner_runner_proto_rawDesc), len(file_proto_runner_runner_proto_rawDesc)))
|
|
|
|
|
|
})
|
|
|
|
|
|
return file_proto_runner_runner_proto_rawDescData
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var file_proto_runner_runner_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
|
2026-05-31 21:29:45 +08:00
|
|
|
|
var file_proto_runner_runner_proto_msgTypes = make([]protoimpl.MessageInfo, 25)
|
2026-03-13 20:40:20 +08:00
|
|
|
|
var file_proto_runner_runner_proto_goTypes = []any{
|
2026-05-31 21:29:45 +08:00
|
|
|
|
(TaskType)(0), // 0: runner.TaskType
|
|
|
|
|
|
(TaskStatus)(0), // 1: runner.TaskStatus
|
|
|
|
|
|
(*StreamMessage)(nil), // 2: runner.StreamMessage
|
|
|
|
|
|
(*RegisterRequest)(nil), // 3: runner.RegisterRequest
|
|
|
|
|
|
(*RegisterResponse)(nil), // 4: runner.RegisterResponse
|
|
|
|
|
|
(*Heartbeat)(nil), // 5: runner.Heartbeat
|
|
|
|
|
|
(*HeartbeatAck)(nil), // 6: runner.HeartbeatAck
|
|
|
|
|
|
(*Task)(nil), // 7: runner.Task
|
|
|
|
|
|
(*TaskCancel)(nil), // 8: runner.TaskCancel
|
|
|
|
|
|
(*TaskResult)(nil), // 9: runner.TaskResult
|
|
|
|
|
|
(*LoginPayload)(nil), // 10: runner.LoginPayload
|
|
|
|
|
|
(*GetSchedulePayload)(nil), // 11: runner.GetSchedulePayload
|
|
|
|
|
|
(*GetGradesPayload)(nil), // 12: runner.GetGradesPayload
|
|
|
|
|
|
(*GetExamsPayload)(nil), // 13: runner.GetExamsPayload
|
|
|
|
|
|
(*ScheduleResultData)(nil), // 14: runner.ScheduleResultData
|
|
|
|
|
|
(*Course)(nil), // 15: runner.Course
|
|
|
|
|
|
(*ScheduleTime)(nil), // 16: runner.ScheduleTime
|
|
|
|
|
|
(*GpaSummary)(nil), // 17: runner.GpaSummary
|
|
|
|
|
|
(*GradesResultData)(nil), // 18: runner.GradesResultData
|
|
|
|
|
|
(*Grade)(nil), // 19: runner.Grade
|
|
|
|
|
|
(*ExamsResultData)(nil), // 20: runner.ExamsResultData
|
|
|
|
|
|
(*Exam)(nil), // 21: runner.Exam
|
|
|
|
|
|
(*UserInfoResultData)(nil), // 22: runner.UserInfoResultData
|
|
|
|
|
|
(*GetEmptyClassroomPayload)(nil), // 23: runner.GetEmptyClassroomPayload
|
|
|
|
|
|
(*EmptyClassroomResultData)(nil), // 24: runner.EmptyClassroomResultData
|
|
|
|
|
|
(*EmptyClassroomEntry)(nil), // 25: runner.EmptyClassroomEntry
|
|
|
|
|
|
nil, // 26: runner.RegisterRequest.CapabilitiesEntry
|
2026-03-13 20:40:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
var file_proto_runner_runner_proto_depIdxs = []int32{
|
|
|
|
|
|
3, // 0: runner.StreamMessage.register:type_name -> runner.RegisterRequest
|
|
|
|
|
|
4, // 1: runner.StreamMessage.register_response:type_name -> runner.RegisterResponse
|
|
|
|
|
|
5, // 2: runner.StreamMessage.heartbeat:type_name -> runner.Heartbeat
|
|
|
|
|
|
6, // 3: runner.StreamMessage.heartbeat_ack:type_name -> runner.HeartbeatAck
|
|
|
|
|
|
7, // 4: runner.StreamMessage.task:type_name -> runner.Task
|
|
|
|
|
|
9, // 5: runner.StreamMessage.result:type_name -> runner.TaskResult
|
|
|
|
|
|
8, // 6: runner.StreamMessage.task_cancel:type_name -> runner.TaskCancel
|
2026-05-31 21:29:45 +08:00
|
|
|
|
26, // 7: runner.RegisterRequest.capabilities:type_name -> runner.RegisterRequest.CapabilitiesEntry
|
2026-03-13 20:40:20 +08:00
|
|
|
|
0, // 8: runner.Task.type:type_name -> runner.TaskType
|
|
|
|
|
|
1, // 9: runner.TaskResult.status:type_name -> runner.TaskStatus
|
|
|
|
|
|
15, // 10: runner.ScheduleResultData.courses:type_name -> runner.Course
|
|
|
|
|
|
16, // 11: runner.Course.schedule:type_name -> runner.ScheduleTime
|
2026-05-12 01:28:18 +08:00
|
|
|
|
19, // 12: runner.GradesResultData.grades:type_name -> runner.Grade
|
|
|
|
|
|
17, // 13: runner.GradesResultData.gpa_summary:type_name -> runner.GpaSummary
|
|
|
|
|
|
21, // 14: runner.ExamsResultData.exams:type_name -> runner.Exam
|
2026-05-31 21:29:45 +08:00
|
|
|
|
25, // 15: runner.EmptyClassroomResultData.classrooms:type_name -> runner.EmptyClassroomEntry
|
|
|
|
|
|
2, // 16: runner.RunnerHub.Connect:input_type -> runner.StreamMessage
|
|
|
|
|
|
2, // 17: runner.RunnerHub.Connect:output_type -> runner.StreamMessage
|
|
|
|
|
|
17, // [17:18] is the sub-list for method output_type
|
|
|
|
|
|
16, // [16:17] is the sub-list for method input_type
|
|
|
|
|
|
16, // [16:16] is the sub-list for extension type_name
|
|
|
|
|
|
16, // [16:16] is the sub-list for extension extendee
|
|
|
|
|
|
0, // [0:16] is the sub-list for field type_name
|
2026-03-13 20:40:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func init() { file_proto_runner_runner_proto_init() }
|
|
|
|
|
|
func file_proto_runner_runner_proto_init() {
|
|
|
|
|
|
if File_proto_runner_runner_proto != nil {
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
file_proto_runner_runner_proto_msgTypes[0].OneofWrappers = []any{
|
|
|
|
|
|
(*StreamMessage_Register)(nil),
|
|
|
|
|
|
(*StreamMessage_RegisterResponse)(nil),
|
|
|
|
|
|
(*StreamMessage_Heartbeat)(nil),
|
|
|
|
|
|
(*StreamMessage_HeartbeatAck)(nil),
|
|
|
|
|
|
(*StreamMessage_Task)(nil),
|
|
|
|
|
|
(*StreamMessage_Result)(nil),
|
|
|
|
|
|
(*StreamMessage_TaskCancel)(nil),
|
|
|
|
|
|
}
|
|
|
|
|
|
type x struct{}
|
|
|
|
|
|
out := protoimpl.TypeBuilder{
|
|
|
|
|
|
File: protoimpl.DescBuilder{
|
|
|
|
|
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
|
|
|
|
|
RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_runner_runner_proto_rawDesc), len(file_proto_runner_runner_proto_rawDesc)),
|
|
|
|
|
|
NumEnums: 2,
|
2026-05-31 21:29:45 +08:00
|
|
|
|
NumMessages: 25,
|
2026-03-13 20:40:20 +08:00
|
|
|
|
NumExtensions: 0,
|
|
|
|
|
|
NumServices: 1,
|
|
|
|
|
|
},
|
|
|
|
|
|
GoTypes: file_proto_runner_runner_proto_goTypes,
|
|
|
|
|
|
DependencyIndexes: file_proto_runner_runner_proto_depIdxs,
|
|
|
|
|
|
EnumInfos: file_proto_runner_runner_proto_enumTypes,
|
|
|
|
|
|
MessageInfos: file_proto_runner_runner_proto_msgTypes,
|
|
|
|
|
|
}.Build()
|
|
|
|
|
|
File_proto_runner_runner_proto = out.File
|
|
|
|
|
|
file_proto_runner_runner_proto_goTypes = nil
|
|
|
|
|
|
file_proto_runner_runner_proto_depIdxs = nil
|
|
|
|
|
|
}
|