package model // SubmitJobRequest is the API request for submitting a job. type SubmitJobRequest struct { Script string `json:"script"` // 作业脚本内容 Partition string `json:"partition,omitempty"` // 提交到的分区 QOS string `json:"qos,omitempty"` // 使用的 QOS 策略 CPUs int32 `json:"cpus,omitempty"` // 请求的 CPU 核数 Memory string `json:"memory,omitempty"` // 请求的内存大小 TimeLimit string `json:"time_limit,omitempty"` // 运行时间限制 (分钟) JobName string `json:"job_name,omitempty"` // 作业名称 Environment map[string]string `json:"environment,omitempty"` // 环境变量键值对 } // JobResponse is the API response for a job. type JobResponse struct { // Identity JobID int32 `json:"job_id"` // Slurm 作业 ID Name string `json:"name"` // 作业名称 State []string `json:"job_state"` // 作业当前状态 (e.g. ["RUNNING"], ["PENDING","REQUEUED"]) StateReason string `json:"state_reason,omitempty"` // 作业等待/失败的原因 // Scheduling Partition string `json:"partition"` // 所属分区 QOS string `json:"qos,omitempty"` // 使用的 QOS 策略 Priority *int32 `json:"priority,omitempty"` // 作业优先级 TimeLimit string `json:"time_limit,omitempty"` // 运行时间限制 (分钟,"UNLIMITED" 表示无限) // Ownership Account string `json:"account,omitempty"` // 计费账户 User string `json:"user,omitempty"` // 提交用户 Cluster string `json:"cluster,omitempty"` // 所属集群 // Resources Cpus *int32 `json:"cpus,omitempty"` // 分配/请求的 CPU 核数 Tasks *int32 `json:"tasks,omitempty"` // 任务数 NodeCount *int32 `json:"node_count,omitempty"` // 节点数 Nodes string `json:"nodes,omitempty"` // 分配的节点列表 BatchHost string `json:"batch_host,omitempty"` // 批处理主节点 // Timing (Unix timestamp) SubmitTime *int64 `json:"submit_time,omitempty"` // 提交时间 StartTime *int64 `json:"start_time,omitempty"` // 开始运行时间 EndTime *int64 `json:"end_time,omitempty"` // 结束/预计结束时间 // Result ExitCode *int32 `json:"exit_code,omitempty"` // 退出码 (nil 表示未结束) // IO Paths StdOut string `json:"standard_output,omitempty"` // 标准输出文件路径 StdErr string `json:"standard_error,omitempty"` // 标准错误文件路径 StdIn string `json:"standard_input,omitempty"` // 标准输入文件路径 WorkDir string `json:"working_directory,omitempty"` // 工作目录 Command string `json:"command,omitempty"` // 执行的命令 // Array Job ArrayJobID *int32 `json:"array_job_id,omitempty"` // 数组作业的父 Job ID ArrayTaskID *int32 `json:"array_task_id,omitempty"` // 数组作业中的子任务 ID } // JobListResponse is the paginated response for job listings. type JobListResponse struct { Jobs []JobResponse `json:"jobs"` // 作业列表 Total int `json:"total"` // 符合条件的作业总数 Page int `json:"page"` // 当前页码 (从 1 开始) PageSize int `json:"page_size"` // 每页条数 } // JobListQuery contains pagination parameters for active job listing. type JobListQuery struct { Page int `form:"page,default=1" json:"page,omitempty"` // 页码 (从 1 开始) PageSize int `form:"page_size,default=20" json:"page_size,omitempty"` // 每页条数 } // JobHistoryQuery contains query parameters for job history. type JobHistoryQuery struct { Users string `form:"users" json:"users,omitempty"` // 按用户名过滤 (逗号分隔) StartTime string `form:"start_time" json:"start_time,omitempty"` // 作业开始时间下限 (Unix 时间戳) EndTime string `form:"end_time" json:"end_time,omitempty"` // 作业结束时间上限 (Unix 时间戳) SubmitTime string `form:"submit_time" json:"submit_time,omitempty"` // 作业提交时间过滤 (Unix 时间戳) Account string `form:"account" json:"account,omitempty"` // 按计费账户过滤 Partition string `form:"partition" json:"partition,omitempty"` // 按分区过滤 State string `form:"state" json:"state,omitempty"` // 按作业状态过滤 (e.g. "COMPLETED", "FAILED") JobName string `form:"job_name" json:"job_name,omitempty"` // 按作业名称过滤 Cluster string `form:"cluster" json:"cluster,omitempty"` // 按集群名称过滤 Qos string `form:"qos" json:"qos,omitempty"` // 按 QOS 策略过滤 Constraints string `form:"constraints" json:"constraints,omitempty"` // 按节点约束过滤 ExitCode string `form:"exit_code" json:"exit_code,omitempty"` // 按退出码过滤 Node string `form:"node" json:"node,omitempty"` // 按分配节点过滤 Reservation string `form:"reservation" json:"reservation,omitempty"` // 按预约名称过滤 Groups string `form:"groups" json:"groups,omitempty"` // 按用户组过滤 Wckey string `form:"wckey" json:"wckey,omitempty"` // 按 WCKey (Workload Characterization Key) 过滤 Page int `form:"page,default=1" json:"page,omitempty"` // 页码 (从 1 开始) PageSize int `form:"page_size,default=20" json:"page_size,omitempty"` // 每页条数 }