Skip to content

Commit 189284b

Browse files
committed
fix(sdks): C++/C# demo 契约补齐——collection_query 函数不再落 action fallback
leaderboard 页发布失败(output source /items /total not found in schema)根因链:六语言 demo 共享同一 (game,env,function_id) 契约 槽位,契约 last-writer-wins——C++/C# demo 的 schema 表只覆盖 player.*,其余函数落到 action 形状 fallback({status,action}); C++ demo 重连注册时把 Go demo 写入的正确 collection schema (items/total)覆盖成 action 形状,发布校验按被污染契约校验 selector 路径必然失败(DB 实证:15:19:47 契约被整体改写)。 修复(与 Go/Java/JS/Python demo 对齐——它们本就全覆盖): - C++ demo_schema_for 补 order.list/leaderboard.list/inventory.list/ mail.list → items/total 形状 - C# SchemasFor 补同款(inventory.list 按其实际 wire 形态带 playerId 输入)
1 parent 5306d35 commit 189284b

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

sdks/cpp/examples/game_demo.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,14 @@ static std::pair<std::string, std::string> demo_schema_for(const std::string& id
7171
if (id == "player.update") return {player_fields_schema(true), player_out};
7272
if (id == "player.delete") return {id_required_in, "{\"type\":\"object\",\"properties\":{\"playerId\":" + std::string(SCHEMA_STR) + "}}"};
7373
if (id == "player.list") return {pagination_in, list_out};
74+
// 其余 collection_query 函数:与 Go demo 契约对齐(items/total 形状)。
75+
// 此前这些函数落到 action fallback({status,action}),六语言 demo
76+
// 共享同一契约槽位,C++ 注册会覆盖 Go 的正确 collection schema,
77+
// 导致页面发布校验 "/items,/total not found" 失败。
78+
if (id == "order.list") return {pagination_in, list_out};
79+
if (id == "leaderboard.list") return {pagination_in, list_out};
80+
if (id == "inventory.list") return {pagination_in, list_out};
81+
if (id == "mail.list") return {pagination_in, list_out};
7482
return {};
7583
}
7684

sdks/csharp/examples/GameDemo/Program.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,14 @@ static void EnrichDescriptor(FunctionDescriptor desc)
436436
"player.delete" => (BuildObj("{\"id\":" + SchemaStr + "}", new[] { "id" }), BuildObj("{\"playerId\":" + SchemaStr + "}")),
437437
"player.list" => (BuildObj("{\"page\":" + SchemaInt + ",\"pageSize\":" + SchemaInt + "}"),
438438
BuildObj("{\"items\":{\"type\":\"array\",\"items\":" + SchemaObj + "},\"total\":" + SchemaInt + "}")),
439+
// 其余 collection_query 函数与 Go demo 契约对齐(items/total):
440+
// 六语言共享同一契约槽位,action 形状 fallback 会覆盖正确
441+
// collection schema,导致页面发布校验失败。
442+
"order.list" or "leaderboard.list" or "mail.list"
443+
=> (BuildObj("{\"page\":" + SchemaInt + ",\"pageSize\":" + SchemaInt + "}"),
444+
BuildObj("{\"items\":{\"type\":\"array\",\"items\":" + SchemaObj + "},\"total\":" + SchemaInt + "}")),
445+
"inventory.list" => (BuildObj("{\"playerId\":" + SchemaStr + "}"),
446+
BuildObj("{\"items\":{\"type\":\"array\",\"items\":" + SchemaObj + "},\"total\":" + SchemaInt + "}")),
439447
_ => (BuildObj("{}"), "{\"type\":\"object\",\"properties\":{\"status\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"}}}"),
440448
};
441449

0 commit comments

Comments
 (0)