From e90a0ba339ff861ae395b3f7480bc308498055c8 Mon Sep 17 00:00:00 2001 From: hided62 Date: Sun, 26 Jul 2026 21:10:36 +0000 Subject: [PATCH] fix general constraint failure log parity --- app/game-engine/src/turn/reservedTurnHandler.ts | 3 ++- packages/logic/src/actions/turn/general/che_주민선정.ts | 4 +++- .../test/turnCommandGeneralMatrix.integration.test.ts | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/game-engine/src/turn/reservedTurnHandler.ts b/app/game-engine/src/turn/reservedTurnHandler.ts index 07b8f07..417fe73 100644 --- a/app/game-engine/src/turn/reservedTurnHandler.ts +++ b/app/game-engine/src/turn/reservedTurnHandler.ts @@ -908,6 +908,7 @@ export const createReservedTurnHandler = async (options: { const result = evaluateConstraints(constraints, constraintCtx, view); if (result.kind !== 'allow') { const failedDefinition = definition; + const failedActionArgs = actionArgs; definition = fallbackDefinition; actionArgs = definition.parseArgs({}) ?? {}; actionKey = definition.key; @@ -916,7 +917,7 @@ export const createReservedTurnHandler = async (options: { blockedReason = reason; const meta = result.kind === 'deny' ? { constraintName: result.constraintName } : undefined; const failureText = - failedDefinition.formatConstraintFailure?.(reason, constraintCtx, actionArgs, view) ?? + failedDefinition.formatConstraintFailure?.(reason, constraintCtx, failedActionArgs, view) ?? `${reason} ${failedDefinition.name} 실패.`; logs.push(createActionLog(failureText, meta)); } diff --git a/packages/logic/src/actions/turn/general/che_주민선정.ts b/packages/logic/src/actions/turn/general/che_주민선정.ts index 3473edf..727954c 100644 --- a/packages/logic/src/actions/turn/general/che_주민선정.ts +++ b/packages/logic/src/actions/turn/general/che_주민선정.ts @@ -57,7 +57,9 @@ const remainCityTrust = (): Constraint => ({ test: (ctx, view) => { const city = ctx.cityId !== undefined ? (view.get({ kind: 'city', id: ctx.cityId }) as City | null) : null; if (!city) return { kind: 'deny', reason: '도시 정보가 없습니다.' }; - return readTrust(city) >= 100 ? { kind: 'deny', reason: '민심이 충분합니다.' } : { kind: 'allow' }; + return readTrust(city) >= 100 + ? { kind: 'deny', reason: '주민 선정은 충분합니다.' } + : { kind: 'allow' }; }, }); diff --git a/tools/integration-tests/test/turnCommandGeneralMatrix.integration.test.ts b/tools/integration-tests/test/turnCommandGeneralMatrix.integration.test.ts index e666456..8984b87 100644 --- a/tools/integration-tests/test/turnCommandGeneralMatrix.integration.test.ts +++ b/tools/integration-tests/test/turnCommandGeneralMatrix.integration.test.ts @@ -3754,6 +3754,9 @@ integration('general command full-constraint fallback matrix', () => { ignoredPathPatterns: ignoredLifecyclePaths, }) ).toEqual([]); + expect(semanticLogSignatures(core.after.logs)).toEqual( + semanticLogSignatures(addedReferenceLogs(reference.before, reference.after.logs)) + ); }, 120_000 );