syntax = "v1" type ( JobPublic { Id string `json:"id"` TemplateType string `json:"template_type"` Status string `json:"status"` ProgressSummary string `json:"progress_summary"` ProgressPercent int `json:"progress_percent"` Error string `json:"error,optional"` // 業務關聯(例:threads 帳號 id、人設 id) RefId string `json:"ref_id,optional"` // 任務 payload JSON(例:{"username":"x"}) Payload string `json:"payload,optional"` // 排程執行時間 unix ns;0=立刻可領 RunAfter int64 `json:"run_after,optional"` CreatedAt int64 `json:"created_at"` UpdatedAt int64 `json:"updated_at"` CompletedAt int64 `json:"completed_at,optional"` } // tab: recurring=遠期定期排程 | active=執行中/待領取 | history=終態歷史 JobListReq { Tab string `form:"tab,optional"` Page int `form:"page,optional"` PageSize int `form:"pageSize,optional"` } JobListData { List []JobPublic `json:"list"` Pagination Pagination `json:"pagination"` } JobIdPath { Id string `path:"id"` } ) @server ( jwt: Auth group: jobs prefix: /api/v1/jobs middleware: AuthJWT ) service gateway { @handler ListJobs get / (JobListReq) returns (JobListData) @handler GetJob get /:id (JobIdPath) returns (JobPublic) // 手動刪除任務(執行中不可刪;終態/已排程可刪) @handler DeleteJob delete /:id (JobIdPath) returns (OkData) } // 管理員:產生 demo/測試任務(由 demo-worker 消費) @server ( jwt: Auth group: jobs prefix: /api/v1/jobs middleware: AuthJWT,AdminAuth ) service gateway { @handler StartDemoJob post /demo returns (JobPublic) }