修复: 文件系统初始化守卫与传输收尾等七处

- filesystemSvc 守卫17绑定方法,异步初始化完成前返回明确错误
- MovePath 跨盘剪切建 move emitter,失败清理目标盘残留
- SFTP 空目录下载/上传补 MkdirAll 落地
- drawio 下载失败等待者立即返回,不再空轮询30分钟
- batch 高亮补 %1 与 %%i 规则
- 错误文案转换抽 errMessage 共享函数,11处归一
- log.Printf 统一 slog.Warn
This commit is contained in:
lxy
2026-09-15 23:49:01 +08:00
parent d211365856
commit 56fe0d9b82
10 changed files with 173 additions and 49 deletions
+7
View File
@@ -67,6 +67,13 @@ func EnsureDrawioViewer(progress service.DownloadProgress) error {
if isDrawioViewerReady() {
return nil
}
// 首个下载方已退出仍未就绪(下载失败),等待者立即失败而非空轮询到超时
drawioEnsureMu.Lock()
ensuring := drawioEnsuring
drawioEnsureMu.Unlock()
if !ensuring {
return fmt.Errorf("drawio viewer 下载失败,请重试")
}
time.Sleep(500 * time.Millisecond)
}
return fmt.Errorf("等待 drawio viewer 下载超时")
+5 -3
View File
@@ -552,7 +552,8 @@ func (s *FileSystemService) CopyPath(src, dst string, onProgress func(copied, to
}
// MovePath 移动文件或目录:同盘直接重命名,跨盘回退为复制后永久删除源(不走回收站)
func (s *FileSystemService) MovePath(src, dst string) error {
// 跨盘复制阶段经 onProgress 回调进度(可为 nil),同盘 rename 无进度
func (s *FileSystemService) MovePath(src, dst string, onProgress func(copied, total int64)) error {
info, err := s.checkCopyMovePaths(src, dst)
if err != nil {
return err
@@ -564,8 +565,9 @@ func (s *FileSystemService) MovePath(src, dst string) error {
return nil
}
// 跨盘:复制 + 删除源
if err := s.CopyPath(src, dst, nil); err != nil {
// 跨盘:复制 + 删除源;复制中途失败清理 dst 残留,否则重试会因目标已存在被拒
if err := s.CopyPath(src, dst, onProgress); err != nil {
_ = os.RemoveAll(dst)
return err
}
if err := os.RemoveAll(src); err != nil {