ax_rd
3 hours ago 62a9f6223745c0df42be1f4226f31dfb10c83ea8
internal/vault/scanner.go
@@ -19,6 +19,10 @@
         if strings.HasPrefix(info.Name(), ".") && info.Name() != "." {
            return filepath.SkipDir
         }
         // 跳过待审阅目录
         if info.Name() == "待审阅" {
            return filepath.SkipDir
         }
         return nil
      }
      if !strings.HasSuffix(path, ".md") {
@@ -36,3 +40,40 @@
   return files, err
}
// FileStat 文件指纹(只 stat,不读内容)
type FileStat struct {
   Path  string // 相对路径
   Size  int64
   Mtime int64 // Unix 秒
}
// ScanVaultStat 扫描 .md 文件指纹清单(跳过隐藏目录和待审阅目录,与 ScanVault 一致)
func ScanVaultStat(vaultPath string) ([]FileStat, error) {
   var stats []FileStat
   err := filepath.Walk(vaultPath, func(path string, info os.FileInfo, err error) error {
      if err != nil {
         return nil
      }
      if info.IsDir() {
         if strings.HasPrefix(info.Name(), ".") && info.Name() != "." {
            return filepath.SkipDir
         }
         if info.Name() == "待审阅" {
            return filepath.SkipDir
         }
         return nil
      }
      if !strings.HasSuffix(path, ".md") {
         return nil
      }
      relPath, _ := filepath.Rel(vaultPath, path)
      stats = append(stats, FileStat{
         Path:  relPath,
         Size:  info.Size(),
         Mtime: info.ModTime().Unix(),
      })
      return nil
   })
   return stats, err
}