From 87b41b8d81cc1e52257083851c06d992207917c5 Mon Sep 17 00:00:00 2001 From: xiamuceer Date: Fri, 9 Jan 2026 21:19:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E8=81=8C=E4=B8=9A=EF=BC=8C=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/api/characters.py | 15 +++++++++++++++ backend/app/api/wizard_stream.py | 6 +++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/backend/app/api/characters.py b/backend/app/api/characters.py index 63c52ce..cfb487e 100644 --- a/backend/app/api/characters.py +++ b/backend/app/api/characters.py @@ -488,6 +488,8 @@ async def delete_character( db: AsyncSession = Depends(get_db) ): """删除角色""" + from app.models.career import CharacterCareer + result = await db.execute( select(Character).where(Character.id == character_id) ) @@ -500,9 +502,22 @@ async def delete_character( user_id = getattr(request.state, 'user_id', None) await verify_project_access(character.project_id, user_id, db) + # 清理角色-职业关联关系 + career_relations_result = await db.execute( + select(CharacterCareer).where(CharacterCareer.character_id == character_id) + ) + career_relations = career_relations_result.scalars().all() + + for relation in career_relations: + await db.delete(relation) + logger.info(f"删除角色职业关联:character_id={character_id}, career_id={relation.career_id}, type={relation.career_type}") + + # 删除角色 await db.delete(character) await db.commit() + logger.info(f"删除角色成功:{character.name} (ID: {character_id}), 清理了 {len(career_relations)} 条职业关联") + return {"message": "角色删除成功"} diff --git a/backend/app/api/wizard_stream.py b/backend/app/api/wizard_stream.py index dee9669..cbdeb4e 100644 --- a/backend/app/api/wizard_stream.py +++ b/backend/app/api/wizard_stream.py @@ -361,7 +361,7 @@ async def career_system_generator( rules=world_data.get('rules', '未设定') ) - estimated_total = 8000 + estimated_total = 5000 MAX_CAREER_RETRIES = 3 # 最多重试3次 career_retry_count = 0 career_generation_success = False @@ -685,7 +685,7 @@ async def characters_generator( yield await tracker.generating( current_chars=0, - estimated_total=1000, + estimated_total=BATCH_SIZE * 800, message=f"生成第{batch_idx+1}/{total_batches}批角色 ({current_batch_size}个)", retry_count=retry_count, max_retries=MAX_RETRIES @@ -733,7 +733,7 @@ async def characters_generator( accumulated_text = "" chunk_count = 0 - estimated_total = 1000 + estimated_total = BATCH_SIZE * 800 async for chunk in user_ai_service.generate_text_stream( prompt=prompt,