sdk_generate/internal/entitys/task.go

153 lines
3.9 KiB
Go

package entitys
import (
"sdk-generator/internal/data/model"
"sdk-generator/internal/pkg/call"
"sdk-generator/internal/pkg/extractor"
)
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) String() string {
return string(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 DocType int32
const (
DocTypeSdk DocType = 1
DocTypeServerBoilerplate DocType = 2
DocTypeUnKnown DocType = 0
)
func (s DocType) String() string {
return string(s)
}
//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
// DocType DocType
// Refine string
// Resp string
// Valid string
// Files []extractor.File
// RepoURL string
//}
type Task struct {
TasKModel *model.AiGenerateTask
RefinedDoc string
Generate string
CallLLM *call.CallLLM
OutputDir string
Valid string
Package string
Name string
Files []extractor.File
}
type TaskResponse struct {
Task *model.AiGenerateTask
Percent int `json:"percent"`
StatusDesc string `json:"status_desc"`
}
type ListTasksResponse struct {
Data []model.AiGenerateTask `json:"data"`
Total int64 `json:"total"`
Page int `json:"page"`
Size int `json:"size"`
}
type Usage struct {
StateName string `json:"state_name"`
PromptTokens int `json:"prompt_tokens"`
CompletionTokens int `json:"completion_tokens"`
TotalTokens int `json:"total_tokens"`
}
type UsageTask struct {
PromptTokens int `json:"prompt_tokens"`
CompletionTokens int `json:"completion_tokens"`
TotalTokens int `json:"total_tokens"`
Detail []*Usage `json:"detail"`
}
type ToolRes struct {
RefinedDoc string `json:"refined_doc"`
Interfaces []Interface `json:"interfaces"`
}
type Interface struct {
Method string `json:"method"`
Summary string `json:"summary"`
}