From c0e292535d8e75b69470bcf5267eb547dde5413c Mon Sep 17 00:00:00 2001 From: hailin Date: Mon, 29 Dec 2025 12:53:26 -0800 Subject: [PATCH] =?UTF-8?q?fix(service-party-app):=20=E4=BF=AE=E5=A4=8D=20?= =?UTF-8?q?handleIncomingMessage=20=E5=AD=97=E6=AE=B5=E5=90=8D=20snake=5Fc?= =?UTF-8?q?ase=20=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题: - gRPC proto-loader 使用 keepCase: true,返回 snake_case 字段名 - tss-handler.ts 的 handleIncomingMessage 期望 camelCase 字段名 - 导致 message_id, from_party, is_broadcast 等字段无法正确读取 - TSS 进程无法收到正确的消息,keygen 无法完成 修复: - handleIncomingMessage 参数改为 snake_case (message_id, from_party, is_broadcast) - 内部转换为 camelCase 格式后处理 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../electron/modules/tss-handler.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/backend/mpc-system/services/service-party-app/electron/modules/tss-handler.ts b/backend/mpc-system/services/service-party-app/electron/modules/tss-handler.ts index bfbd49de..1cef061a 100644 --- a/backend/mpc-system/services/service-party-app/electron/modules/tss-handler.ts +++ b/backend/mpc-system/services/service-party-app/electron/modules/tss-handler.ts @@ -384,13 +384,23 @@ export class TSSHandler extends EventEmitter { * 1. isPrepared=true, isRunning=false: 预订阅阶段,缓冲消息 * 2. isPrepared=true, isRunning=true, isProcessReady=false: 进程启动中,缓冲消息 * 3. isPrepared=true, isRunning=true, isProcessReady=true: 进程就绪,直接发送 + * + * Note: gRPC message uses snake_case field names due to keepCase: true in proto-loader */ - private handleIncomingMessage(message: { - messageId: string; - fromParty: string; - isBroadcast: boolean; + private handleIncomingMessage(rawMessage: { + message_id: string; + from_party: string; + is_broadcast: boolean; payload: Buffer; }): void { + // 转换为内部使用的 camelCase 格式 + const message = { + messageId: rawMessage.message_id, + fromParty: rawMessage.from_party, + isBroadcast: rawMessage.is_broadcast, + payload: rawMessage.payload, + }; + // 消息去重检查 if (this.database && message.messageId) { if (this.database.isMessageProcessed(message.messageId)) {