hyapp-server/api/proto/activity/v1/activity.proto
2026-05-11 01:40:29 +08:00

475 lines
13 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;
}
// 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);
}
// TaskService 拥有 App 任务查询、事件进度消费和领奖状态。
service TaskService {
rpc ListUserTasks(ListUserTasksRequest) returns (ListUserTasksResponse);
rpc ClaimTaskReward(ClaimTaskRewardRequest) returns (ClaimTaskRewardResponse);
rpc ConsumeTaskEvent(ConsumeTaskEventRequest) returns (ConsumeTaskEventResponse);
}
// 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);
}