feat: Separate asset origin type from content type for improved asset categorization and handling.

This commit is contained in:
xds
2026-02-07 14:41:03 +03:00
parent ce87ac7edb
commit 305ad24576
13 changed files with 53 additions and 17 deletions

View File

@@ -9,7 +9,7 @@ from starlette.requests import Request
from starlette.responses import Response, JSONResponse
from api.models.AssetDTO import AssetsResponse, AssetResponse
from models.Asset import Asset, AssetType
from models.Asset import Asset, AssetType, AssetContentType
from repos.dao import DAO
from api.dependency import get_dao
import asyncio
@@ -105,7 +105,8 @@ async def upload_asset(
asset = Asset(
name=file.filename or "upload",
type=AssetType.IMAGE,
type=AssetType.UPLOADED,
content_type=AssetContentType.IMAGE,
linked_char_id=linked_char_id,
data=data,
thumbnail=thumbnail_bytes
@@ -119,6 +120,7 @@ async def upload_asset(
id=asset.id,
name=asset.name,
type=asset.type.value if hasattr(asset.type, "value") else asset.type,
content_type=asset.content_type.value if hasattr(asset.content_type, "value") else asset.content_type,
linked_char_id=asset.linked_char_id,
created_at=asset.created_at,
url=asset.url
@@ -145,7 +147,7 @@ async def regenerate_thumbnails(dao: DAO = Depends(get_dao)):
updated = 0
for asset in assets:
if asset.type == AssetType.IMAGE and asset.data :
if asset.content_type == AssetContentType.IMAGE and asset.data :
try:
thumb = await asyncio.to_thread(create_thumbnail, asset.data)
if thumb:

View File

@@ -9,7 +9,8 @@ from models.Asset import Asset
class AssetResponse(BaseModel):
id: str
name: str
type: str
type: str # uploaded / generated
content_type: str # image / prompt
linked_char_id: Optional[str] = None
created_at: datetime
url: Optional[str] = None

View File

@@ -11,7 +11,7 @@ from adapters.Exception import GoogleGenerationException
from adapters.google_adapter import GoogleAdapter
from api.models.GenerationRequest import GenerationRequest, GenerationResponse
# Импортируйте ваши модели DAO, Asset, Generation корректно
from models.Asset import Asset, AssetType
from models.Asset import Asset, AssetType, AssetContentType
from models.Generation import Generation, GenerationStatus
from models.enums import AspectRatios, Quality, GenType
from repos.dao import DAO
@@ -174,7 +174,7 @@ class GenerationService:
# Извлекаем данные (bytes) из ассетов для отправки в Gemini
for asset in reference_assets:
if asset.type != AssetType.IMAGE:
if asset.content_type != AssetContentType.IMAGE:
continue
img_data = None
@@ -249,7 +249,8 @@ class GenerationService:
new_asset = Asset(
name=f"Generated_{generation.linked_character_id}",
type=AssetType.IMAGE,
type=AssetType.GENERATED,
content_type=AssetContentType.IMAGE,
linked_char_id=generation.linked_character_id,
data=None, # Not storing bytes in DB anymore
minio_object_name=filename,