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

- 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
+11 -2
View File
@@ -5,7 +5,6 @@ import (
"encoding/base64"
"errors"
"fmt"
"log"
"log/slog"
"io"
"io/fs"
@@ -539,7 +538,7 @@ func sftpSupplementDir(s *Service, c *Client, remoteDir string, tmpDir string, s
continue
}
if count >= common.MaxSupplementFiles {
log.Printf("[站点下载] 补充扫描达到上限: count=%d", common.MaxSupplementFiles)
slog.Warn("站点下载补充扫描达到上限", "count", common.MaxSupplementFiles)
break
}
fullPath := path.Join(remoteDir, entry.Name())
@@ -617,6 +616,10 @@ func (s *Service) DownloadToFile(connID, remotePath, localDstDir string, onProgr
if err := walk(remotePath, dstDir); err != nil {
return "", fmt.Errorf("遍历远程目录失败: %w", err)
}
// 空目录时清单为空,downloadFileTo 不会执行,目标目录须显式创建
if err := os.MkdirAll(dstDir, 0755); err != nil {
return "", fmt.Errorf("创建本地目录失败: %w", err)
}
var copied int64
for _, e := range entries {
@@ -714,6 +717,12 @@ func (s *Service) UploadFromFile(connID, localPath, remoteDir string, onProgress
if err != nil {
return err
}
// 空目录时文件清单为空,uploadFileTo 不会执行,远端根目录须显式创建
if err := c.WithRetry(func(sc *sftpclient.Client) error {
return sc.MkdirAll(remoteRoot)
}); err != nil {
return fmt.Errorf("创建远程目录失败: %w", err)
}
var copied int64
for _, f := range files {
if err := s.uploadFileTo(c, f.local, path.Join(remoteRoot, f.rel), &copied, total, onProgress); err != nil {