phone = params_kw.cellphone if phone is None: return { "status": "error", "data": { "message": "没有收到手机号" } } try: result = await sms_engine.generate_sms_code(phone) if result is None: return { "status": "error", "data": { "message": "短信发送失败,请稍后重试" } } code_id, code = result debug(f'sms sent: code_id={code_id}, phone={phone}') return { "status": "ok", "data": { "message": "验证码已发送", "key": code_id } } except AttributeError: # sms_engine is None or missing generate_sms_code — environment not configured code = '123456' code_id = getID() from datetime import datetime, timedelta expire_time = datetime.now() + timedelta(minutes=5) env = request._run_ns async with get_sor_context(env, 'smssend') as sor: await sor.C('validatecode', { 'id': code_id, 'vcode': code, 'expire_time': expire_time, 'del_flg': '0', 'create_at': datetime.now() }) debug(f'TEST MODE: code_id={code_id}, code={code}, phone={phone} (sms_engine unavailable)') return { "status": "ok", "data": { "message": f"测试模式: 验证码 {code}", "key": code_id } } except Exception as e: debug(f'gen_sms_code error: {e}') exception(f'gen_sms_code error for {phone}: {e}') return { "status": "error", "data": { "message": f"发送验证码出错: {e}" } }