scene/wwwroot/api/scene_import.dspy
2026-08-29 12:44:22 +08:00

28 lines
1.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 场景导入REST POST /api/scene_import.dspy
# 参数world_id目标世界+ file上传文件multipart或 rowsJSON 数组)
# 返回:{status, data:{success,total,success_count,fail}};错误 {code,message,field,detail}
debug(f'scene_import.dspy: START params_kw keys={list((params_kw or {}).keys())}')
params = dict(params_kw or {})
world_id = (params.get('world_id') or '').strip()
file_name = params.get('file_name') or ''
file_obj = params.get('file')
rows = params.get('rows')
if file_obj is not None:
try:
content = file_obj.read()
except Exception:
content = file_obj
parsed = parse_scene_file(content, file_name)
if 'rows' not in parsed:
return {'status': 'error', 'data': parsed}
result = await import_scenes({'world_id': world_id, 'file_name': file_name, 'rows': parsed['rows']})
else:
if not isinstance(rows, list):
return {'status': 'error', 'data': {'code': 'PARAM_REQUIRED', 'message': '缺少导入数据file 或 rows', 'field': 'rows', 'detail': ''}}
result = await import_scenes({'world_id': world_id, 'file_name': file_name, 'rows': rows})
if result.get('success'):
return {'status': 'ok', 'data': {'success': True, 'total': result.get('total', 0), 'success_count': result.get('success_count', 0), 'fail': result.get('fail', 0)}}
return {'status': 'error', 'data': result}