调整项目库拆帧与长帧序列加载
- 删除项目库右上角独立新建项目入口,保留导入视频/DICOM 自动建项目流程 - 视频项目支持已生成帧后的重新生成帧入口,并提示会清空旧帧、标注和 mask - 后端重新拆帧任务开始前清理旧帧、旧标注和旧 mask,避免重复帧序列 - 项目帧列表接口默认返回完整帧序列,避免工作区总帧数被 1000 条默认 limit 截断 - 增加可选 docker-compose.gpu.yml,并补充 Docker 使用本机 GPU 的前提和启动说明 - 更新项目库、API 映射、恢复演示文案、后端媒体/项目测试和前端文档
This commit is contained in:
@@ -11,7 +11,7 @@ from typing import Any
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from minio_client import BUCKET_NAME, download_file, get_minio_client, upload_file
|
||||
from models import Frame, ProcessingTask, Project
|
||||
from models import Annotation, Frame, Mask, ProcessingTask, Project
|
||||
from progress_events import publish_task_progress_event
|
||||
from services.frame_parser import (
|
||||
extract_thumbnail,
|
||||
@@ -109,6 +109,16 @@ def _frame_sequence_metadata(
|
||||
}
|
||||
|
||||
|
||||
def _clear_existing_project_outputs(db: Session, project: Project) -> None:
|
||||
"""Remove stale frame sequence and annotations before regenerating frames."""
|
||||
annotation_ids = db.query(Annotation.id).filter(Annotation.project_id == project.id)
|
||||
db.query(Mask).filter(Mask.annotation_id.in_(annotation_ids)).delete(synchronize_session=False)
|
||||
db.query(Annotation).filter(Annotation.project_id == project.id).delete(synchronize_session=False)
|
||||
db.query(Frame).filter(Frame.project_id == project.id).delete(synchronize_session=False)
|
||||
project.thumbnail_url = None
|
||||
db.commit()
|
||||
|
||||
|
||||
def _ensure_not_cancelled(db: Session, task: ProcessingTask) -> None:
|
||||
db.refresh(task)
|
||||
if task.status == TASK_STATUS_CANCELLED:
|
||||
@@ -169,6 +179,7 @@ def run_parse_media_task(db: Session, task_id: int) -> dict[str, Any]:
|
||||
|
||||
_ensure_not_cancelled(db, task)
|
||||
project.status = PROJECT_STATUS_PARSING
|
||||
_clear_existing_project_outputs(db, project)
|
||||
_set_task_state(db, task, status=TASK_STATUS_RUNNING, progress=5, message="后台解析已启动", started=True)
|
||||
|
||||
payload = task.payload or {}
|
||||
|
||||
Reference in New Issue
Block a user