hyapp-server/api/proto/activity/v1/activity.proto
2026-05-29 12:52:58 +08:00

1484 lines
41 KiB
Protocol Buffer
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

syntax = "proto3";
package hyapp.activity.v1;
import "proto/events/room/v1/events.proto";
option go_package = "hyapp.local/api/proto/activity/v1;activityv1";
// RequestMeta 是 activity-service 内部 RPC 的最小追踪元信息。
message RequestMeta {
string request_id = 1;
string caller = 2;
string gateway_node_id = 3;
int64 sent_at_ms = 4;
string app_code = 5;
}
// PingActivityRequest 用于验证 activity-service gRPC 链路可用。
message PingActivityRequest {
RequestMeta meta = 1;
}
// PingActivityResponse 返回服务是否接受请求。
message PingActivityResponse {
bool ok = 1;
string node_id = 2;
}
// GetActivityStatusRequest 查询活动服务底座状态。
message GetActivityStatusRequest {
RequestMeta meta = 1;
string activity_id = 2;
}
// GetActivityStatusResponse 返回活动是否启用。
message GetActivityStatusResponse {
string activity_id = 1;
string status = 2;
}
// MessageTabSection 是 App 消息 tab 的一个分区摘要。
message MessageTabSection {
string section = 1;
string title = 2;
int64 unread_count = 3;
string source = 4;
}
// ListMessageTabsRequest 查询当前用户消息 tab 摘要。
message ListMessageTabsRequest {
RequestMeta meta = 1;
int64 user_id = 2;
}
// ListMessageTabsResponse 固定返回 user/system/activity 三个分区。
message ListMessageTabsResponse {
repeated MessageTabSection sections = 1;
}
// InboxMessage 是 system/activity 分区列表可展示的消息快照。
message InboxMessage {
string message_id = 1;
string section = 2;
string title = 3;
string summary = 4;
string body = 5;
string icon_url = 6;
string image_url = 7;
string action_type = 8;
string action_param = 9;
bool read = 10;
int64 sent_at_ms = 11;
}
// ListInboxMessagesRequest 按 section 和游标分页读取当前用户 inbox。
message ListInboxMessagesRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string section = 3;
int32 page_size = 4;
string page_token = 5;
}
// ListInboxMessagesResponse 返回当前页列表和下一页不透明游标。
message ListInboxMessagesResponse {
string section = 1;
repeated InboxMessage items = 2;
string next_page_token = 3;
}
// MarkInboxMessageReadRequest 标记单条消息已读。
message MarkInboxMessageReadRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string message_id = 3;
}
// MarkInboxMessageReadResponse 返回消息首次已读时间;重复请求不覆盖该时间。
message MarkInboxMessageReadResponse {
string message_id = 1;
bool read = 2;
int64 read_at_ms = 3;
}
// MarkInboxSectionReadRequest 标记一个 section 下当前可见未读消息全部已读。
message MarkInboxSectionReadRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string section = 3;
}
// MarkInboxSectionReadResponse 返回本次实际变更的消息数量。
message MarkInboxSectionReadResponse {
string section = 1;
int64 read_count = 2;
}
// DeleteInboxMessageRequest 删除当前用户可见消息,删除是用户侧隐藏。
message DeleteInboxMessageRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string message_id = 3;
}
// DeleteInboxMessageResponse 返回被隐藏的消息 ID。
message DeleteInboxMessageResponse {
string message_id = 1;
bool deleted = 2;
}
// CreateInboxMessageRequest 是生产者入箱命令producer_event_id 是幂等键。
message CreateInboxMessageRequest {
RequestMeta meta = 1;
int64 target_user_id = 2;
string producer = 3;
string producer_event_id = 4;
string producer_event_type = 5;
string message_type = 6;
string aggregate_type = 7;
string aggregate_id = 8;
string template_id = 9;
string template_version = 10;
string title = 11;
string summary = 12;
string body = 13;
string icon_url = 14;
string image_url = 15;
string action_type = 16;
string action_param = 17;
int32 priority = 18;
int64 sent_at_ms = 19;
int64 expire_at_ms = 20;
string metadata_json = 21;
}
// CreateInboxMessageResponse 返回入箱结果;重复同一 producer_event_id 时 created=false。
message CreateInboxMessageResponse {
string message_id = 1;
bool created = 2;
}
// CreateFanoutJobRequest 创建后台 fanout 任务command_id 是后台命令幂等键。
message CreateFanoutJobRequest {
RequestMeta meta = 1;
string command_id = 2;
string message_type = 3;
string target_scope = 4;
string target_filter_json = 5;
string template_snapshot_json = 6;
int32 batch_size = 7;
string created_by = 8;
}
// CreateFanoutJobResponse 返回 fanout job 幂等创建结果。
message CreateFanoutJobResponse {
string job_id = 1;
string status = 2;
bool created = 3;
}
// CronBatchRequest 是 cron-service 触发 activity-service 后台批处理的统一请求。
message CronBatchRequest {
RequestMeta meta = 1;
string run_id = 2;
string worker_id = 3;
int32 batch_size = 4;
int64 lock_ttl_ms = 5;
}
// CronBatchResponse 返回一个批处理 run 的执行摘要。
message CronBatchResponse {
int32 claimed_count = 1;
int32 processed_count = 2;
int32 success_count = 3;
int32 failure_count = 4;
bool has_more = 5;
}
// TaskItem 是 App 每日任务/专属任务列表里的单个可展示任务快照。
message TaskItem {
string task_id = 1;
string task_type = 2;
string category = 3;
string metric_type = 4;
string title = 5;
string description = 6;
int64 target_value = 7;
string target_unit = 8;
int64 progress_value = 9;
int64 reward_coin_amount = 10;
string status = 11;
bool claimable = 12;
string task_day = 13;
int64 server_time_ms = 14;
int64 next_refresh_at_ms = 15;
int32 sort_order = 16;
int64 version = 17;
}
// TaskSection 固定表达 App 任务页的 daily/exclusive 两个分区。
message TaskSection {
string section = 1;
repeated TaskItem items = 2;
int64 server_time_ms = 3;
int64 next_refresh_at_ms = 4;
}
// ListUserTasksRequest 查询当前用户任务进度;进度必须来自服务端事实事件。
message ListUserTasksRequest {
RequestMeta meta = 1;
int64 user_id = 2;
}
// ListUserTasksResponse 返回 daily/exclusive 分区和服务器刷新时间。
message ListUserTasksResponse {
repeated TaskSection sections = 1;
int64 server_time_ms = 2;
int64 next_refresh_at_ms = 3;
}
// ClaimTaskRewardRequest 领取已完成任务奖励command_id 是领奖幂等键。
message ClaimTaskRewardRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string task_id = 3;
string task_type = 4;
string task_day = 5;
string command_id = 6;
}
// ClaimTaskRewardResponse 返回 activity 领奖状态和 wallet 入账回执。
message ClaimTaskRewardResponse {
string claim_id = 1;
string task_id = 2;
string task_type = 3;
string task_day = 4;
int64 reward_coin_amount = 5;
string status = 6;
string wallet_transaction_id = 7;
int64 granted_at_ms = 8;
bool claimed = 9;
}
// ConsumeTaskEventRequest 是异步 outbox consumer 投递给任务系统的事实事件。
message ConsumeTaskEventRequest {
RequestMeta meta = 1;
string event_id = 2;
string event_type = 3;
string source_service = 4;
int64 user_id = 5;
string metric_type = 6;
int64 value = 7;
int64 occurred_at_ms = 8;
}
// ConsumeTaskEventResponse 返回事件消费幂等结果matched_task_count=0 表示合法跳过。
message ConsumeTaskEventResponse {
string event_id = 1;
string status = 2;
int32 matched_task_count = 3;
}
// BroadcastJoinGroup 是 gateway 下发给客户端的 IM 播报群信息在服务端的同源结构。
message BroadcastJoinGroup {
string group_id = 1;
string type = 2;
int64 region_id = 3;
}
message EnsureBroadcastGroupsRequest {
RequestMeta meta = 1;
}
message EnsureBroadcastGroupsResponse {
int32 ensured_count = 1;
}
message PublishRegionBroadcastRequest {
RequestMeta meta = 1;
string event_id = 2;
int64 region_id = 3;
string broadcast_type = 4;
string payload_json = 5;
}
message PublishGlobalBroadcastRequest {
RequestMeta meta = 1;
string event_id = 2;
string broadcast_type = 3;
string payload_json = 4;
}
message PublishBroadcastResponse {
string event_id = 1;
string group_id = 2;
string status = 3;
bool created = 4;
}
// RemoveRegionBroadcastMemberRequest 只移除某个用户的旧区域群成员关系,不删除或解散区域群。
message RemoveRegionBroadcastMemberRequest {
RequestMeta meta = 1;
int64 user_id = 2;
int64 region_id = 3;
string reason = 4;
}
message RemoveRegionBroadcastMemberResponse {
string group_id = 1;
bool removed = 2;
}
message ProcessBroadcastOutboxBatchResponse {
int32 claimed_count = 1;
int32 success_count = 2;
int32 failure_count = 3;
bool has_more = 4;
}
message ConsumeRoomEventRequest {
RequestMeta meta = 1;
hyapp.events.room.v1.EventEnvelope envelope = 2;
}
message ConsumeRoomEventResponse {
string event_id = 1;
string status = 2;
string broadcast_event_id = 3;
bool broadcast_created = 4;
}
// TaskDefinition 是后台管理任务配置的当前版本读模型。
message TaskDefinition {
string task_id = 1;
string task_type = 2;
string category = 3;
string metric_type = 4;
string title = 5;
string description = 6;
int64 target_value = 7;
string target_unit = 8;
int64 reward_coin_amount = 9;
string status = 10;
int32 sort_order = 11;
int64 version = 12;
int64 effective_from_ms = 13;
int64 effective_to_ms = 14;
int64 created_by_admin_id = 15;
int64 updated_by_admin_id = 16;
int64 created_at_ms = 17;
int64 updated_at_ms = 18;
}
// ListTaskDefinitionsRequest 是后台任务配置列表筛选条件。
message ListTaskDefinitionsRequest {
RequestMeta meta = 1;
string task_type = 2;
string category = 3;
string status = 4;
string keyword = 5;
int32 page = 6;
int32 page_size = 7;
}
message ListTaskDefinitionsResponse {
repeated TaskDefinition tasks = 1;
int64 total = 2;
}
// UpsertTaskDefinitionRequest 创建或编辑任务active 关键字段变更由服务端生成新版本。
message UpsertTaskDefinitionRequest {
RequestMeta meta = 1;
string task_id = 2;
string task_type = 3;
string category = 4;
string metric_type = 5;
string title = 6;
string description = 7;
int64 target_value = 8;
string target_unit = 9;
int64 reward_coin_amount = 10;
string status = 11;
int32 sort_order = 12;
int64 effective_from_ms = 13;
int64 effective_to_ms = 14;
int64 operator_admin_id = 15;
}
message UpsertTaskDefinitionResponse {
TaskDefinition task = 1;
bool created = 2;
}
// SetTaskDefinitionStatusRequest 后台启停或归档任务,不做物理删除。
message SetTaskDefinitionStatusRequest {
RequestMeta meta = 1;
string task_id = 2;
string status = 3;
int64 operator_admin_id = 4;
}
message SetTaskDefinitionStatusResponse {
TaskDefinition task = 1;
}
// RegistrationRewardConfig 是注册奖励的当前配置enabled=false 时保留配置但不自动发放。
message RegistrationRewardConfig {
string app_code = 1;
bool enabled = 2;
string reward_type = 3;
int64 coin_amount = 4;
int64 resource_group_id = 5;
int64 daily_limit = 6;
int64 updated_by_admin_id = 7;
int64 created_at_ms = 8;
int64 updated_at_ms = 9;
}
// RegistrationRewardClaim 是每个用户注册奖励的领取事实user_id 唯一保证“没有领过”。
message RegistrationRewardClaim {
string claim_id = 1;
string command_id = 2;
int64 user_id = 3;
string reward_day = 4;
string reward_type = 5;
int64 coin_amount = 6;
int64 resource_group_id = 7;
string status = 8;
string wallet_command_id = 9;
string wallet_transaction_id = 10;
string resource_grant_id = 11;
string failure_reason = 12;
int64 claimed_at_ms = 13;
int64 created_at_ms = 14;
int64 updated_at_ms = 15;
}
// RegistrationRewardEligibility 返回 App 可直接展示的资格判断;每日份数按 UTC reward_day 统计。
message RegistrationRewardEligibility {
bool can_receive = 1;
string reason = 2;
bool enabled = 3;
string reward_type = 4;
int64 coin_amount = 5;
int64 resource_group_id = 6;
int64 daily_limit = 7;
int64 daily_used = 8;
int64 daily_remaining = 9;
string reward_day = 10;
int64 server_time_ms = 11;
}
// GetRegistrationRewardEligibilityRequest 给 App 查询当前用户是否还有注册奖励资格。
message GetRegistrationRewardEligibilityRequest {
RequestMeta meta = 1;
int64 user_id = 2;
}
message GetRegistrationRewardEligibilityResponse {
RegistrationRewardEligibility eligibility = 1;
}
// IssueRegistrationRewardRequest 是 user-service 注册成功后调用的幂等发放命令。
message IssueRegistrationRewardRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string command_id = 3;
}
message IssueRegistrationRewardResponse {
RegistrationRewardClaim claim = 1;
RegistrationRewardEligibility eligibility = 2;
bool issued = 3;
}
// GetRegistrationRewardConfigRequest 返回后台注册奖励配置;未配置时服务端返回默认 disabled 配置。
message GetRegistrationRewardConfigRequest {
RequestMeta meta = 1;
}
message GetRegistrationRewardConfigResponse {
RegistrationRewardConfig config = 1;
}
// UpdateRegistrationRewardConfigRequest 更新注册奖励开关、奖励内容和每日限制。
message UpdateRegistrationRewardConfigRequest {
RequestMeta meta = 1;
bool enabled = 2;
string reward_type = 3;
int64 coin_amount = 4;
int64 resource_group_id = 5;
int64 daily_limit = 6;
int64 operator_admin_id = 7;
}
message UpdateRegistrationRewardConfigResponse {
RegistrationRewardConfig config = 1;
}
// ListRegistrationRewardClaimsRequest 是后台领取记录分页筛选keyword 由 admin-server 结合用户库扩展。
message ListRegistrationRewardClaimsRequest {
RequestMeta meta = 1;
string status = 2;
int64 user_id = 3;
int32 page = 4;
int32 page_size = 5;
}
message ListRegistrationRewardClaimsResponse {
repeated RegistrationRewardClaim claims = 1;
int64 total = 2;
}
// FirstRechargeRewardTier 是首冲奖励的一个金币充值档位max_coin_amount=0 表示无上限。
message FirstRechargeRewardTier {
int64 tier_id = 1;
string tier_code = 2;
string tier_name = 3;
int64 min_coin_amount = 4;
int64 max_coin_amount = 5;
int64 resource_group_id = 6;
string status = 7;
int32 sort_order = 8;
int64 created_at_ms = 9;
int64 updated_at_ms = 10;
}
// FirstRechargeRewardConfig 是当前 App 的首冲奖励配置;档位内容在 activity-service 内保持版本一致。
message FirstRechargeRewardConfig {
string app_code = 1;
bool enabled = 2;
repeated FirstRechargeRewardTier tiers = 3;
int64 updated_by_admin_id = 4;
int64 created_at_ms = 5;
int64 updated_at_ms = 6;
}
// FirstRechargeRewardClaim 是某个用户首笔充值触发后的发奖事实user_id 唯一保证一生只处理一次。
message FirstRechargeRewardClaim {
string claim_id = 1;
string event_id = 2;
string transaction_id = 3;
string command_id = 4;
int64 user_id = 5;
int64 tier_id = 6;
string tier_code = 7;
int64 resource_group_id = 8;
int64 recharge_coin_amount = 9;
int64 recharge_sequence = 10;
string recharge_type = 11;
string status = 12;
string wallet_command_id = 13;
string wallet_grant_id = 14;
string failure_reason = 15;
int64 recharged_at_ms = 16;
int64 granted_at_ms = 17;
int64 created_at_ms = 18;
int64 updated_at_ms = 19;
}
// FirstRechargeRewardStatus 是 App 首冲奖励面板可直接展示的当前状态。
message FirstRechargeRewardStatus {
bool enabled = 1;
repeated FirstRechargeRewardTier tiers = 2;
bool rewarded = 3;
FirstRechargeRewardClaim claim = 4;
int64 server_time_ms = 5;
}
message GetFirstRechargeRewardStatusRequest {
RequestMeta meta = 1;
int64 user_id = 2;
}
message GetFirstRechargeRewardStatusResponse {
FirstRechargeRewardStatus status = 1;
}
// ConsumeFirstRechargeRewardRequest 是 wallet 充值事实消费入口;只处理 recharge_sequence=1 的成功充值。
message ConsumeFirstRechargeRewardRequest {
RequestMeta meta = 1;
string event_id = 2;
string transaction_id = 3;
string command_id = 4;
int64 user_id = 5;
int64 recharge_coin_amount = 6;
int64 recharge_sequence = 7;
string recharge_type = 8;
int64 occurred_at_ms = 9;
}
message ConsumeFirstRechargeRewardResponse {
FirstRechargeRewardClaim claim = 1;
bool consumed = 2;
string reason = 3;
}
message GetFirstRechargeRewardConfigRequest {
RequestMeta meta = 1;
}
message GetFirstRechargeRewardConfigResponse {
FirstRechargeRewardConfig config = 1;
}
message UpdateFirstRechargeRewardConfigRequest {
RequestMeta meta = 1;
bool enabled = 2;
repeated FirstRechargeRewardTier tiers = 3;
int64 operator_admin_id = 4;
}
message UpdateFirstRechargeRewardConfigResponse {
FirstRechargeRewardConfig config = 1;
}
message ListFirstRechargeRewardClaimsRequest {
RequestMeta meta = 1;
string status = 2;
int64 user_id = 3;
int32 page = 4;
int32 page_size = 5;
}
message ListFirstRechargeRewardClaimsResponse {
repeated FirstRechargeRewardClaim claims = 1;
int64 total = 2;
}
// SevenDayCheckInReward 是七日签到配置中某一天的资源组奖励。
message SevenDayCheckInReward {
int32 day_index = 1;
int64 resource_group_id = 2;
}
// SevenDayCheckInConfig 是当前 App 的七日签到配置;资源组内容仍由 wallet-service 拥有。
message SevenDayCheckInConfig {
string app_code = 1;
bool enabled = 2;
int64 config_version = 3;
repeated SevenDayCheckInReward rewards = 4;
int64 updated_by_admin_id = 5;
int64 created_at_ms = 6;
int64 updated_at_ms = 7;
}
// SevenDayCheckInRewardStatus 是 App 面板中某一天奖励的用户侧状态。
message SevenDayCheckInRewardStatus {
int32 day_index = 1;
int64 resource_group_id = 2;
string status = 3;
string claim_id = 4;
string wallet_grant_id = 5;
int64 granted_at_ms = 6;
}
message GetSevenDayCheckInStatusRequest {
RequestMeta meta = 1;
int64 user_id = 2;
}
message GetSevenDayCheckInStatusResponse {
bool enabled = 1;
bool can_sign = 2;
string reason = 3;
int64 cycle_no = 4;
int32 current_day_index = 5;
int32 next_day_index = 6;
string checkin_day = 7;
string last_checkin_day = 8;
int64 config_version = 9;
repeated SevenDayCheckInRewardStatus rewards = 10;
int64 server_time_ms = 11;
int64 next_refresh_at_ms = 12;
}
message SignSevenDayCheckInRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string command_id = 3;
}
message SignSevenDayCheckInResponse {
string claim_id = 1;
int64 cycle_no = 2;
string checkin_day = 3;
int32 day_index = 4;
int64 resource_group_id = 5;
string status = 6;
string wallet_grant_id = 7;
int64 granted_at_ms = 8;
int64 server_time_ms = 9;
}
message GetSevenDayCheckInConfigRequest {
RequestMeta meta = 1;
}
message GetSevenDayCheckInConfigResponse {
SevenDayCheckInConfig config = 1;
}
message UpdateSevenDayCheckInConfigRequest {
RequestMeta meta = 1;
bool enabled = 2;
repeated SevenDayCheckInReward rewards = 3;
int64 operator_admin_id = 4;
}
message UpdateSevenDayCheckInConfigResponse {
SevenDayCheckInConfig config = 1;
}
// SevenDayCheckInClaim 是后台领取记录页使用的签到和资源组发放事实。
message SevenDayCheckInClaim {
string claim_id = 1;
string command_id = 2;
int64 user_id = 3;
int64 cycle_no = 4;
string checkin_day = 5;
int32 day_index = 6;
int64 config_version = 7;
int64 resource_group_id = 8;
string wallet_command_id = 9;
string wallet_grant_id = 10;
string status = 11;
string failure_reason = 12;
int64 signed_at_ms = 13;
int64 granted_at_ms = 14;
int64 created_at_ms = 15;
int64 updated_at_ms = 16;
}
message ListSevenDayCheckInClaimsRequest {
RequestMeta meta = 1;
string status = 2;
int64 user_id = 3;
string checkin_day = 4;
int32 day_index = 5;
int32 page = 6;
int32 page_size = 7;
}
message ListSevenDayCheckInClaimsResponse {
repeated SevenDayCheckInClaim claims = 1;
int64 total = 2;
}
// LevelTrack 是等级体系的一条成长轨道,例如 wealth/game/charm。
message LevelTrack {
string track = 1;
string name = 2;
string status = 3;
int32 sort_order = 4;
string display_config_json = 5;
int64 created_at_ms = 6;
int64 updated_at_ms = 7;
}
// LevelRule 是某条轨道的单级阈值和可选奖励配置。
message LevelRule {
string track = 1;
int32 level = 2;
int64 required_value = 3;
string name = 4;
string status = 5;
int64 reward_resource_group_id = 6;
int32 sort_order = 7;
string display_config_json = 8;
int64 created_by_admin_id = 9;
int64 updated_by_admin_id = 10;
int64 created_at_ms = 11;
int64 updated_at_ms = 12;
}
// LevelTier 是等级段展示和等级段奖励配置,例如 1-10 或 11-20。
message LevelTier {
int64 tier_id = 1;
string track = 2;
int32 min_level = 3;
int32 max_level = 4;
string name = 5;
int64 display_avatar_frame_resource_id = 6;
int64 display_badge_resource_id = 7;
int64 reward_resource_group_id = 8;
string status = 9;
string display_config_json = 10;
int64 created_by_admin_id = 11;
int64 updated_by_admin_id = 12;
int64 created_at_ms = 13;
int64 updated_at_ms = 14;
}
// LevelTrackOverview 是 App 等级总览里的单轨道进度。
message LevelTrackOverview {
string track = 1;
string name = 2;
int32 level = 3;
int64 tier_id = 4;
int64 total_value = 5;
int64 current_level_required_value = 6;
int32 next_level = 7;
int64 next_level_required_value = 8;
int64 display_avatar_frame_resource_id = 9;
int64 display_badge_resource_id = 10;
int64 reward_pending_count = 11;
int32 sort_order = 12;
}
message GetMyLevelOverviewRequest {
RequestMeta meta = 1;
int64 user_id = 2;
}
message GetMyLevelOverviewResponse {
repeated LevelTrackOverview tracks = 1;
int64 server_time_ms = 2;
}
message GetLevelTrackRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string track = 3;
}
message GetLevelTrackResponse {
LevelTrackOverview overview = 1;
repeated LevelRule rules = 2;
repeated LevelTier tiers = 3;
int64 server_time_ms = 4;
}
// LevelRewardJob 是等级或等级段奖励的发放状态。
message LevelRewardJob {
string reward_job_id = 1;
int64 user_id = 2;
string track = 3;
string reward_source_type = 4;
string reward_source_id = 5;
int64 resource_group_id = 6;
string wallet_command_id = 7;
string wallet_grant_id = 8;
string status = 9;
int32 attempt_count = 10;
string failure_reason = 11;
int64 created_at_ms = 12;
int64 updated_at_ms = 13;
}
message ListLevelRewardsRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string track = 3;
string status = 4;
int32 page = 5;
int32 page_size = 6;
}
message ListLevelRewardsResponse {
repeated LevelRewardJob rewards = 1;
int64 total = 2;
}
// ConsumeLevelEventRequest 是内部事件 relay 投递给等级系统的幂等增量。
message ConsumeLevelEventRequest {
RequestMeta meta = 1;
string event_id = 2;
string source_event_id = 3;
string source_service = 4;
string source_event_type = 5;
int64 user_id = 6;
string track = 7;
string metric_type = 8;
int64 value_delta = 9;
int64 occurred_at_ms = 10;
string dimensions_json = 11;
}
message ConsumeLevelEventResponse {
string event_id = 1;
string status = 2;
bool level_changed = 3;
int32 previous_level = 4;
int32 new_level = 5;
int64 reward_job_count = 6;
}
message UpsertLevelTrackRequest {
RequestMeta meta = 1;
string track = 2;
string name = 3;
string status = 4;
int32 sort_order = 5;
string display_config_json = 6;
}
message UpsertLevelTrackResponse {
LevelTrack track = 1;
bool created = 2;
}
message UpsertLevelRuleRequest {
RequestMeta meta = 1;
string track = 2;
int32 level = 3;
int64 required_value = 4;
string name = 5;
string status = 6;
int64 reward_resource_group_id = 7;
int32 sort_order = 8;
string display_config_json = 9;
int64 operator_admin_id = 10;
}
message UpsertLevelRuleResponse {
LevelRule rule = 1;
bool created = 2;
}
message UpsertLevelTierRequest {
RequestMeta meta = 1;
int64 tier_id = 2;
string track = 3;
int32 min_level = 4;
int32 max_level = 5;
string name = 6;
int64 display_avatar_frame_resource_id = 7;
int64 display_badge_resource_id = 8;
int64 reward_resource_group_id = 9;
string status = 10;
string display_config_json = 11;
int64 operator_admin_id = 12;
}
message UpsertLevelTierResponse {
LevelTier tier = 1;
bool created = 2;
}
// ListLevelConfigRequest 是后台等级配置页的配置读取请求;不绑定具体用户进度。
message ListLevelConfigRequest {
RequestMeta meta = 1;
string track = 2;
string status = 3;
}
message ListLevelConfigResponse {
repeated LevelTrack tracks = 1;
repeated LevelRule rules = 2;
repeated LevelTier tiers = 3;
int64 server_time_ms = 4;
}
message AchievementCondition {
string condition_id = 1;
string achievement_id = 2;
int64 version = 3;
string metric_type = 4;
int64 target_value = 5;
string target_unit = 6;
string dimension_filter_json = 7;
}
message AchievementDefinition {
string achievement_id = 1;
string collection_id = 2;
string collection_type = 3;
string achievement_type = 4;
string title = 5;
string description = 6;
string status = 7;
int64 version = 8;
int64 primary_badge_resource_id = 9;
int64 reward_resource_group_id = 10;
string auto_pin_policy = 11;
bool honor_visibility = 12;
int64 effective_from_ms = 13;
int64 effective_to_ms = 14;
int32 sort_order = 15;
string display_config_json = 16;
int64 created_by_admin_id = 17;
int64 updated_by_admin_id = 18;
int64 created_at_ms = 19;
int64 updated_at_ms = 20;
repeated AchievementCondition conditions = 21;
}
message UserAchievement {
AchievementDefinition definition = 1;
string cycle_key = 2;
int64 progress_value = 3;
int64 target_value = 4;
string user_status = 5;
int64 unlocked_at_ms = 6;
string reward_status = 7;
}
message ListAchievementsRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string collection_type = 3;
string collection_id = 4;
int32 page = 5;
int32 page_size = 6;
}
message ListAchievementsResponse {
repeated UserAchievement achievements = 1;
int64 total = 2;
int64 server_time_ms = 3;
}
message ConsumeAchievementEventRequest {
RequestMeta meta = 1;
string event_id = 2;
string event_type = 3;
string source_service = 4;
int64 user_id = 5;
string metric_type = 6;
int64 value = 7;
int64 occurred_at_ms = 8;
string dimensions_json = 9;
}
message ConsumeAchievementEventResponse {
string event_id = 1;
string status = 2;
int32 matched_achievement_count = 3;
int32 unlocked_achievement_count = 4;
int64 reward_job_count = 5;
}
message BadgeDisplayItem {
string slot = 1;
int32 position = 2;
string badge_form = 3;
int64 resource_id = 4;
string entitlement_id = 5;
string source_type = 6;
string source_id = 7;
string pin_mode = 8;
int64 updated_at_ms = 9;
}
message ListMyBadgesRequest {
RequestMeta meta = 1;
int64 user_id = 2;
}
message ListMyBadgesResponse {
repeated BadgeDisplayItem strip_badges = 1;
repeated BadgeDisplayItem profile_tile_badges = 2;
repeated BadgeDisplayItem honor_badges = 3;
int64 server_time_ms = 4;
}
message SetBadgeDisplayRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string slot = 3;
repeated BadgeDisplayItem items = 4;
string command_id = 5;
}
message SetBadgeDisplayResponse {
ListMyBadgesResponse profile = 1;
}
message UpsertAchievementDefinitionRequest {
RequestMeta meta = 1;
string achievement_id = 2;
string collection_id = 3;
string collection_type = 4;
string achievement_type = 5;
string title = 6;
string description = 7;
string status = 8;
int64 primary_badge_resource_id = 9;
int64 reward_resource_group_id = 10;
string auto_pin_policy = 11;
bool honor_visibility = 12;
int64 effective_from_ms = 13;
int64 effective_to_ms = 14;
int32 sort_order = 15;
string display_config_json = 16;
int64 operator_admin_id = 17;
repeated AchievementCondition conditions = 18;
}
message UpsertAchievementDefinitionResponse {
AchievementDefinition achievement = 1;
bool created = 2;
}
message LuckyGiftMeta {
RequestMeta meta = 1;
string command_id = 2;
int64 user_id = 3;
string device_id = 4;
string room_id = 5;
string anchor_id = 6;
string gift_id = 7;
int64 coin_spent = 8;
int64 paid_at_ms = 9;
string pool_id = 10;
int64 target_user_id = 11;
int32 gift_count = 12;
// visible_region_id 来自 room-service 的房间可见区域,用于中奖后的区域 IM 飘屏。
int64 visible_region_id = 13;
}
message LuckyGiftTier {
string pool = 1;
string tier_id = 2;
int64 reward_coins = 3;
int64 weight = 4;
bool high_water_only = 5;
bool enabled = 6;
int64 multiplier_ppm = 7;
}
message LuckyGiftConfig {
string app_code = 1;
string gift_id = 2;
bool enabled = 3;
int64 rule_version = 4;
int64 gift_price = 5;
int64 target_rtp_ppm = 6;
int64 pool_rate_ppm = 7;
int64 global_window_draws = 8;
int64 gift_window_draws = 9;
int64 novice_draw_limit = 10;
int64 intermediate_draw_limit = 11;
int64 high_multiplier = 12;
int64 high_water_pool_multiple = 13;
int64 platform_pool_weight_ppm = 14;
int64 room_pool_weight_ppm = 15;
int64 gift_pool_weight_ppm = 16;
int64 initial_platform_pool = 17;
int64 initial_gift_pool = 18;
int64 initial_room_pool = 19;
int64 platform_reserve = 20;
int64 gift_reserve = 21;
int64 room_reserve = 22;
int64 max_single_payout = 23;
int64 user_hourly_payout_cap = 24;
int64 user_daily_payout_cap = 25;
int64 device_daily_payout_cap = 26;
int64 room_hourly_payout_cap = 27;
int64 anchor_daily_payout_cap = 28;
int64 room_atmosphere_rate_ppm = 29;
int64 room_atmosphere_initial = 30;
int64 room_atmosphere_reserve = 31;
int64 activity_budget = 32;
int64 activity_daily_limit = 33;
bool large_tier_enabled = 34;
repeated LuckyGiftTier tiers = 35;
int64 updated_by_admin_id = 36;
int64 created_at_ms = 37;
int64 updated_at_ms = 38;
string pool_id = 39;
repeated int64 multiplier_ppms = 40;
}
message LuckyGiftRuleTier {
string stage = 1;
string tier_id = 2;
int64 multiplier_ppm = 3;
int64 base_weight_ppm = 4;
string reward_source = 5;
bool high_water_only = 6;
string broadcast_level = 7;
bool enabled = 8;
}
message LuckyGiftRuleStage {
string stage = 1;
repeated LuckyGiftRuleTier tiers = 2;
}
message LuckyGiftRuleConfig {
string app_code = 1;
string pool_id = 2;
int64 rule_version = 3;
bool enabled = 4;
int64 target_rtp_ppm = 5;
int64 pool_rate_ppm = 6;
int64 settlement_window_wager = 7;
int64 control_band_ppm = 8;
int64 gift_price_reference = 9;
int64 novice_max_equivalent_draws = 10;
int64 normal_max_equivalent_draws = 11;
int64 effective_from_ms = 12;
int64 created_by_admin_id = 13;
int64 created_at_ms = 14;
int64 max_single_payout = 15;
int64 user_hourly_payout_cap = 16;
int64 user_daily_payout_cap = 17;
int64 device_daily_payout_cap = 18;
int64 room_hourly_payout_cap = 19;
int64 anchor_daily_payout_cap = 20;
repeated LuckyGiftRuleStage stages = 21;
}
message CheckLuckyGiftRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string room_id = 3;
string gift_id = 4;
string pool_id = 5;
}
message CheckLuckyGiftResponse {
bool enabled = 1;
string reason = 2;
string gift_id = 3;
int64 gift_price = 4;
int64 rule_version = 5;
int64 target_rtp_ppm = 6;
string experience_pool = 7;
string pool_id = 8;
}
message LuckyGiftDrawResult {
string draw_id = 1;
string command_id = 2;
string gift_id = 3;
int64 rule_version = 4;
string experience_pool = 5;
string selected_tier_id = 6;
int64 base_reward_coins = 7;
int64 room_atmosphere_reward_coins = 8;
int64 activity_subsidy_coins = 9;
int64 effective_reward_coins = 10;
string budget_sources_json = 11;
string reward_status = 12;
int64 rtp_window_index = 13;
int64 gift_rtp_window_index = 14;
int64 global_base_rtp_ppm = 15;
int64 gift_base_rtp_ppm = 16;
bool stage_feedback = 17;
bool high_multiplier = 18;
int64 created_at_ms = 19;
string pool_id = 20;
int64 multiplier_ppm = 21;
}
message ExecuteLuckyGiftDrawRequest {
LuckyGiftMeta lucky_gift = 1;
}
message ExecuteLuckyGiftDrawResponse {
LuckyGiftDrawResult result = 1;
}
message GetLuckyGiftConfigRequest {
RequestMeta meta = 1;
string gift_id = 2;
string pool_id = 3;
}
message GetLuckyGiftConfigResponse {
LuckyGiftRuleConfig config = 1;
}
message UpsertLuckyGiftConfigRequest {
RequestMeta meta = 1;
LuckyGiftRuleConfig config = 2;
int64 operator_admin_id = 3;
}
message UpsertLuckyGiftConfigResponse {
LuckyGiftRuleConfig config = 1;
}
message ListLuckyGiftConfigsRequest {
RequestMeta meta = 1;
}
message ListLuckyGiftConfigsResponse {
repeated LuckyGiftRuleConfig configs = 1;
}
message ListLuckyGiftDrawsRequest {
RequestMeta meta = 1;
string gift_id = 2;
int64 user_id = 3;
string room_id = 4;
string status = 5;
int32 page = 6;
int32 page_size = 7;
string pool_id = 8;
}
message ListLuckyGiftDrawsResponse {
repeated LuckyGiftDrawResult draws = 1;
int64 total = 2;
}
message LuckyGiftDrawSummary {
string pool_id = 1;
int64 total_draws = 2;
int64 unique_users = 3;
int64 unique_rooms = 4;
int64 total_spent_coins = 5;
int64 total_reward_coins = 6;
int64 base_reward_coins = 7;
int64 room_atmosphere_reward_coins = 8;
int64 activity_subsidy_coins = 9;
int64 actual_rtp_ppm = 10;
int64 pending_draws = 11;
int64 granted_draws = 12;
int64 failed_draws = 13;
}
message GetLuckyGiftDrawSummaryRequest {
RequestMeta meta = 1;
string gift_id = 2;
int64 user_id = 3;
string room_id = 4;
string status = 5;
string pool_id = 6;
}
message GetLuckyGiftDrawSummaryResponse {
LuckyGiftDrawSummary summary = 1;
}
// ActivityService 只暴露同步查询,不把事件消费伪装成 RPC。
service ActivityService {
rpc PingActivity(PingActivityRequest) returns (PingActivityResponse);
rpc GetActivityStatus(GetActivityStatusRequest) returns (GetActivityStatusResponse);
}
// MessageInboxService 拥有 App system/activity 个人 inbox 事实。
service MessageInboxService {
rpc ListMessageTabs(ListMessageTabsRequest) returns (ListMessageTabsResponse);
rpc ListInboxMessages(ListInboxMessagesRequest) returns (ListInboxMessagesResponse);
rpc MarkInboxMessageRead(MarkInboxMessageReadRequest) returns (MarkInboxMessageReadResponse);
rpc MarkInboxSectionRead(MarkInboxSectionReadRequest) returns (MarkInboxSectionReadResponse);
rpc DeleteInboxMessage(DeleteInboxMessageRequest) returns (DeleteInboxMessageResponse);
rpc CreateInboxMessage(CreateInboxMessageRequest) returns (CreateInboxMessageResponse);
rpc CreateFanoutJob(CreateFanoutJobRequest) returns (CreateFanoutJobResponse);
}
// ActivityCronService 只给 cron-service 调用,活动和消息状态仍由 activity-service owner 修改。
service ActivityCronService {
rpc ProcessMessageFanoutBatch(CronBatchRequest) returns (CronBatchResponse);
rpc ProcessLevelRewardBatch(CronBatchRequest) returns (CronBatchResponse);
rpc ProcessAchievementRewardBatch(CronBatchRequest) returns (CronBatchResponse);
}
// TaskService 拥有 App 任务查询、事件进度消费和领奖状态。
service TaskService {
rpc ListUserTasks(ListUserTasksRequest) returns (ListUserTasksResponse);
rpc ClaimTaskReward(ClaimTaskRewardRequest) returns (ClaimTaskRewardResponse);
rpc ConsumeTaskEvent(ConsumeTaskEventRequest) returns (ConsumeTaskEventResponse);
}
// GrowthLevelService 拥有 App 等级查询和内部等级事件消费。
service GrowthLevelService {
rpc GetMyLevelOverview(GetMyLevelOverviewRequest) returns (GetMyLevelOverviewResponse);
rpc GetLevelTrack(GetLevelTrackRequest) returns (GetLevelTrackResponse);
rpc ListLevelRewards(ListLevelRewardsRequest) returns (ListLevelRewardsResponse);
rpc ConsumeLevelEvent(ConsumeLevelEventRequest) returns (ConsumeLevelEventResponse);
}
// AchievementService owns App achievement reads, badge display and internal achievement event consumption.
service AchievementService {
rpc ListAchievements(ListAchievementsRequest) returns (ListAchievementsResponse);
rpc ConsumeAchievementEvent(ConsumeAchievementEventRequest) returns (ConsumeAchievementEventResponse);
rpc ListMyBadges(ListMyBadgesRequest) returns (ListMyBadgesResponse);
rpc SetBadgeDisplay(SetBadgeDisplayRequest) returns (SetBadgeDisplayResponse);
}
// LuckyGiftService owns lucky gift rule checks and draw decisions after wallet debit succeeds.
service LuckyGiftService {
rpc CheckLuckyGift(CheckLuckyGiftRequest) returns (CheckLuckyGiftResponse);
rpc ExecuteLuckyGiftDraw(ExecuteLuckyGiftDrawRequest) returns (ExecuteLuckyGiftDrawResponse);
}
// BroadcastService owns server-side Tencent IM global/region broadcast delivery.
service BroadcastService {
rpc EnsureBroadcastGroups(EnsureBroadcastGroupsRequest) returns (EnsureBroadcastGroupsResponse);
rpc PublishRegionBroadcast(PublishRegionBroadcastRequest) returns (PublishBroadcastResponse);
rpc PublishGlobalBroadcast(PublishGlobalBroadcastRequest) returns (PublishBroadcastResponse);
rpc RemoveRegionBroadcastMember(RemoveRegionBroadcastMemberRequest) returns (RemoveRegionBroadcastMemberResponse);
rpc ProcessBroadcastOutboxBatch(CronBatchRequest) returns (ProcessBroadcastOutboxBatchResponse);
}
// RoomEventConsumerService consumes room-service outbox facts without owning Room Cell state.
service RoomEventConsumerService {
rpc ConsumeRoomEvent(ConsumeRoomEventRequest) returns (ConsumeRoomEventResponse);
}
// AdminTaskService 是后台活动管理访问 activity-service 的唯一任务配置入口。
service AdminTaskService {
rpc ListTaskDefinitions(ListTaskDefinitionsRequest) returns (ListTaskDefinitionsResponse);
rpc UpsertTaskDefinition(UpsertTaskDefinitionRequest) returns (UpsertTaskDefinitionResponse);
rpc SetTaskDefinitionStatus(SetTaskDefinitionStatusRequest) returns (SetTaskDefinitionStatusResponse);
}
// RegistrationRewardService 拥有 App 查询和注册完成发放入口。
service RegistrationRewardService {
rpc GetRegistrationRewardEligibility(GetRegistrationRewardEligibilityRequest) returns (GetRegistrationRewardEligibilityResponse);
rpc IssueRegistrationReward(IssueRegistrationRewardRequest) returns (IssueRegistrationRewardResponse);
}
// AdminRegistrationRewardService 是后台活动管理访问注册奖励配置和领取记录的唯一入口。
service AdminRegistrationRewardService {
rpc GetRegistrationRewardConfig(GetRegistrationRewardConfigRequest) returns (GetRegistrationRewardConfigResponse);
rpc UpdateRegistrationRewardConfig(UpdateRegistrationRewardConfigRequest) returns (UpdateRegistrationRewardConfigResponse);
rpc ListRegistrationRewardClaims(ListRegistrationRewardClaimsRequest) returns (ListRegistrationRewardClaimsResponse);
}
// FirstRechargeRewardService 拥有 App 首冲奖励查询和 wallet 充值事实消费入口。
service FirstRechargeRewardService {
rpc GetFirstRechargeRewardStatus(GetFirstRechargeRewardStatusRequest) returns (GetFirstRechargeRewardStatusResponse);
rpc ConsumeFirstRechargeReward(ConsumeFirstRechargeRewardRequest) returns (ConsumeFirstRechargeRewardResponse);
}
// AdminFirstRechargeRewardService 是后台活动管理访问首冲奖励配置和发放记录的唯一入口。
service AdminFirstRechargeRewardService {
rpc GetFirstRechargeRewardConfig(GetFirstRechargeRewardConfigRequest) returns (GetFirstRechargeRewardConfigResponse);
rpc UpdateFirstRechargeRewardConfig(UpdateFirstRechargeRewardConfigRequest) returns (UpdateFirstRechargeRewardConfigResponse);
rpc ListFirstRechargeRewardClaims(ListFirstRechargeRewardClaimsRequest) returns (ListFirstRechargeRewardClaimsResponse);
}
// SevenDayCheckInService 拥有 App 七日签到查询和签到命令。
service SevenDayCheckInService {
rpc GetSevenDayCheckInStatus(GetSevenDayCheckInStatusRequest) returns (GetSevenDayCheckInStatusResponse);
rpc SignSevenDayCheckIn(SignSevenDayCheckInRequest) returns (SignSevenDayCheckInResponse);
}
// AdminSevenDayCheckInService 是后台活动管理访问七日签到配置和领取记录的唯一入口。
service AdminSevenDayCheckInService {
rpc GetSevenDayCheckInConfig(GetSevenDayCheckInConfigRequest) returns (GetSevenDayCheckInConfigResponse);
rpc UpdateSevenDayCheckInConfig(UpdateSevenDayCheckInConfigRequest) returns (UpdateSevenDayCheckInConfigResponse);
rpc ListSevenDayCheckInClaims(ListSevenDayCheckInClaimsRequest) returns (ListSevenDayCheckInClaimsResponse);
}
// AdminGrowthLevelService 是后台等级配置访问 activity-service 的唯一入口。
service AdminGrowthLevelService {
rpc ListLevelConfig(ListLevelConfigRequest) returns (ListLevelConfigResponse);
rpc UpsertLevelTrack(UpsertLevelTrackRequest) returns (UpsertLevelTrackResponse);
rpc UpsertLevelRule(UpsertLevelRuleRequest) returns (UpsertLevelRuleResponse);
rpc UpsertLevelTier(UpsertLevelTierRequest) returns (UpsertLevelTierResponse);
}
// AdminAchievementService is the admin entry for achievement definitions.
service AdminAchievementService {
rpc ListAchievementDefinitions(ListAchievementsRequest) returns (ListAchievementsResponse);
rpc UpsertAchievementDefinition(UpsertAchievementDefinitionRequest) returns (UpsertAchievementDefinitionResponse);
}
// AdminLuckyGiftService is the admin entry for lucky gift rule versions and draw audit.
service AdminLuckyGiftService {
rpc GetLuckyGiftConfig(GetLuckyGiftConfigRequest) returns (GetLuckyGiftConfigResponse);
rpc UpsertLuckyGiftConfig(UpsertLuckyGiftConfigRequest) returns (UpsertLuckyGiftConfigResponse);
rpc ListLuckyGiftConfigs(ListLuckyGiftConfigsRequest) returns (ListLuckyGiftConfigsResponse);
rpc ListLuckyGiftDraws(ListLuckyGiftDrawsRequest) returns (ListLuckyGiftDrawsResponse);
rpc GetLuckyGiftDrawSummary(GetLuckyGiftDrawSummaryRequest) returns (GetLuckyGiftDrawSummaryResponse);
}