From aa180c54bc723f818f57b27dfbffe38524c9f4e7 Mon Sep 17 00:00:00 2001 From: hailin Date: Fri, 26 Dec 2025 11:43:02 -0800 Subject: [PATCH] =?UTF-8?q?fix(identity-service):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=92=B1=E5=8C=85=E9=87=8D=E8=AF=95=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E8=B6=85=E6=97=B6=E7=8A=B6=E6=80=81=E5=85=81=E8=AE=B8=E5=BC=BA?= =?UTF-8?q?=E5=88=B6=E9=87=8D=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 之前手动重试时如果状态是 generating/pending/deriving 会直接跳过, 导致卡住的钱包无法重新生成。现在增加超时检查(60秒),超时后允许强制重试。 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../services/user-application.service.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/backend/services/identity-service/src/application/services/user-application.service.ts b/backend/services/identity-service/src/application/services/user-application.service.ts index 1369018c..1e2f8854 100644 --- a/backend/services/identity-service/src/application/services/user-application.service.ts +++ b/backend/services/identity-service/src/application/services/user-application.service.ts @@ -1692,15 +1692,27 @@ export class UserApplicationService { try { const parsed = JSON.parse(currentStatusData); const status = parsed.status; + const updatedAt = parsed.updatedAt; - // 如果状态是 pending/generating/deriving,说明正在生成中,不触发重试 - if (status === 'pending' || status === 'generating' || status === 'deriving') { + // 检查状态是否超时(超过60秒未更新) + const TIMEOUT_MS = 60 * 1000; + const isTimeout = updatedAt && (Date.now() - new Date(updatedAt).getTime() > TIMEOUT_MS); + + // 如果状态是 pending/generating/deriving 且未超时,说明正在生成中,不触发重试 + if ((status === 'pending' || status === 'generating' || status === 'deriving') && !isTimeout) { this.logger.log( `[WALLET-RETRY] Wallet generation in progress (status=${status}) for user: ${userId}, skip retry`, ); return; // 正在生成中,无需重试 } + // 如果超时,记录日志并继续重试 + if (isTimeout) { + this.logger.log( + `[WALLET-RETRY] Status ${status} timed out for user: ${userId}, forcing retry`, + ); + } + // 如果状态是 completed,但数据库没有完整地址,说明是过期状态,继续重试 // 如果状态是 failed,允许重试 this.logger.log(