fix: harden memoir image generation flow
This commit is contained in:
@@ -14,6 +14,12 @@ from database.models import Chapter as ChapterModel
|
||||
from database.models import User as UserModel
|
||||
from middleware.auth import get_current_user
|
||||
from agents.prompts.memory_prompts import CHAPTER_CATEGORIES, CHAPTER_ORDER, STAGE_TO_ORDER
|
||||
from services.memoir_images.schema import (
|
||||
completed_image_assets,
|
||||
IMAGE_STATUS_COMPLETED,
|
||||
normalize_image_assets,
|
||||
)
|
||||
from services.memoir_images.settings import MemoirImageSettings
|
||||
from services.memoir_images.storage import (
|
||||
TencentCosStorageService,
|
||||
normalize_cos_url,
|
||||
@@ -29,9 +35,13 @@ def _normalize_image_assets(images: list[dict] | None) -> list[dict]:
|
||||
region = os.getenv("TENCENT_COS_REGION", "")
|
||||
base_url = os.getenv("TENCENT_COS_BASE_URL", "")
|
||||
storage = TencentCosStorageService.from_env()
|
||||
settings = MemoirImageSettings.from_env()
|
||||
source_assets = normalize_image_assets(images)
|
||||
if not settings.enabled:
|
||||
source_assets = completed_image_assets(source_assets)
|
||||
normalized_assets: list[dict] = []
|
||||
|
||||
for item in (images or []):
|
||||
for item in source_assets:
|
||||
asset = dict(item)
|
||||
normalized_url = normalize_cos_url(
|
||||
asset.get("url"),
|
||||
@@ -40,12 +50,13 @@ def _normalize_image_assets(images: list[dict] | None) -> list[dict]:
|
||||
base_url=base_url,
|
||||
)
|
||||
storage_key = resolve_image_storage_key(asset)
|
||||
if asset.get("status") == "completed" and storage_key:
|
||||
if asset.get("status") == IMAGE_STATUS_COMPLETED and storage_key:
|
||||
try:
|
||||
asset["url"] = storage.get_download_url(storage_key)
|
||||
except Exception as exc:
|
||||
logger.warning("章节图片签名失败: key=%s, error=%s", storage_key, exc)
|
||||
asset["url"] = normalized_url
|
||||
asset["error"] = asset.get("error") or "image delivery unavailable"
|
||||
else:
|
||||
asset["url"] = normalized_url
|
||||
asset.pop("storage_key", None)
|
||||
|
||||
Reference in New Issue
Block a user