# pbl_blueprint_list.dspy —— 蓝图列表(分页 + 租户隔离 + 状态/学科/关键词过滤) debug('pbl_blueprint_list.dspy: START params_kw=%s' % dict(params_kw)) try: tenant_id = params_kw.get('tenant_id') or None res = await pbl_blueprint_list(dict(params_kw), request=request, tenant_id=tenant_id) return res except PblBlueprintError as e: debug('pbl_blueprint_list.dspy: BIZ_ERR %s' % e.to_dict()) return e.to_dict() except Exception as e: exception('pbl_blueprint_list.dspy: %s' % format_exc()) return {'status': 'error', 'code': 'PBL_INTERNAL', 'message': str(e), 'total': 0, 'data': []}