fix: P0 紧急修复 — 回退域对象 extra_meta → metadata #80
@@ -49,12 +49,12 @@ def _build_diagnosis(project_id: str, assets: list[Asset]) -> ProjectAssetDiagno
|
||||
asset
|
||||
for asset in ready_assets
|
||||
if (asset.quality_score is not None and asset.quality_score < 60)
|
||||
or asset.extra_meta.get("review_status") == "rejected"
|
||||
or asset.metadata.get("review_status") == "rejected"
|
||||
or asset.status == AssetStatus.ERROR
|
||||
]
|
||||
used_assets = [asset for asset in ready_assets if int(asset.extra_meta.get("generation_use_count") or 0) > 0]
|
||||
unused_assets = [asset for asset in ready_assets if int(asset.extra_meta.get("generation_use_count") or 0) == 0]
|
||||
pending_review_assets = [asset for asset in ready_assets if asset.extra_meta.get("review_status") == "pending_review"]
|
||||
used_assets = [asset for asset in ready_assets if int(asset.metadata.get("generation_use_count") or 0) > 0]
|
||||
unused_assets = [asset for asset in ready_assets if int(asset.metadata.get("generation_use_count") or 0) == 0]
|
||||
pending_review_assets = [asset for asset in ready_assets if asset.metadata.get("review_status") == "pending_review"]
|
||||
total_duration = round(sum(float(asset.duration or 0) for asset in video_assets), 2)
|
||||
estimated_video_count = max(
|
||||
0, min(len(video_assets), int(total_duration // 5) if total_duration else len(video_assets))
|
||||
|
||||
@@ -27,7 +27,7 @@ def _to_asset_response(item) -> AssetResponse:
|
||||
name=item.name,
|
||||
storage_key=item.storage_key,
|
||||
mime_type=item.mime_type,
|
||||
metadata=item.extra_meta,
|
||||
metadata=item.metadata,
|
||||
file_size=item.file_size,
|
||||
thumbnail_url=item.thumbnail_url,
|
||||
duration=item.duration,
|
||||
@@ -69,8 +69,8 @@ def list_assets(
|
||||
|
||||
|
||||
def _apply_asset_review_status(item, review_status: str):
|
||||
item.extra_meta = {
|
||||
**item.extra_meta,
|
||||
item.metadata = {
|
||||
**item.metadata,
|
||||
"review_status": review_status,
|
||||
}
|
||||
return item
|
||||
|
||||
@@ -2,9 +2,9 @@ from datetime import datetime, timezone
|
||||
|
||||
|
||||
def mark_asset_used_for_generation(asset) -> None:
|
||||
asset.extra_meta = {
|
||||
**asset.extra_meta,
|
||||
"generation_use_count": int(asset.extra_meta.get("generation_use_count") or 0) + 1,
|
||||
asset.metadata = {
|
||||
**asset.metadata,
|
||||
"generation_use_count": int(asset.metadata.get("generation_use_count") or 0) + 1,
|
||||
"last_used_at": datetime.now(timezone.utc).isoformat(),
|
||||
"review_status": asset.extra_meta.get("review_status") or "pending_review",
|
||||
"review_status": asset.metadata.get("review_status") or "pending_review",
|
||||
}
|
||||
|
||||
@@ -66,9 +66,9 @@ def extract_voice_task(self: Task, asset_id: str) -> dict:
|
||||
voice_storage_key = f"assets/{asset_id}/voice.mp3"
|
||||
storage_service.upload_file(voice_output_path, voice_storage_key)
|
||||
voice_url = storage_service.get_url(voice_storage_key)
|
||||
if asset.extra_meta is None:
|
||||
asset.extra_meta = {}
|
||||
asset.extra_meta["voice_url"] = voice_url
|
||||
if asset.metadata is None:
|
||||
asset.metadata = {}
|
||||
asset.metadata["voice_url"] = voice_url
|
||||
asset_repo.update(asset)
|
||||
session.commit()
|
||||
logger.info(f"Voice extraction completed for asset {asset_id}: {voice_url}")
|
||||
@@ -101,9 +101,9 @@ def extract_background_task(self: Task, asset_id: str) -> dict:
|
||||
bg_storage_key = f"assets/{asset_id}/background.mp3"
|
||||
storage_service.upload_file(bg_output_path, bg_storage_key)
|
||||
bg_url = storage_service.get_url(bg_storage_key)
|
||||
if asset.extra_meta is None:
|
||||
asset.extra_meta = {}
|
||||
asset.extra_meta["background_url"] = bg_url
|
||||
if asset.metadata is None:
|
||||
asset.metadata = {}
|
||||
asset.metadata["background_url"] = bg_url
|
||||
asset_repo.update(asset)
|
||||
session.commit()
|
||||
logger.info(f"Background extraction completed for asset {asset_id}: {bg_url}")
|
||||
|
||||
@@ -60,7 +60,7 @@ class SQLAlchemyAssetRepository:
|
||||
codec=asset.codec,
|
||||
status=asset.status.value,
|
||||
classification_status=asset.classification_status.value,
|
||||
classification_result=(json.dumps(asset.extra_meta) if asset.extra_meta else None),
|
||||
classification_result=(json.dumps(asset.metadata) if asset.metadata else None),
|
||||
quality_score=asset.quality_score,
|
||||
uploaded_by_user_id=asset.uploaded_by_user_id or "system",
|
||||
created_at=asset.created_at,
|
||||
@@ -85,7 +85,7 @@ class SQLAlchemyAssetRepository:
|
||||
model.codec = asset.codec
|
||||
model.status = asset.status.value
|
||||
model.classification_status = asset.classification_status.value
|
||||
model.classification_result = json.dumps(asset.extra_meta) if asset.extra_meta else None
|
||||
model.classification_result = json.dumps(asset.metadata) if asset.metadata else None
|
||||
model.quality_score = asset.quality_score
|
||||
model.uploaded_by_user_id = asset.uploaded_by_user_id or model.uploaded_by_user_id
|
||||
model.updated_at = datetime.now(timezone.utc)
|
||||
|
||||
Reference in New Issue
Block a user