syntax = "proto3"; package hyapp.events.room.v1; option go_package = "hyapp.local/api/proto/events/room/v1;roomeventsv1"; // EventEnvelope 是 room-service outbox 的统一事件外壳。 // body 保存具体事件消息序列化后的二进制,event_type 负责告诉消费者如何解码。 message EventEnvelope { string event_id = 1; string room_id = 2; string event_type = 3; int64 room_version = 4; int64 occurred_at_ms = 5; bytes body = 6; string app_code = 7; } // RoomCreated 表达房间第一次建立成功。 message RoomCreated { int64 owner_user_id = 1; int32 seat_count = 3; string mode = 4; // room_name/room_avatar/room_description 是创建时确定的展示资料快照,消费者不需要反查 room-service。 string room_name = 5; string room_avatar = 6; string room_description = 7; } // RoomProfileUpdated 表达房间展示资料或麦位数量变更。 message RoomProfileUpdated { int64 actor_user_id = 1; string room_name = 2; string room_avatar = 3; string room_description = 4; int32 seat_count = 5; } // RoomUserJoined 表达用户业务态进房成功。 message RoomUserJoined { int64 user_id = 1; string role = 2; } // RoomUserLeft 表达用户离房成功。 message RoomUserLeft { int64 user_id = 1; } // RoomClosed 表达房间生命周期关闭完成。 message RoomClosed { int64 actor_user_id = 1; string reason = 2; } // RoomMicChanged 表达任意上下麦和换麦位动作。 message RoomMicChanged { int64 actor_user_id = 1; int64 target_user_id = 2; int32 from_seat = 3; int32 to_seat = 4; string action = 5; // mic_session_id 用于把业务麦位事件和 RTC 发流会话绑定,客户端和 webhook 都必须透传。 string mic_session_id = 6; // publish_state 透出 pending_publish/publishing/idle,避免把“占麦”和“已发流”混成一个状态。 string publish_state = 7; // reason 表示系统触发的下麦原因,例如 publish_timeout。 string reason = 8; int64 publish_deadline_ms = 9; int64 publish_event_time_ms = 10; bool mic_muted = 11; } // RoomMicSeatLocked 表达单个麦位锁定状态变更。 message RoomMicSeatLocked { int64 actor_user_id = 1; int32 seat_no = 2; bool locked = 3; } // RoomChatEnabledChanged 表达公屏开关状态变更。 message RoomChatEnabledChanged { int64 actor_user_id = 1; bool enabled = 2; } // RoomAdminChanged 表达房间管理员集合变更。 message RoomAdminChanged { int64 actor_user_id = 1; int64 target_user_id = 2; bool enabled = 3; } // RoomUserMuted 表达禁言状态变更。 message RoomUserMuted { int64 actor_user_id = 1; int64 target_user_id = 2; bool muted = 3; } // RoomUserKicked 表达踢人动作。 message RoomUserKicked { int64 actor_user_id = 1; int64 target_user_id = 2; } // RoomUserUnbanned 表达解除房间 ban。 message RoomUserUnbanned { int64 actor_user_id = 1; int64 target_user_id = 2; } // RoomGiftSent 表达送礼成功且已落房间状态。 message RoomGiftSent { int64 sender_user_id = 1; int64 target_user_id = 2; string gift_id = 3; int32 gift_count = 4; int64 gift_value = 5; string billing_receipt_id = 6; int64 visible_region_id = 7; string command_id = 8; } // RoomHeatChanged 表达热度变化结果。 message RoomHeatChanged { int64 delta = 1; int64 current_heat = 2; } // RoomRankChanged 表达本地礼物榜变化结果。 message RoomRankChanged { int64 user_id = 1; int64 score = 2; int64 gift_value = 3; }