feat(results): add generated video management

This commit is contained in:
Xiaoxia AI
2026-06-24 06:28:06 +08:00
parent 719dc12d3d
commit 8acbd6c8a7
11 changed files with 230 additions and 29 deletions
@@ -1,3 +1,5 @@
import json
from sqlalchemy.orm import Session
from packages.adapters.sqlalchemy_impl.models import GeneratedVideoModel
@@ -22,6 +24,9 @@ class SQLAlchemyGeneratedVideoRepository:
width=video.width,
height=video.height,
fps=video.fps,
status=video.status,
review_status=video.review_status,
generation_params=json.dumps(video.generation_params, ensure_ascii=False),
generated_at=video.generated_at,
created_at=video.created_at,
)
@@ -46,10 +51,24 @@ class SQLAlchemyGeneratedVideoRepository:
width=int(model.width or 0),
height=int(model.height or 0),
fps=model.fps,
status=getattr(model, "status", "completed"),
review_status=getattr(model, "review_status", "pending_review"),
generation_params=json.loads(getattr(model, "generation_params", "{}") or "{}"),
generated_at=model.generated_at,
created_at=model.created_at,
)
def update(self, video: GeneratedVideo) -> GeneratedVideo:
model = self.session.query(GeneratedVideoModel).filter(GeneratedVideoModel.id == video.id).first()
if model is None:
return video
model.status = video.status
model.review_status = video.review_status
model.generation_params = json.dumps(video.generation_params, ensure_ascii=False)
self.session.add(model)
self.session.commit()
return video
def list_by_project(self, project_id: str) -> list[GeneratedVideo]:
models = self.session.query(GeneratedVideoModel).filter(GeneratedVideoModel.project_id == project_id).all()
return [self.get(model.id) for model in models if self.get(model.id) is not None]
@@ -195,8 +195,12 @@ class GeneratedVideoModel(Base):
width = Column(Float, nullable=False)
height = Column(Float, nullable=False)
fps = Column(Float, nullable=False)
status = Column(String(20), nullable=False, default="completed", index=True)
review_status = Column(String(20), nullable=False, default="pending_review", index=True)
generation_params = Column(Text, nullable=False, default="{}")
generated_at = Column(DateTime, nullable=False, default=lambda: datetime.now(timezone.utc))
created_at = Column(DateTime, nullable=False, default=lambda: datetime.now(timezone.utc))
updated_at = Column(DateTime, nullable=True)
class TaskModel(Base):