feat(model): add task defaults, job queries, and refine file/task DTOs

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
dailz
2026-04-20 10:37:58 +08:00
parent 0c7a282386
commit db06e99967
5 changed files with 299 additions and 199 deletions

View File

@@ -1,19 +1,42 @@
package model
// SubmitJobRequest is the API request for submitting a job.
// SubmitJobRequest 是提交作业的 API 请求。
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"` // 请求的内存大小
Memory string `json:"memory,omitempty"` // Deprecated: Use MemoryPerNode or MemoryPerCpu instead
TimeLimit string `json:"time_limit,omitempty"` // 运行时间限制 (分钟)
JobName string `json:"job_name,omitempty"` // 作业名称
Environment map[string]string `json:"environment,omitempty"` // 环境变量键值对
WorkDir string `json:"work_dir,omitempty"` // 作业工作目录
MemoryPerNode *int64 `json:"memory_per_node,omitempty"` // 每节点内存(MB)
MemoryPerCpu *int64 `json:"memory_per_cpu,omitempty"` // 每CPU内存(MB)
Nodes *string `json:"nodes,omitempty"` // 请求的节点数(支持范围如"2-4"
Tasks *int32 `json:"tasks,omitempty"` // 任务数
CpusPerTask *int32 `json:"cpus_per_task,omitempty"` // 每任务CPU核数
Constraints *string `json:"constraints,omitempty"` // 节点特性约束
Reservation *string `json:"reservation,omitempty"` // 预约名称
Account *string `json:"account,omitempty"` // 计费账户
Nice *int32 `json:"nice,omitempty"` // nice调整值
MailType *string `json:"mail_type,omitempty"` // 邮件通知类型(逗号分隔)
MailUser *string `json:"mail_user,omitempty"` // 邮件地址
StandardOutput *string `json:"standard_output,omitempty"` // 标准输出路径
StandardError *string `json:"standard_error,omitempty"` // 标准错误路径
StandardInput *string `json:"standard_input,omitempty"` // 标准输入路径
RequiredNodes *string `json:"required_nodes,omitempty"` // 指定运行的节点(逗号分隔)
ExcludedNodes *string `json:"excluded_nodes,omitempty"` // 排除的节点(逗号分隔)
BeginTime *int64 `json:"begin_time,omitempty"` // 最早开始时间(Unix时间戳)
Deadline *int64 `json:"deadline,omitempty"` // 截止时间(Unix时间戳)
Array *string `json:"array,omitempty"` // 数组作业规格
Dependency *string `json:"dependency,omitempty"` // 作业依赖关系
Requeue *bool `json:"requeue,omitempty"` // 失败后是否重新排队
KillOnNodeFail *bool `json:"kill_on_node_fail,omitempty"` // 节点故障时是否终止作业
}
// JobResponse is the API response for a job.
// JobResponse 是作业查询 API 响应。
type JobResponse struct {
// Identity
JobID int32 `json:"job_id"` // Slurm 作业 ID
@@ -59,7 +82,7 @@ type JobResponse struct {
ArrayTaskID *int32 `json:"array_task_id,omitempty"` // 数组作业中的子任务 ID
}
// JobListResponse is the paginated response for job listings.
// JobListResponse 是作业列表分页响应。
type JobListResponse struct {
Jobs []JobResponse `json:"jobs"` // 作业列表
Total int `json:"total"` // 符合条件的作业总数
@@ -67,13 +90,13 @@ type JobListResponse struct {
PageSize int `json:"page_size"` // 每页条数
}
// JobListQuery contains pagination parameters for active job listing.
// JobListQuery 是活跃作业列表查询参数。
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.
// JobHistoryQuery 是作业历史查询参数。
type JobHistoryQuery struct {
Users string `form:"users" json:"users,omitempty"` // 按用户名过滤 (逗号分隔)
StartTime string `form:"start_time" json:"start_time,omitempty"` // 作业开始时间下限 (Unix 时间戳)