fix:修复角色管理职业,删除失败问题
This commit is contained in:
@@ -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": "角色删除成功"}
|
||||
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user