""" 场景挖掘智能推荐服务路由 包含以下接口: 1. /api/v1/value/scenario-recommendation - 潜在场景推荐接口 2. /api/v1/value/scenario-optimization - 存量场景优化建议接口 """ from fastapi import APIRouter from app.core.response import success_response, APIResponse from app.schemas.value import ( ScenarioRecommendationRequest, ScenarioRecommendationResponse, ) from app.schemas.scenario_optimization import ( ScenarioOptimizationRequest, ScenarioOptimizationResponse, ) from app.services.scenario_recommendation_service import ScenarioRecommendationService from app.services.scenario_optimization_service import ScenarioOptimizationService from app.utils.logger import logger router = APIRouter(prefix="/value", tags=["场景挖掘"]) @router.post( "/scenario-recommendation", response_model=APIResponse[ScenarioRecommendationResponse], summary="潜在场景推荐接口", description="基于企业背景、数据资产清单和存量场景,使用 AI 推荐潜在的数据应用场景" ) async def scenario_recommendation(request: ScenarioRecommendationRequest): """ 潜在场景推荐接口 基于企业背景、数据资产清单和存量场景,使用大模型技术智能推荐潜在的数据应用场景 Args: request: 场景推荐请求,包含企业信息、数据资产、存量场景等 Returns: 推荐的场景列表 """ logger.info( f"收到场景推荐请求 - 项目ID: {request.project_id}, " f"资产数: {len(request.data_assets)}, 存量场景数: {len(request.existing_scenarios)}" ) try: # 调用服务推荐场景 result = await ScenarioRecommendationService.recommend(request) # 返回成功响应 return success_response( data=result, message="场景推荐成功" ) except Exception as e: # 异常已在全局异常处理器中处理 logger.exception(f"场景推荐接口处理失败: {str(e)}") raise @router.post( "/scenario-optimization", response_model=APIResponse[ScenarioOptimizationResponse], summary="存量场景优化建议接口", description="基于存量场景信息和截图,分析场景不足,提供优化建议" ) async def scenario_optimization(request: ScenarioOptimizationRequest): """ 存量场景优化建议接口 基于存量场景信息和截图,使用大模型技术分析场景不足,提供优化建议 Args: request: 场景优化请求,包含存量场景、数据资产、企业信息、场景截图等 Returns: 优化建议列表 """ logger.info( f"收到场景优化请求 - 存量场景数: {len(request.existing_scenarios)}, " f"数据资产数: {len(request.data_assets) if request.data_assets else 0}, " f"场景截图数: {len(request.scenario_screenshots) if request.scenario_screenshots else 0}" ) try: # 调用服务优化场景 result = await ScenarioOptimizationService.optimize(request) # 返回成功响应 return success_response( data=result, message="场景优化成功" ) except Exception as e: # 异常已在全局异常处理器中处理 logger.exception(f"场景优化接口处理失败: {str(e)}") raise