异常: 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="扫码登录票据(企微 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:
            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; j