scene/wwwroot/api/scene_import.dspy

27 lines
977 B
Plaintext

# 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