312dad7497
六边形架构分层实现:
Domain 层:
- DuplicationRecord / DuplicateSegment 实体
- 状态机生命周期 (pending→processing→completed/failed)
Ports 层:
- DuplicationRecordRepository Protocol
Adapters 层:
- SQLAlchemyDuplicationRecordRepository 完整实现
- DuplicationRecordModel / DuplicationSegmentModel ORM 模型
Application 层:
- UploadForDuplicationUseCase (上传查重)
- ListDuplicationRecordsUseCase (记录列表)
- GetDuplicationDetailUseCase (详情查询)
- DeleteDuplicationRecordUseCase (删除)
- RetryDuplicationUseCase (重新查重)
API 层:
- 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 (重新查重)
Alembic 迁移:
- 011_add_duplication_tables.py (duplication_records + duplication_segments)
API 契约与前端 feat/phase2-duplication-ui (PR#75) 完全对齐。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
48 lines
1.1 KiB
Python
48 lines
1.1 KiB
Python
"""Domain package for core business entities and rules."""
|
|
|
|
from .classification import (
|
|
AssetClassification,
|
|
ClassificationJob,
|
|
ClassificationJobStatus,
|
|
)
|
|
from .editing_mode import EditingMode
|
|
from .entities import (
|
|
Asset,
|
|
AssetLibrary,
|
|
AssetLibraryKind,
|
|
AssetStatus,
|
|
ClassificationStatus,
|
|
IngestJob,
|
|
IngestJobStatus,
|
|
Project,
|
|
User,
|
|
)
|
|
from .duplication import DuplicateSegment, DuplicationRecord
|
|
from .generated_video import GeneratedVideo
|
|
from .generation_task import GenerationTask, GenerationTaskStatus
|
|
from .title_library import TitleLibraryItem
|
|
from .voice_library import VoiceLibraryItem
|
|
|
|
__all__ = [
|
|
"Asset",
|
|
"AssetClassification",
|
|
"AssetLibrary",
|
|
"AssetLibraryKind",
|
|
"AssetStatus",
|
|
"ClassificationJob",
|
|
"ClassificationJobStatus",
|
|
"ClassificationStatus",
|
|
"DuplicateSegment",
|
|
"DuplicationRecord",
|
|
"EditingMode",
|
|
"GeneratedVideo",
|
|
"GenerationTask",
|
|
"GenerationTaskStatus",
|
|
"IngestJob",
|
|
"IngestJobStatus",
|
|
"Project",
|
|
"User",
|
|
"TitleLibraryItem",
|
|
"VoiceLibraryItem",
|
|
]
|