# api/pbl_team_bind_world.dspy — 契约端点:bind_team_to_world(设计 §3.3 接口 12) # 实现:pbl_domain_ext/api.py:bind_team_to_world(env.pbl_bind_team_to_world) # 错误分支:PBL_E_NOT_FOUND(world 基表不存在)/ PBL_E_DUPLICATE(同团队重复绑定) debug('pbl_team_bind_world.dspy: START params_kw=%s' % dict(params_kw)) _HTTP = {'PBL_E_VALIDATION': 400, 'PBL_E_NOT_FOUND': 404, 'PBL_E_DUPLICATE': 409, 'PBL_E_FORBIDDEN': 403, 'PBL_E_INTERNAL': 500} _ext = params_kw.get('ext_json') if isinstance(_ext, str) and _ext.strip(): try: _ext = json.loads(_ext) except Exception: pass try: _data = await pbl_bind_team_to_world( params_kw.get('world_id'), params_kw.get('team_id'), params_kw.get('tenant_id'), class_id=params_kw.get('class_id'), blueprint_id=params_kw.get('blueprint_id'), ext_json=_ext, ) debug('pbl_team_bind_world.dspy: OK world_id=%s team_id=%s' % (params_kw.get('world_id'), params_kw.get('team_id'))) return {'success': True, 'error_code': None, 'message': 'ok', 'data': _data} except Exception as exc: _code = getattr(exc, 'code', None) or 'PBL_E_INTERNAL' _msg = getattr(exc, 'message', None) or str(exc) _detail = getattr(exc, 'detail', None) or {} debug('pbl_team_bind_world.dspy: FAIL code=%s msg=%s' % (_code, _msg)) return {'success': False, 'error_code': _code, 'message': _msg, 'detail': _detail, 'http_status': _HTTP.get(_code, 500)}