Files
argus-go/src/rear/tests
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-08-21 21:46:43 +08:00
2025-08-21 21:46:43 +08:00
2025-08-21 21:46:43 +08:00
2025-08-21 21:46:43 +08:00
2025-08-23 00:43:52 +08:00
2025-08-21 21:46:43 +08:00
2025-09-25 21:48:53 +08:00
2025-08-21 21:46:43 +08:00

Argus HTTP API 测试文件

本目录包含了 Argus 照片管理系统的全套 HTTP API 测试文件,按功能模块进行分类。

📁 文件结构

tests/
├── README.md          # 本文档
├── base.http          # 基础功能测试(健康检查、环境配置)
├── library.http       # 图像库管理测试
├── photo.http         # 照片文件和详情接口测试
├── exif.http         # EXIF信息查询测试
├── user.http         # 用户管理接口测试
└── dev.http          # 开发调试接口测试

🚀 快速开始

1. 环境准备

在项目根目录创建 http-client.env.json 文件:

{
  "dev": {
    "baseUrl": "http://localhost:8080",
    "sampleHash": "your_actual_hash_here"
  },
  "prod": {
    "baseUrl": "https://your-production-domain.com", 
    "sampleHash": "production_hash_here"
  }
}

2. 启动服务器

go run .

3. 测试顺序

建议按以下顺序执行测试:

  1. 基础功能 (base.http)

    • 健康检查
    • API基础路由
  2. 图像库管理 (library.http)

    • 添加图像库路径
    • 启用图像库
    • 开始索引
    • 获取图像hash值
  3. 照片接口 (photo.http)

    • 使用实际hash测试图像访问
    • 测试各种缩略图尺寸
    • 获取图像详情
  4. EXIF查询 (exif.http)

    • 查询EXIF信息
    • 按相机、参数筛选
    • GPS信息查询
  5. 用户管理 (user.http)

    • 用户CRUD操作
    • 用户查询和筛选
  6. 开发调试 (dev.http)

    • 系统状态监控
    • 性能测试
    • 开发工具

📝 测试说明

变量替换

测试文件中使用了以下变量,需要替换为实际值:

  • {{baseUrl}}: 服务器地址 (如: http://localhost:8080)
  • {{apiBase}}: API基础路径 ({{baseUrl}}/api/v1)
  • {{sampleHash}}: 实际的图像hash值

获取实际Hash值

执行 library.http 中的图像库索引后,从响应中获取实际的图像hash值,然后替换测试文件中的 sample_hash_12345。

文件路径注意事项

  • Windows: 使用反斜杠 D:\\Pictures\\sample.jpg 或正斜杠 D:/Pictures/sample.jpg
  • Linux/Mac: 使用正斜杠 /home/user/Pictures/sample.jpg
  • 确保路径中的图像文件真实存在

🔧 IDE 配置

VS Code

安装 REST Client 扩展,可以直接在编辑器中执行HTTP请求。

IntelliJ IDEA / WebStorm

内置HTTP客户端支持,可以直接运行 .http 文件。

命令行工具

也可以使用 curl 执行测试:

# 健康检查
curl http://localhost:8080/health

# 获取图像
curl "http://localhost:8080/api/v1/photo/your_hash?format=thumbnail&size=400x400"

# 获取图像详情
curl "http://localhost:8080/api/v1/assets/your_hash"

📊 响应格式

成功响应

{
  "code": 200,
  "message": "Success", 
  "data": { ... }
}

错误响应

{
  "code": 404,
  "message": "Photo not found",
  "error": "详细错误信息"
}

图像文件响应

图像接口直接返回二进制数据,HTTP头包含正确的 Content-Type。

⚠️ 注意事项

  1. 数据安全: 测试前备份重要数据
  2. 路径检查: 确保文件路径存在且可访问
  3. 性能影响: 大量并发测试可能影响系统性能
  4. 开发接口: dev.http 中的接口仅供开发环境使用
  5. 权限要求: 某些操作可能需要特定权限

🐛 常见问题

连接失败

  • 检查服务器是否启动
  • 确认端口号正确
  • 检查防火墙设置

404 错误

  • 确认API路径正确
  • 检查图像hash是否有效
  • 验证图像文件是否存在

缩略图生成失败

  • 检查ImageMagick/LibVips安装
  • 确认原图文件可读
  • 查看系统日志获取详细错误

EXIF解析失败

  • 检查ExifTool安装
  • 确认图像文件包含EXIF数据
  • 验证文件格式支持

📚 相关文档