27 lines
977 B
Plaintext
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
|