ui/phase-14: rename planet end-to-end + order read-back

Wires the first end-to-end command through the full pipeline:
inspector rename action → local order draft → user.games.order
submit → optimistic overlay on map / inspector → server hydration
on cache miss via the new user.games.order.get message type.

Backend: GET /api/v1/user/games/{id}/orders forwards to engine
GET /api/v1/order. Gateway parses the engine PUT response into the
extended UserGamesOrderResponse FBS envelope and adds
executeUserGamesOrderGet for the read-back path. Frontend ports
ValidateTypeName to TS, lands the inline rename editor + Submit
button, and exposes a renderedReport context so consumers see the
overlay-applied snapshot.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Ilia Denisov
2026-05-09 11:50:09 +02:00
parent 381e41b325
commit f80c623a74
86 changed files with 7505 additions and 138 deletions
+28 -3
View File
@@ -220,6 +220,31 @@ table UserGamesOrder {
// — kept as a typed envelope for future extension.
table UserGamesCommandResponse {}
// UserGamesOrderResponse is the success acknowledgement returned for
// `MessageTypeUserGamesOrder`. Mirrors `UserGamesCommandResponse`.
table UserGamesOrderResponse {}
// UserGamesOrderResponse mirrors the engine's `PUT /api/v1/order`
// success body: it echoes the stored order back to the caller with
// the engine-assigned `updated_at` timestamp and per-command
// `cmd_applied` / `cmd_error_code` populated on every entry.
table UserGamesOrderResponse {
game_id: common.UUID;
updated_at: int64;
commands: [CommandItem];
}
// UserGamesOrderGet is the signed-gRPC request payload for
// `MessageTypeUserGamesOrderGet`. Fetches the player's stored order
// for the given turn — the caller always knows the current turn from
// the lobby record so `turn` is required and must be non-negative.
table UserGamesOrderGet {
game_id: common.UUID (required);
turn: int64;
}
// UserGamesOrderGetResponse carries the result of
// `MessageTypeUserGamesOrderGet`. `found = false` is how the FBS
// envelope conveys the engine's `204 No Content` (no order stored
// for this player on this turn). When `found = true`, `order` is
// the engine's stored order for the turn.
table UserGamesOrderGetResponse {
found: bool;
order: UserGamesOrder;
}