jimmyandClaude 2d74d18262 feat: 实现完整的文件系统操作API
## 新增功能

### Handler层
- ✅ CreateDirectory: 创建目录功能实现
- ✅ DeleteItem: 删除文件/目录(支持operation_id去重)
- ✅ MoveItem: 移动/重命名(支持overwrite参数)
- ✅ CopyItem: 复制文件/目录(支持overwrite参数)
- ✅ SearchFiles: 文件搜索(支持类型过滤:photo/video)

### Service层
- ✅ CreateDirectory: 目录创建逻辑 + 路径存在检查
- ✅ DeleteItem: 文件删除逻辑 + operation_id支持
- ✅ MoveItem: 移动/重命名逻辑 + 覆盖控制
- ✅ CopyItem: 复制逻辑(文件/目录) + 大小计算
- ✅ SearchFiles: 搜索逻辑 + 类型过滤 + 性能计时
- ✅ isPhotoFile: 照片文件类型判断(12种格式)
- ✅ isVideoFile: 视频文件类型判断(10种格式)

### HTTP测试文件
- 📄 tests/filesystem_api.http: 完整的API测试用例
  - 文件系统浏览测试(7个用例)
  - 磁盘使用情况测试(2个用例)
  - 文件/目录操作测试(9个用例)
  - 文件搜索测试(6个用例)
  - 错误场景测试(6个用例)
  - 健康检查(2个用例)
  - 实际应用场景示例(5个用例)

## 技术细节

### API设计
- 遵循RESTful规范
- 支持operation_id用于SSE事件去重
- 完整的错误处理和日志记录
- 支持Windows和Unix路径

### 支持的文件类型
- **照片**: .jpg, .jpeg, .png, .gif, .bmp, .webp, .heic, .heif, .raw, .cr2, .nef, .arw
- **视频**: .mp4, .avi, .mov, .wmv, .flv, .mkv, .webm, .m4v, .mpg, .mpeg

### 已实现的API端点
- GET /api/v1/filesystem/browse
- GET /api/v1/filesystem/disk-usage
- GET /api/v1/filesystem/search
- POST /api/v1/filesystem/directory
- DELETE /api/v1/filesystem/item
- PUT /api/v1/filesystem/item/move
- POST /api/v1/filesystem/item/copy

## 测试指南
使用 tests/filesystem_api.http 文件进行测试:
1. 确保后端服务运行在 localhost:8726
2. 使用 REST Client 或类似工具打开测试文件
3. 根据实际环境修改路径
4. 按顺序执行测试用例

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 00:30:01 +08:00
2025-06-12 21:31:17 +08:00
2025-08-05 16:47:23 +08:00

Argus

一个基于 Vue 3 + Go + Gin 构建的现代化相册管理系统,专注于图片的智能处理、管理和展示。

特性

  • 现代化界面: 基于 Vue 3 + Naive UI 的响应式前端界面
  • 智能图片处理: 支持图片压缩、格式转换、缩略图生成
  • EXIF 信息管理: 读取、编辑和删除图片的 EXIF 元数据
  • 多路径管理: 支持添加多个照片存储路径,灵活管理相册
  • 任务调度: 后台任务处理系统,支持大批量图片处理
  • 跨平台: 支持 Windows、Linux、macOS

🛠 技术栈

前端 (Vue 3)

  • 框架: Vue 3.5.13 + TypeScript 5.8
  • UI 库: Naive UI 2.41.1
  • 路由: Vue Router 4.5.0
  • 状态管理: Pinia 3.0.1
  • HTTP 客户端: Axios 1.9.0
  • 图标: @vicons/ionicons5 0.13.0
  • 构建工具: Vite 6.2.4
  • 开发工具:
    • ESLint 9.22.0 (代码规范)
    • Prettier 3.5.3 (代码格式化)
    • Vitest 3.1.1 (单元测试)

后端 (Go 1.24)

  • Web 框架: Gin 1.10.1
  • ORM: GORM 1.30.0
  • 日志: Zap 1.27.0 + Lumberjack 2.2.1
  • UUID: Google UUID 1.6.0
  • 文件类型检测: h2non/filetype 1.1.3
  • 跨域: gin-contrib/cors 1.7.5
  • 性能监控: gin-contrib/pprof 1.5.3

数据库

  • SQLite: 默认数据库,适合轻量级部署
  • MySQL: 可选的关系型数据库支持

图片处理工具

  • ExifTool: 图片 EXIF 信息读取和编辑
  • ImageMagick: 图片格式转换和基础处理
  • libvips: 高性能图片压缩和处理库

🚀 主要功能

已完成功能

  1. 资料库管理

    • 添加/删除图片存储路径
    • 启用/禁用指定路径
    • 路径有效性验证
  2. 图片处理

    • EXIF 信息读取、编辑、删除
    • 图片格式转换 (JPEG, PNG, WebP, AVIF 等)
    • 图片压缩和优化
    • 缩略图生成
    • 批量处理支持
  3. 后台任务系统

    • 任务队列管理
    • 图片索引和处理任务
    • 任务状态监控

计划中功能

  • 照片相似度检测
  • 人脸识别和分类
  • 智能标签系统
  • 照片地理位置管理
  • 全文搜索功能

📦 安装和配置

环境要求

  • Node.js 22.x 或更高版本
  • Go 1.24 或更高版本
  • SQLite 3.x

开发环境搭建

  1. 克隆项目
git clone https://github.com/yourusername/argus-go.git
cd argus-go
  1. 安装外部工具依赖

根据你的操作系统,下载并安装以下工具:

Windows:

  • 下载 ExifTool 并解压到 src/rear/tools/windows_amd64/exiftool/
  • 下载 ImageMagick Portable 并解压到 src/rear/tools/windows_amd64/imagemagick/
  • 下载 libvips 并解压到 src/rear/tools/windows_amd64/libvips/

Linux/macOS:

# Ubuntu/Debian
sudo apt-get install exiftool imagemagick libvips-tools

# macOS
brew install exiftool imagemagick vips
  1. 启动后端服务
cd src/rear
go mod download
go run main.go
  1. 启动前端服务
cd src/front/argus-front
npm install
npm run dev
  1. 访问应用

生产环境部署

  1. 构建前端
cd src/front/argus-front
npm run build
  1. 构建后端
cd src/rear
go build -o argus-server main.go
  1. 配置数据库 (可选,默认使用 SQLite)
  • 修改配置文件中的数据库连接信息
  • 支持 MySQL 数据库
  1. 启动服务
./argus-server

🤝 贡献指南

欢迎贡献代码!请遵循以下规范:

开发规范

  1. 代码风格

    • 前端: ESLint + Prettier 配置
    • 后端: Go 标准格式化工具
  2. 提交规范

    • 使用语义化提交信息
    • 每个 commit 应该是一个完整的功能点
  3. 测试要求

    • 新功能需要添加相应的单元测试
    • 确保现有测试通过

贡献流程

  1. Fork 项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 创建 Pull Request

📄 许可证

本项目采用 GPL 许可证 - 查看 LICENSE 文件了解详情

📞 联系方式

如有问题或建议,请通过以下方式联系:

🙏 致谢

感谢以下开源项目的支持:

Languages
C 67.6%
Go 7.2%
HTML 5.7%
Vue 5.4%
C++ 5.2%
Other 8.9%