fix(gateway): 3분 리셋 턴 간격을 허용한다
Ref의 실제 서버 계약인 120의 양의 약수 전체를 RESET, profile 기본값, 실행 중 설정에 일관되게 적용한다. 3분 DB seed와 Gateway API, 실제 Chromium 회귀 검증을 추가한다.
This commit is contained in:
@@ -983,7 +983,7 @@ test('loads server metadata defaults into the reset form and submits them', asyn
|
||||
runtimeRunning: true,
|
||||
requestBodies: [],
|
||||
resetDefaults: {
|
||||
turnTermMinutes: 20,
|
||||
turnTermMinutes: 3,
|
||||
sync: false,
|
||||
fiction: 0,
|
||||
extend: false,
|
||||
@@ -999,7 +999,7 @@ test('loads server metadata defaults into the reset form and submits them', asyn
|
||||
page.on('dialog', (dialog) => dialog.accept());
|
||||
|
||||
await page.goto('admin/servers/che%3Adefault/scenario');
|
||||
await expect(page.getByTestId('reset-turn-term')).toHaveValue('20');
|
||||
await expect(page.getByTestId('reset-turn-term')).toHaveValue('3');
|
||||
await page.getByText('고급 시나리오 옵션').click();
|
||||
await expect(page.getByTestId('reset-defaults-source')).toContainText('서버의 메타');
|
||||
await expect(page.getByTestId('reset-npc-mode')).toHaveValue('1');
|
||||
@@ -1013,7 +1013,7 @@ test('loads server metadata defaults into the reset form and submits them', asyn
|
||||
const request = JSON.stringify(
|
||||
state.requestBodies.find((entry) => entry.operation === 'admin.operations.requestReset')?.body
|
||||
);
|
||||
expect(request).toContain('"turnTermMinutes":20');
|
||||
expect(request).toContain('"turnTermMinutes":3');
|
||||
expect(request).toContain('"npcMode":1');
|
||||
expect(request).toContain('"joinMode":"onlyRandom"');
|
||||
expect(request).toContain('"limitMinutes":720');
|
||||
@@ -1125,7 +1125,7 @@ test('edits server reset defaults through profile metadata settings', async ({ p
|
||||
|
||||
await page.goto('admin/servers/che%3Adefault');
|
||||
await page.getByText('서버 리셋 기본 옵션').click();
|
||||
await page.getByTestId('meta-reset-turn-term').selectOption('10');
|
||||
await page.getByTestId('meta-reset-turn-term').selectOption('3');
|
||||
await page.getByTestId('meta-reset-npc-mode').selectOption('2');
|
||||
|
||||
await page.getByRole('button', { name: '메타 저장' }).click();
|
||||
@@ -1172,7 +1172,7 @@ test('edits server reset defaults through profile metadata settings', async ({ p
|
||||
state.requestBodies.find((entry) => entry.operation === 'admin.profiles.updateMeta')?.body
|
||||
);
|
||||
expect(request).toContain('"resetDefaults"');
|
||||
expect(request).toContain('"turnTermMinutes":10');
|
||||
expect(request).toContain('"turnTermMinutes":3');
|
||||
expect(request).toContain('"npcMode":2');
|
||||
});
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
export const PROFILE_TURN_TERM_MINUTES = [1, 2, 5, 10, 20, 30, 60, 120] as const;
|
||||
// A 12-month game year must fit an integer number of times in one wall-clock
|
||||
// day, so every positive divisor of 120 is valid.
|
||||
export const PROFILE_TURN_TERM_MINUTES = [1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 20, 24, 30, 40, 60, 120] as const;
|
||||
export const RESET_AUTORUN_OPTIONS = [
|
||||
'develop',
|
||||
'warp',
|
||||
@@ -24,7 +26,7 @@ export const RESET_AUTORUN_LABELS: ReadonlyArray<{ value: ResetAutorunOption; la
|
||||
export const RESET_OPTION_COPY = {
|
||||
turnTerm: {
|
||||
label: '턴 시간(분)',
|
||||
help: '한 턴이 진행되는 실제 시간입니다. ref 초기화 화면과 같은 분 단위 값입니다.',
|
||||
help: '한 턴이 진행되는 실제 시간입니다. 하루 경계를 정수 게임 연도로 유지하기 위해 120의 약수만 사용할 수 있습니다.',
|
||||
},
|
||||
sync: {
|
||||
label: '시간 동기화',
|
||||
|
||||
@@ -8,6 +8,7 @@ import { useToast } from '../composables/useToast';
|
||||
import AdminConsoleLayout from '../layouts/AdminConsoleLayout.vue';
|
||||
import {
|
||||
normalizeProfileResetDefaults,
|
||||
PROFILE_TURN_TERM_MINUTES,
|
||||
RESET_AUTORUN_LABELS,
|
||||
RESET_OPTION_COPY,
|
||||
SYSTEM_PROFILE_RESET_DEFAULTS,
|
||||
@@ -1078,11 +1079,7 @@ onBeforeUnmount(() => {
|
||||
class="w-full rounded border border-zinc-700 bg-zinc-950 px-3 py-2 text-sm text-white"
|
||||
data-testid="reset-turn-term"
|
||||
>
|
||||
<option
|
||||
v-for="minutes in [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 24, 30, 40, 60, 120]"
|
||||
:key="minutes"
|
||||
:value="minutes"
|
||||
>
|
||||
<option v-for="minutes in PROFILE_TURN_TERM_MINUTES" :key="minutes" :value="minutes">
|
||||
{{ minutes }}분
|
||||
</option>
|
||||
</select>
|
||||
|
||||
Reference in New Issue
Block a user