105 lines
2.7 KiB
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"`
|
|
}
|