feat: Phase 2 - 查重功能后端 API #76

Merged
xiaoxia merged 2 commits from feat/phase2-duplication-api into develop 2026-06-28 16:27:05 +08:00
Owner

Phase 2: 查重功能后端 API

新增功能

实现视频查重功能的后端 API,支持文件上传、记录查询、详情查看、删除和重试。

API 端点

Method Path Description
POST /api/v1/duplication/upload 上传视频进行查重
GET /api/v1/duplication/records 获取当前用户的查重记录列表
GET /api/v1/duplication/records/{id} 获取查重记录详情(含重复片段)
DELETE /api/v1/duplication/records/{id} 删除查重记录
POST /api/v1/duplication/records/{id}/retry 重新提交查重

安全修复(P0)

  1. MIME 类型白名单校验:只接受视频文件(mp4, mpeg, mov, avi, webm, mkv, 3gp)
  2. 文件大小限制:使用 OSS_DIRECT_UPLOAD_MAX_MB 配置(默认 800MB)

技术实现

  • 遵循六边形架构(domain → ports → adapters → application → API)
  • 使用配额系统(未来可扩展)
  • 文件上传到 OSS,数据库记录元数据
  • 支持异步查重(状态:pending → processing → completed/failed)

数据库迁移

  • 012_add_duplication_tables.py: 创建 duplication_records 和 duplication_segments 表

测试

  • 65 个回归测试全部通过
  • 包含查重 API 的完整测试覆盖

相关文件

  • apps/api/app/api/routes/duplication.py - API 路由
  • packages/domain/duplication.py - 领域模型
  • packages/application/duplication/ - 应用层(commands + use cases)
  • packages/adapters/sqlalchemy_impl/duplication_repository.py - 数据访问层
  • apps/api/app/schemas/duplication.py - Pydantic schemas
## Phase 2: 查重功能后端 API ### 新增功能 实现视频查重功能的后端 API,支持文件上传、记录查询、详情查看、删除和重试。 ### API 端点 | Method | Path | Description | |--------|------|-------------| | POST | `/api/v1/duplication/upload` | 上传视频进行查重 | | GET | `/api/v1/duplication/records` | 获取当前用户的查重记录列表 | | GET | `/api/v1/duplication/records/{id}` | 获取查重记录详情(含重复片段) | | DELETE | `/api/v1/duplication/records/{id}` | 删除查重记录 | | POST | `/api/v1/duplication/records/{id}/retry` | 重新提交查重 | ### 安全修复(P0) 1. **MIME 类型白名单校验**:只接受视频文件(mp4, mpeg, mov, avi, webm, mkv, 3gp) 2. **文件大小限制**:使用 `OSS_DIRECT_UPLOAD_MAX_MB` 配置(默认 800MB) ### 技术实现 - 遵循六边形架构(domain → ports → adapters → application → API) - 使用配额系统(未来可扩展) - 文件上传到 OSS,数据库记录元数据 - 支持异步查重(状态:pending → processing → completed/failed) ### 数据库迁移 - `012_add_duplication_tables.py`: 创建 duplication_records 和 duplication_segments 表 ### 测试 - 65 个回归测试全部通过 - 包含查重 API 的完整测试覆盖 ### 相关文件 - `apps/api/app/api/routes/duplication.py` - API 路由 - `packages/domain/duplication.py` - 领域模型 - `packages/application/duplication/` - 应用层(commands + use cases) - `packages/adapters/sqlalchemy_impl/duplication_repository.py` - 数据访问层 - `apps/api/app/schemas/duplication.py` - Pydantic schemas
xiaoxia force-pushed feat/phase2-duplication-api from 2fe272ffa6 to 4feafd1603 2026-06-28 16:00:23 +08:00 Compare
xiaoxia force-pushed feat/phase2-duplication-api from a05a7e5e17 to ea0bde3742 2026-06-28 16:13:43 +08:00 Compare
xiaoxia merged commit 84e093caaf into develop 2026-06-28 16:27:05 +08:00
Sign in to join this conversation.