from __future__ import annotations from .shared import * @router.post("/lifecycle/assess-impact") async def assess_model_update_impact( request: LifecycleImpactRequest, current_user: User = Depends(get_current_user), tenant_id: int = Depends(get_tenant_id), db: AsyncSession = Depends(get_db), ): """评估模型升级对现有需求集合的影响。""" _ = current_user service = ModelLifecycleService(db) try: data = await service.assess_model_update_impact( old_model_version_id=request.old_model_version_id, new_model_version_id=request.new_model_version_id, tenant_id=tenant_id, ) return success_response(data=data) except ValueError as exc: return JSONResponse( status_code=404, content=error_response(ErrorCode.NOT_FOUND, str(exc)), ) except Exception as exc: return JSONResponse( status_code=500, content=error_response(ErrorCode.INTERNAL_ERROR, f"影响评估失败: {exc}"), ) @router.get("/lifecycle/impacts") async def list_lifecycle_impacts( limit: int = Query(default=50, ge=1, le=200), current_user: User = Depends(get_current_user), tenant_id: int = Depends(get_tenant_id), db: AsyncSession = Depends(get_db), ): """列出模型生命周期影响评估记录。""" _ = current_user service = ModelLifecycleService(db) try: data = await service.list_impacts(tenant_id=tenant_id, limit=limit) return success_response(data=data) except Exception as exc: return JSONResponse( status_code=500, content=error_response(ErrorCode.INTERNAL_ERROR, f"查询影响评估失败: {exc}"), ) @router.post("/lifecycle/{impact_id}/migration-tasks") async def create_migration_tasks( impact_id: int, request: GenerateMigrationTasksRequest, current_user: User = Depends(get_current_user), tenant_id: int = Depends(get_tenant_id), db: AsyncSession = Depends(get_db), ): """基于影响评估自动生成迁移任务建议。""" _ = current_user service = ModelLifecycleService(db) try: data = await service.generate_migration_tasks( impact_id=impact_id, tenant_id=tenant_id, max_tasks=request.max_tasks, ) return success_response(data=data) except ValueError as exc: return JSONResponse( status_code=404, content=error_response(ErrorCode.NOT_FOUND, str(exc)), ) except Exception as exc: return JSONResponse( status_code=500, content=error_response(ErrorCode.INTERNAL_ERROR, f"生成迁移任务失败: {exc}"), )