feat: Add API endpoint for team registration execution.
This commit is contained in:
@@ -415,6 +415,24 @@ func readOutput(reader io.Reader, workDir string, config TeamRegConfig) {
|
||||
if trimmed != "" {
|
||||
addTeamRegLog(trimmed)
|
||||
|
||||
// 检测输出文件名(例如:结果已保存到: accounts-2-20260201-071558.json)
|
||||
if strings.Contains(trimmed, "结果已保存到") || strings.Contains(trimmed, "accounts-") && strings.Contains(trimmed, ".json") {
|
||||
// 尝试提取文件名
|
||||
if idx := strings.Index(trimmed, "accounts-"); idx >= 0 {
|
||||
endIdx := strings.Index(trimmed[idx:], ".json")
|
||||
if endIdx > 0 {
|
||||
fileName := trimmed[idx : idx+endIdx+5] // 包含 .json
|
||||
// 构建完整路径
|
||||
fullPath := filepath.Join(workDir, fileName)
|
||||
if _, err := os.Stat(fullPath); err == nil {
|
||||
teamRegState.mu.Lock()
|
||||
teamRegState.OutputFile = fullPath
|
||||
teamRegState.mu.Unlock()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 检测 403 错误
|
||||
if strings.Contains(trimmed, "403") {
|
||||
if check403AndStop() {
|
||||
@@ -539,17 +557,47 @@ func findTeamRegExecutable() string {
|
||||
}
|
||||
|
||||
// findLatestOutputFile 查找最新的输出文件
|
||||
func findLatestOutputFile(dir string) string {
|
||||
pattern := filepath.Join(dir, "accounts-*.json")
|
||||
matches, err := filepath.Glob(pattern)
|
||||
if err != nil || len(matches) == 0 {
|
||||
func findLatestOutputFile(primaryDir string) string {
|
||||
// 搜索多个可能的目录
|
||||
cwd, _ := os.Getwd()
|
||||
searchDirs := []string{
|
||||
primaryDir,
|
||||
cwd,
|
||||
"/app",
|
||||
"/app/data",
|
||||
filepath.Join(cwd, "data"),
|
||||
".",
|
||||
}
|
||||
|
||||
var allMatches []string
|
||||
for _, dir := range searchDirs {
|
||||
pattern := filepath.Join(dir, "accounts-*.json")
|
||||
matches, err := filepath.Glob(pattern)
|
||||
if err == nil && len(matches) > 0 {
|
||||
allMatches = append(allMatches, matches...)
|
||||
}
|
||||
}
|
||||
|
||||
if len(allMatches) == 0 {
|
||||
addTeamRegLog(fmt.Sprintf("[调试] 未找到 accounts-*.json,搜索目录: %v", searchDirs))
|
||||
return ""
|
||||
}
|
||||
|
||||
// 去重
|
||||
uniqueMatches := make(map[string]bool)
|
||||
var finalMatches []string
|
||||
for _, m := range allMatches {
|
||||
absPath, _ := filepath.Abs(m)
|
||||
if !uniqueMatches[absPath] {
|
||||
uniqueMatches[absPath] = true
|
||||
finalMatches = append(finalMatches, absPath)
|
||||
}
|
||||
}
|
||||
|
||||
// 按修改时间排序,取最新的
|
||||
sort.Slice(matches, func(i, j int) bool {
|
||||
fi, _ := os.Stat(matches[i])
|
||||
fj, _ := os.Stat(matches[j])
|
||||
sort.Slice(finalMatches, func(i, j int) bool {
|
||||
fi, _ := os.Stat(finalMatches[i])
|
||||
fj, _ := os.Stat(finalMatches[j])
|
||||
if fi == nil || fj == nil {
|
||||
return false
|
||||
}
|
||||
@@ -557,15 +605,16 @@ func findLatestOutputFile(dir string) string {
|
||||
})
|
||||
|
||||
// 确保是最近创建的文件(5分钟内)
|
||||
fi, err := os.Stat(matches[0])
|
||||
fi, err := os.Stat(finalMatches[0])
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
if time.Since(fi.ModTime()) > 5*time.Minute {
|
||||
addTeamRegLog(fmt.Sprintf("[调试] 找到文件但太旧: %s (修改于 %v 前)", finalMatches[0], time.Since(fi.ModTime())))
|
||||
return ""
|
||||
}
|
||||
|
||||
return matches[0]
|
||||
return finalMatches[0]
|
||||
}
|
||||
|
||||
// TeamRegAccount team-reg 输出的账号格式
|
||||
|
||||
Reference in New Issue
Block a user