)

        # 4. 创建 Token(用扫码用户身份,roles 默认为 agent)
        from app.services.token_service import TokenService

        token_service = TokenService(self.redis)
        roles = ["agent"]
        token = await token_service.create_token(
            employee_id=employee_id,
            name=name,
            roles=roles,
            login_source="qrcode",
        )

        # 5. 写 Redis confirm 结果(TTL 60s,前端轮询拿到后过期)
        confirm_payload = {
            "token": token,
            "confirmed_at": datetime.now().isoformat(),
            "roles": roles,
            "employee_id": employee_id,
            "name": name,
        }
        await self.redis.setex(
            self._confirm_key(ticket),
            CONFIRM_TTL_SECONDS,
            json.dumps(confirm_payload, ensure_ascii=False),
        )

        logger.info(
            f"扫码确认成功: ticket={ticket[:8]}..., "
            f"employee_id={employee_id}, current_user={current_user_id}"
        )

        return {
            "token": token,
            "employee_id": employee_id,
            "name": name,
            "roles": roles,
            "require_otp": require_otp,
        }

    # ------------------------------------------------------------------
    # poll: 轮询扫码状态
    # ------------------------------------------------------------------
    async def get_poll_state(self, ticket: str) -> Dict[str, Any]:
        """查询票据当前状态。

        优先级: confirmed > scanned > ticket exists(等待) > 不存在(过期)

        Returns:
            Dict: 包含 status / employee_id / name / token
        """
        # 1. 先看 confirm 结果(最高优先级,确认即终态)
        confirm_raw = await self.redis.get(self._confirm_key(ticket))
        if confirm_raw:
            try:
                confirm_data = json.loads(confirm_raw)
                return {
                    "status": "confirmed",
                    "employee_id": confirm_data.get("employee_id"),
                    "name": confirm_data.get("name"),
                    "token": confirm_data.get("token"),
                }
            except json.JSONDecodeError:
                logger.warning(f"confirm 数据解析失败: ticket={ticket[:8]}...")

        # 2. 看 scan 结果(已扫码未确认)
        scan_raw = await self.redis.get(self._scan_key(ticket))
        if scan_raw:
            try:
                scan_data = json.loads(scan_raw)
                return {
                    "status": "scanned",
                    "employee_id": scan_data.get("employee_id"),
                    "name": scan_data.get("name"),
                    "token": None,
                }
            except json.JSONDecodeError:
                logger.warning(f"scan 数据解析失败: ticket={ticket[:8]}...")

        # 3. 看 ticket 本身(还在等待扫码)
        if 