完善一键回归与真实输入准备

This commit is contained in:
2026-04-03 14:18:11 +08:00
parent 129ea935db
commit 114c524044
14 changed files with 599 additions and 29 deletions

View File

@@ -1,6 +1,7 @@
import { loadBackendAuthTokens, loadBackendBaseUrl } from '../../utils/backendAuth'
import { getEventPlay, launchEvent, type BackendCourseVariantSummary, type BackendEventPlayResult } from '../../utils/backendApi'
import { adaptBackendLaunchResultToEnvelope } from '../../utils/backendLaunchAdapter'
import { formatBackendPlayActionText, formatBackendPlayStatusText } from '../../utils/backendPlayCopy'
import { prepareMapPageUrlForLaunch } from '../../utils/gameLaunch'
import { HeartRateController } from '../../engine/sensor/heartRateController'
@@ -302,8 +303,8 @@ Page({
releaseText: result.resolvedRelease
? `${result.resolvedRelease.configLabel} / ${result.resolvedRelease.releaseId}`
: '当前无可用 release',
actionText: `${result.play.primaryAction} / ${result.play.reason}`,
statusText: result.play.canLaunch ? '准备完成,可进入地图' : '当前不可启动',
actionText: formatBackendPlayActionText(result.play.primaryAction, result.play.reason),
statusText: formatBackendPlayStatusText(result.play.canLaunch, result.play.primaryAction, result.play.reason),
assignmentMode: result.play.assignmentMode || '',
variantModeText: formatAssignmentMode(result.play.assignmentMode),
variantSummaryText: formatVariantSummary(result),

View File

@@ -1,5 +1,6 @@
import { loadBackendAuthTokens, loadBackendBaseUrl } from '../../utils/backendAuth'
import { getEventPlay, type BackendEventPlayResult } from '../../utils/backendApi'
import { formatBackendPlayActionText, formatBackendPlayStatusText } from '../../utils/backendPlayCopy'
type EventPageData = {
eventId: string
@@ -136,8 +137,8 @@ Page({
releaseText: result.resolvedRelease
? `${result.resolvedRelease.configLabel} / ${result.resolvedRelease.releaseId}`
: '当前无可用 release',
actionText: `${result.play.primaryAction} / ${result.play.reason}`,
statusText: result.play.canLaunch ? '可启动' : '当前不可启动',
actionText: formatBackendPlayActionText(result.play.primaryAction, result.play.reason),
statusText: formatBackendPlayStatusText(result.play.canLaunch, result.play.primaryAction, result.play.reason),
variantModeText: formatAssignmentMode(result.play.assignmentMode),
variantSummaryText: formatVariantSummary(result),
presentationText: formatPresentationSummary(result),

View File

@@ -0,0 +1,65 @@
function normalizeReason(reason?: string | null): string {
if (!reason) {
return ''
}
if (reason === 'user has an ongoing session for this event') {
return '当前活动存在未结束对局'
}
if (reason === 'no ongoing session for this event') {
return '当前活动没有进行中的对局'
}
if (reason === 'ready to launch') {
return '当前可直接开始'
}
if (reason === 'launch blocked') {
return '当前启动受限'
}
return reason
}
function normalizeAction(action?: string | null): string {
if (!action) {
return '--'
}
if (action === 'continue') {
return '继续上一局'
}
if (action === 'launch' || action === 'start') {
return '开始比赛'
}
if (action === 'preview') {
return '查看活动'
}
return action
}
export function formatBackendPlayActionText(action?: string | null, reason?: string | null): string {
const actionText = normalizeAction(action)
const reasonText = normalizeReason(reason)
if (!reasonText) {
return actionText
}
return `${actionText}${reasonText}`
}
export function formatBackendPlayStatusText(canLaunch: boolean, action?: string | null, reason?: string | null): string {
if (!canLaunch) {
return '当前不可启动'
}
if (action === 'continue') {
return '检测到未结束对局,可继续进入地图'
}
const reasonText = normalizeReason(reason)
if (reasonText) {
return `${reasonText},可进入地图`
}
return '可启动'
}