异常: 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] = None,
    code: Optional[str] = None,
    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:
            final_ticket = 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, initial-scale=1.0">
<title>扫码成功</title>
<style>
body {{ font-family: -apple-system, BlinkMacSystemFont, sans-serif; background: #0f172a; color: #e2e8f0; display: flex; align-items: center; justify-content: center; min-height: 100vh; margin: 0; padding: 20px; }}
.card {{ background: #1e293b; border-rad