8881214213
Mechanical, behaviour-preserving removal of Stage N / TODO-N / phase (RN) references from comments, doc-comments, service READMEs, the current-state docs (ARCHITECTURE, FUNCTIONAL+_ru, TESTING, UI_DESIGN), config-file comments, and the .fbs/.proto schema comments. PLAN.md / PRERELEASE.md / CLAUDE.md keep the stage history. - Rename the only stage-named identifiers: registerStage8 -> registerSocialOps, registerStage11 -> registerLinkOps (gateway transcode). - Split stage6_test.go: TestEmailLoginFlow -> email_test.go, TestGuestAutoMatchLeavesNoStats (+ provisionGuest) -> account_test.go. - Regenerated proto bindings (push.pb.go, telegram_grpc.pb.go) from the de-staged .proto comments; FB Go/TS bindings unchanged (flatc strips schema comments). go build/vet/gofmt clean across modules; integration typecheck and pnpm check green.
42 lines
1.8 KiB
Protocol Buffer
42 lines
1.8 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
// Package scrabble.push.v1 is the backend -> gateway live-event control channel.
|
|
// The gateway opens Subscribe once at startup and keeps the stream open; the
|
|
// backend pushes one Event per notification intent. The payload is an opaque
|
|
// FlatBuffers message (the scrabblefb.* tables) that the gateway forwards to the
|
|
// client without re-interpreting it. The transport is plain gRPC server-stream
|
|
// (ARCHITECTURE.md §2); the client edge is Connect-RPC (gateway/proto/edge).
|
|
package scrabble.push.v1;
|
|
|
|
option go_package = "scrabble/pkg/proto/push/v1;pushv1";
|
|
|
|
// Push is the unidirectional live-event channel from backend to gateway.
|
|
service Push {
|
|
// Subscribe opens the single backend -> gateway event stream. The backend
|
|
// sends every event for every user; the gateway fans them out to the active
|
|
// client subscriptions by user_id.
|
|
rpc Subscribe(SubscribeRequest) returns (stream Event);
|
|
}
|
|
|
|
// SubscribeRequest opens a push subscription. gateway_id identifies the gateway
|
|
// instance for logging; the MVP backend keeps no per-gateway state.
|
|
message SubscribeRequest {
|
|
string gateway_id = 1;
|
|
}
|
|
|
|
// Event is one live-event frame. kind is the notification catalog kind
|
|
// (your_turn, opponent_moved, chat_message, nudge, match_found). payload is the
|
|
// FlatBuffers-encoded body for that kind. event_id is a correlation id the
|
|
// gateway carries through to the client envelope.
|
|
message Event {
|
|
string user_id = 1;
|
|
string kind = 2;
|
|
bytes payload = 3;
|
|
string event_id = 4;
|
|
// language routes an out-of-app push to a specific per-language bot: for a game
|
|
// event it carries the game's language ("en"/"ru") so the notification comes from the game's
|
|
// bot rather than the recipient's last-login bot. Empty falls back to the recipient's service
|
|
// language at the gateway.
|
|
string language = 5;
|
|
}
|