package models import ( "sdk-generator/internal/call" "sdk-generator/internal/extractor" "time" ) type TaskStatus string const ( StatusPending TaskStatus = "pending" StatusProcessing TaskStatus = "processing" StatusMkdir TaskStatus = "mkdir" StatusAnaMd TaskStatus = "anaMd" StatusGenerateCode TaskStatus = "generateCode" StatusCreatFile TaskStatus = "creatFile" StatusValid TaskStatus = "valid" StatusProcess TaskStatus = "process" StatusFix TaskStatus = "fix" StatusSendToGit TaskStatus = "sendToGit " StatusMsgSend TaskStatus = "msgSend" StatusCompleted TaskStatus = "completed" StatusFailed TaskStatus = "failed" ) func (s TaskStatus) Desc() string { return StatusName[s] } func (s TaskStatus) Percent() int { return StatusPercent[s] } var StatusPercent = map[TaskStatus]int{ StatusPending: 0, StatusProcessing: 1, StatusMkdir: 10, StatusAnaMd: 20, StatusGenerateCode: 60, StatusCreatFile: 50, StatusValid: 70, StatusProcess: 62, StatusFix: 80, StatusSendToGit: 85, StatusMsgSend: 95, StatusCompleted: 100, StatusFailed: 100, } var StatusName = map[TaskStatus]string{ StatusPending: "准备中", StatusProcessing: "开始创建", StatusMkdir: "新建项目文件夹", StatusAnaMd: "分析文档", StatusGenerateCode: "生成代码", StatusCreatFile: "创建代码目录", StatusValid: "验证功能", StatusProcess: "编译检测", StatusFix: "问题修复", StatusSendToGit: "上传代码仓库", StatusMsgSend: "发送钉钉消息", StatusCompleted: "任务完成", StatusFailed: "任务失败", } type Task struct { ID string `json:"id"` Status TaskStatus `json:"status"` StatusName string `json:"status_name"` Percent int `json:"percent"` SdkName string `json:"sdk_name"` OutputDir string `json:"output_dir"` Error string `json:"error,omitempty"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` CompletedAt *time.Time `json:"completed_at,omitempty"` CallLLM *call.CallLLM SdkPackage string MarkdownContent string Refine string Resp string Valid string Files []extractor.File RepoURL string } type GenerateResponse struct { TaskID string `json:"task_id"` Status string `json:"status"` Message string `json:"message"` } type TaskResponse struct { Task Files []string `json:"files,omitempty"` } type ListTasksResponse struct { Data []*Task `json:"data"` Total int `json:"total"` Page int `json:"page"` Size int `json:"size"` }