sdk_generate/internal/models/task.go

105 lines
2.7 KiB
Go

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"`
}