diff --git a/__pycache__/main.cpython-313.pyc b/__pycache__/main.cpython-313.pyc index 345e089..d7ab15a 100644 Binary files a/__pycache__/main.cpython-313.pyc and b/__pycache__/main.cpython-313.pyc differ diff --git a/api/endpoints/__pycache__/assets_router.cpython-313.pyc b/api/endpoints/__pycache__/assets_router.cpython-313.pyc index 1f6c07e..208aa91 100644 Binary files a/api/endpoints/__pycache__/assets_router.cpython-313.pyc and b/api/endpoints/__pycache__/assets_router.cpython-313.pyc differ diff --git a/api/endpoints/__pycache__/character_router.cpython-313.pyc b/api/endpoints/__pycache__/character_router.cpython-313.pyc index f1ac497..f1780ef 100644 Binary files a/api/endpoints/__pycache__/character_router.cpython-313.pyc and b/api/endpoints/__pycache__/character_router.cpython-313.pyc differ diff --git a/api/endpoints/assets_router.py b/api/endpoints/assets_router.py index 5700a5d..4c25cd5 100644 --- a/api/endpoints/assets_router.py +++ b/api/endpoints/assets_router.py @@ -72,10 +72,10 @@ async def delete_asset( async def get_assets(request: Request, dao: DAO = Depends(get_dao), type: Optional[str] = None, limit: int = 10, offset: int = 0, current_user: dict = Depends(get_current_user), project_id: Optional[str] = Depends(get_project_id)) -> AssetsResponse: logger.info(f"get_assets called. Limit: {limit}, Offset: {offset}") - user_id_filter = str(current_user["_id"]) + user_id_filter = current_user["id"] if project_id: project = await dao.projects.get_project(project_id) - if not project or str(current_user["_id"]) not in project.members: + if not project or str(current_user["id"]) not in project.members: raise HTTPException(status_code=403, detail="Project access denied") user_id_filter = None diff --git a/api/endpoints/character_router.py b/api/endpoints/character_router.py index da7f101..c9e4394 100644 --- a/api/endpoints/character_router.py +++ b/api/endpoints/character_router.py @@ -90,22 +90,24 @@ async def get_character_by_id(character_id: str, request: Request, dao: DAO = De @router.post("/", response_model=Character) async def create_character( char_req: CharacterCreateRequest, + project_id: Optional[str] = Depends(get_project_id), dao: DAO = Depends(get_dao), current_user: dict = Depends(get_current_user) ) -> Character: logger.info("create_character called") - + char_req.project_id = project_id char_data = char_req.model_dump() char_data["created_by"] = str(current_user["_id"]) if "id" not in char_data: char_data["id"] = None - if char_req.project_id: - project = await dao.projects.get_project(char_req.project_id) + if project_id: + project = await dao.projects.get_project(project_id) if not project or str(current_user["_id"]) not in project.members: raise HTTPException(status_code=403, detail="Project access denied") new_char = Character(**char_data) + new_char.avatar_asset_id = new_char.avatar_image.split("/")[-1] created_char = await dao.chars.add_character(new_char) return created_char diff --git a/api/service/__pycache__/generation_service.cpython-313.pyc b/api/service/__pycache__/generation_service.cpython-313.pyc index 4139f6a..f088e87 100644 Binary files a/api/service/__pycache__/generation_service.cpython-313.pyc and b/api/service/__pycache__/generation_service.cpython-313.pyc differ diff --git a/api/service/generation_service.py b/api/service/generation_service.py index 1cc962f..37dbebe 100644 --- a/api/service/generation_service.py +++ b/api/service/generation_service.py @@ -169,11 +169,13 @@ class GenerationService: - Focus on lighting, texture, and composition. """ if generation.linked_character_id is not None: - char_info = await self.dao.chars.get_character(generation.linked_character_id, with_image_data=True) + char_info = await self.dao.chars.get_character(generation.linked_character_id) if char_info is None: raise Exception(f"Character ID {generation.linked_character_id} not found") if generation.use_profile_image: - media_group_bytes.append(char_info.character_image_data) + avatar_asset = await self.dao.assets.get_asset(char_info.avatar_asset_id) + if avatar_asset: + media_group_bytes.append(avatar_asset.data) # generation_prompt = generation_prompt.replace("$char_bio_inserted", f"1. CHARACTER BIO (Must be strictly followed): {char_info.character_bio}") reference_assets = await self.dao.assets.get_assets_by_ids(generation.assets_list) diff --git a/main.py b/main.py index 9f70ffa..1229f02 100644 --- a/main.py +++ b/main.py @@ -143,10 +143,10 @@ async def lifespan(app: FastAPI): # 2. ЗАПУСК БОТА (в фоне) # Важно: handle_signals=False, чтобы бот не перехватывал сигналы остановки у uvicorn # Мы НЕ передаем сюда dao=..., так как он уже подключен через Middleware выше - polling_task = asyncio.create_task( - dp.start_polling(bot, handle_signals=False) - ) - print("🤖 Bot polling started") + # polling_task = asyncio.create_task( + # dp.start_polling(bot, handle_signals=False) + # ) + # print("🤖 Bot polling started") yield diff --git a/models/Character.py b/models/Character.py index 80ef559..2af8076 100644 --- a/models/Character.py +++ b/models/Character.py @@ -7,6 +7,7 @@ from pydantic_core.core_schema import computed_field class Character(BaseModel): id: Optional[str] = None name: str + avatar_asset_id: Optional[str] = None avatar_image: Optional[str] = None character_image_data: Optional[bytes] = None character_image_doc_tg_id: Optional[str] = None @@ -14,4 +15,3 @@ class Character(BaseModel): character_bio: Optional[str] = None created_by: Optional[str] = None project_id: Optional[str] = None - diff --git a/models/__pycache__/Character.cpython-313.pyc b/models/__pycache__/Character.cpython-313.pyc index 4c1ed63..191ad85 100644 Binary files a/models/__pycache__/Character.cpython-313.pyc and b/models/__pycache__/Character.cpython-313.pyc differ diff --git a/repos/__pycache__/assets_repo.cpython-313.pyc b/repos/__pycache__/assets_repo.cpython-313.pyc index ead12a4..8bee858 100644 Binary files a/repos/__pycache__/assets_repo.cpython-313.pyc and b/repos/__pycache__/assets_repo.cpython-313.pyc differ diff --git a/repos/__pycache__/user_repo.cpython-313.pyc b/repos/__pycache__/user_repo.cpython-313.pyc index e36b862..35baa97 100644 Binary files a/repos/__pycache__/user_repo.cpython-313.pyc and b/repos/__pycache__/user_repo.cpython-313.pyc differ diff --git a/repos/assets_repo.py b/repos/assets_repo.py index 5249723..deaeac1 100644 --- a/repos/assets_repo.py +++ b/repos/assets_repo.py @@ -70,7 +70,10 @@ class AssetsRepo: # if not with_data: args["data"] = 0; args["thumbnail"] = 0 # So list DOES NOT return thumbnails by default. args["thumbnail"] = 0 - + if created_by: + filter["created_by"] = created_by + filter['project_id'] = None + if project_id: filter["project_id"] = project_id