from __future__ import annotations from gateway.core.channels.feishu.types import IncomingFeishuEvent class DefaultUserIdentityResolver: """ 飞书用户身份解析:feishu:{tenant_key}:{app_id}:{open_id}。 无 open_id 时退化为 chat_id,便于群场景或异常事件仍可按会话隔离。 """ def __init__(self, *, tenant_fallback: str = "_") -> None: self._tenant_fallback = tenant_fallback def resolve_user_id(self, event: IncomingFeishuEvent) -> str: tenant = event.tenant_id or self._tenant_fallback app = event.app_id if event.open_id: return f"feishu:{tenant}:{app}:{event.open_id}" if event.chat_id: return f"feishu:{tenant}:{app}:chat:{event.chat_id}" return f"feishu:{tenant}:{app}:unknown"