Files
weichen f3f23a3018 feat(errcode): 用稳定错误码记录 HTTP 与异步失败
失败响应此前不写日志,request_id 无法对照原因。注册表不覆盖处理器已经给出的 HTTP 状态。
2026-09-28 02:27:16 +00:00

50 lines
1.1 KiB
Go

package server
import (
"encoding/json"
"net/http"
"chat-agent-system/internal/squad"
)
func (s *Server) handleReconcileWorkspace(w http.ResponseWriter, r *http.Request) {
if _, ok := s.requireAdmin(w, r); !ok {
return
}
var body struct {
RunID string `json:"run_id"`
}
if err := json.NewDecoder(r.Body).Decode(&body); err != nil {
writeSafeError(w, r, http.StatusBadRequest, "invalid body")
return
}
if body.RunID == "" {
writeSafeError(w, r, http.StatusBadRequest, "run_id required")
return
}
rec, err := s.taskRuns().GetRun(body.RunID)
if err != nil {
writeSafeError(w, r, http.StatusNotFound, "run not found")
return
}
if rec.WorkspaceID == "" {
writeSafeError(w, r, http.StatusBadRequest, "workspace not available for run")
return
}
workDir, err := s.resolver().ResolveStoredWorkDir(rec.WorkspaceID)
if err != nil {
writeSafeError(w, r, http.StatusForbidden, "invalid workspace path")
return
}
report, err := squad.ReconcileWorkspaceStatus(workDir)
if err != nil {
writeDomainError(w, r, http.StatusBadRequest, err)
return
}
writeJSONResponse(w, http.StatusOK, report)
}