# scene_import.dspy: 场景导入(文件上传 → 解析 → 批量落库 → 写导入记录) world_id = params_kw.get('world_id') file = params_kw.get('file') file_name = params_kw.get('file_name') or '' content = None if file is not None: if hasattr(file, 'file'): file_name = file_name or getattr(file, 'filename', '') or '' try: content = file.file.read() except Exception: content = None elif hasattr(file, 'read'): try: content = file.read() except Exception: content = None else: content = file if content is None: return {'success': False, 'message': '未接收到上传文件'} rows = parse_scene_file(content, file_name) if rows is None: return {'success': False, 'message': '文件解析失败,仅支持 JSON 数组 / JSON Lines / CSV'} result = await import_scenes({'world_id': world_id, 'file_name': file_name, 'rows': rows}) return result