fix: 커맨드 차등 생명주기와 로그 그래프를 보강

장수 55종과 수뇌 35종의 상태, 로그, 메시지, 예약 턴 비교를 닫습니다.

실제 시나리오 프로필과 대표 PostgreSQL 수명주기, 즉시 외교와 출병 회귀를 추가하고 발견된 Ref 로그 및 생성 장수 저장 차이를 교정합니다.
This commit is contained in:
2026-08-23 21:48:29 +00:00
parent 85591c68ad
commit c63a49bd07
128 changed files with 8615 additions and 848 deletions
@@ -194,7 +194,7 @@ describe('scenario general pool within one reserved turn', () => {
state: buildState(),
schedule,
map,
reservedTurnStoreOptions: { maxGeneralTurns: 10, maxNationTurns: 12 },
reservedTurnStoreOptions: { maxGeneralTurns: 30, maxNationTurns: 12 },
commandRngFactory: ({ actionKey }) =>
actionKey === 'che_의병모집'
? new RandUtil(new SequenceRNG([0, 0.26, 0.51, 0.76]))
@@ -210,5 +210,29 @@ describe('scenario general pool within one reserved turn', () => {
expect(created.map((general) => general.npcState).sort()).toEqual([3, 4, 4, 4]);
expect(claims.every(Boolean)).toBe(true);
expect(new Set(claims.map((claim) => claim?.poolEntryId))).toEqual(new Set([1, 2, 3, 4]));
const createdIds = created.map((general) => general.id);
expect(harness.reservedTurnStore.peekDirtyState().generalInitializationIds).toEqual(createdIds);
for (const generalId of createdIds) {
expect(harness.reservedTurnStore.getGeneralTurns(generalId)).toEqual(
Array.from({ length: 30 }, () => ({ action: '휴식', args: {} }))
);
}
await harness.reservedTurnStore.flushChanges();
const persistedRows = harness.mockPrisma.generalTurn.createMany.mock.calls.flatMap(([input]) => input.data);
const persistedCreatedRows = persistedRows.filter((row) => createdIds.includes(row.generalId));
expect(persistedCreatedRows).toHaveLength(createdIds.length * 30);
for (const generalId of createdIds) {
expect(persistedCreatedRows.filter((row) => row.generalId === generalId)).toEqual(
Array.from({ length: 30 }, (_, turnIdx) => ({
generalId,
turnIdx,
actionCode: '휴식',
arg: {},
}))
);
}
});
});