异常: ticket={ticket[:8]}..., error={e}", exc_info=True)
        raise AppException(1005, f"轮询扫码状态失败: {str(e)}")


# --------------------------------------------------------------------------
# GET|POST /api/auth_qrcode/scan — 企微 OAuth code 回调
# --------------------------------------------------------------------------
@router.api_route("/scan", methods=["GET", "POST"], response_model=None)
async def scan_qrcode(
    body: Optional[QrcodeScanRequest] = None,
    ticket: Optional[str] = Query(None, description="扫码登录票据(兼容旧参数名)"),
    state: Optional[str] = Query(None, description="扫码登录票据(企微 OAuth state 标准参数名)"),
    code: Optional[str] = Query(None, description="企微 OAuth 授权码"),
    redis_client: aioredis.Redis = Depends(dep_redis),
):
    """处理企微 OAuth2 扫码回调。

    企微 OAuth2 标准回调走 **GET** 带 query 参数 `?code=xxx&state=<ticket>`,
    本端点同时支持 GET 和 POST(POST 兼容内部调用 / 旧前端代码)。

    GET 模式 (企微 OAuth2 标准回调):
      - ticket ← query.state
      - code   ← query.code
      - 自动 302 跳转到 /itdesk/ 或 /itadmin/ 或 /itagent/(按角色)
    POST 模式 (内部调用):
      - ticket ← body.ticket
      - code   ← body.code

    无需鉴权(此端点被企微服务器回调,带 code + ticket)。
    用 code 换取企微 userid,然后写 Redis scan:{ticket} 等待 confirm 端点。

    dev 模式: code 形如 "dev:dev-user-001",跳过企微 API 调用。
    """
    try:
        # 1. 解析参数:POST 用 body,GET 用 query
        if body is not None:
            final_ticket = body.ticket
            final_code = body.code
        else:
            # 优先用 state(企微 OAuth 标准),回退到 ticket(兼容旧调用)
            final_ticket = state or ticket
            final_code = code

        if not final_ticket or not final_code:
            logger.warning(f"扫码参数缺失: ticket={final_ticket!r}, code={final_code!r}")
            raise AppException(1000, "缺少 ticket 或 code 参数")

        service = _get_qrcode_service(redis_client)
        result = await service.process_scan(ticket=final_ticket, code=final_code)

        # GET 请求(企微 OAuth 回调)→ 重定向到前端选择页
        # 因为企微 OAuth 流程不在这个端点完成最终登录,只标记 scanned,
        # 等用户在坐席端点 confirm 后才能拿到 token。
        # 但企微 WebView 期望看到跳转后的页面,所以这里给个提示页。
        from fastapi.responses import HTMLResponse
        if code is not None and ticket is not None and body is None:
            # GET 模式:渲染一个 "扫码成功" 的 HTML 提示页 + 引导用户到登录页
            html = f"""<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, in