fix(k1): use neutral process copy

This commit is contained in:
DCCONSTRUCTIONS
2026-08-14 20:03:13 +03:00
parent 4a24275ddc
commit 72a2f37c03
8 changed files with 48 additions and 48 deletions
@@ -212,7 +212,7 @@ export function activeStreamRecoveryPresentation(
title: "Восстанавливаем соединение",
statusLabel: "Восстановление связи",
tone: "neutral",
detail: "Проверяем прежний активный контур только для чтения. START, STOP и настройки сети не отправляются.",
detail: "Проверка прежнего активного контура только для чтения. START, STOP и настройки сети не отправляются.",
progressLabel: recoveryProgressLabel(recovery),
showSpinner: true,
forceFinishAvailable: activeStreamForceFinishAuthority(state) !== null,
@@ -38,14 +38,14 @@ function surfaceCopy({
? "СВЯЗЬ · ЛОКАЛЬНОЕ ЗАВЕРШЕНИЕ"
: presentation?.eyebrow ?? "СВЯЗЬ · АКТИВНЫЙ ПРИЁМ",
title: forceFinishing
? "Завершаем локальный приём"
? "Завершение локального приёма"
: presentation?.title ?? "Восстанавливаем соединение",
statusLabel: forceFinishing
? "Локальное завершение"
: presentation?.statusLabel ?? "Восстановление связи",
detail: forceFinishing
? "Закрываем только локальный приём и сохранение. Команда STOP устройству не отправляется."
: presentation?.detail ?? "Проверяем состояние активного приёма.",
: presentation?.detail ?? "Проверка состояния активного приёма.",
showSpinner: forceFinishing || presentation?.showSpinner === true,
forceFinishAvailable:
!forceFinishing && presentation?.forceFinishAvailable === true,
@@ -372,7 +372,7 @@ export function K1AcquisitionPipeline({
<header className="panel-heading">
<div>
<span className="section-eyebrow">{terminalPhysicalStopPending ? "ВОССТАНОВЛЕНИЕ · КОМАНДА ОТПРАВЛЕНА" : recoveredPhysicalStop ? "ВОССТАНОВЛЕНИЕ · ОСТАНОВКА" : terminalLocalRecovery ? "ВОССТАНОВЛЕНИЕ · ЛОКАЛЬНЫЙ КОНТУР" : terminalReadOnlyRecovery ? "ВОССТАНОВЛЕНИЕ · ТОЛЬКО ЧТЕНИЕ" : recoveredActiveSession ? "СВЯЗЬ ВОССТАНОВЛЕНА · АКТИВНЫЙ ПРИЁМ" : effectiveSessionIntent === "live" ? "ШАГИ 04–05 · ПРОЕКТ И ПРИЁМ" : "СЛУЖЕБНЫЙ РЕЖИМ"}</span>
<h2>{terminalPhysicalStopPending ? "Ожидаем подтверждение устройства" : recoveredPhysicalStop ? "Сканирование продолжается" : terminalLocalRecovery ? "Завершите локальный приём" : terminalReadOnlyRecovery ? "Ожидайте подтверждённое состояние" : recoveredActiveSession ? "Связь восстановлена · приём продолжается" : effectiveSessionIntent === "live" ? "Назовите проект и запустите приём" : "Повторите запись"}</h2>
<h2>{terminalPhysicalStopPending ? "Ожидание подтверждения устройства" : recoveredPhysicalStop ? "Сканирование продолжается" : terminalLocalRecovery ? "Завершите локальный приём" : terminalReadOnlyRecovery ? "Ожидайте подтверждённое состояние" : recoveredActiveSession ? "Связь восстановлена · приём продолжается" : effectiveSessionIntent === "live" ? "Назовите проект и запустите приём" : "Повторите запись"}</h2>
</div>
<StatusBadge tone={sourceTone}>{sourceLabel}</StatusBadge>
</header>
@@ -495,12 +495,12 @@ export function K1AcquisitionPipeline({
? controlPhase === "connecting"
? "Синхронизация…"
: controlPhase === "workspace-requested"
? "Входим в рабочее пространство…"
? "Переход в рабочее пространство…"
: controlPhase === "project-requested"
? "Готовим проект и локальный приём…"
? "Подготовка проекта и локального приёма…"
: controlPhase === "start-requested" || controlPhase === "initializing"
? "Запускаем приём…"
: "Подготавливаем проект и локальный приём…"
? "Запуск приёма…"
: "Подготовка проекта и локального приёма…"
: finalStartTarget
? "Запустить приём"
: preparedCanonicalLaunch
@@ -550,7 +550,7 @@ export function K1AcquisitionPipeline({
<Checker checked={replayLoop} label="Повторять по кругу" onChange={setReplayLoop} />
</div>
<Button variant="primary" icon={<Icon name="video" />} disabled={isBusy || sessionLocked || replayPath.trim().length === 0} onClick={() => void submitReplay()}>
{pendingAction === "replay" ? "Запускаем повтор…" : "Запустить повтор записи"}
{pendingAction === "replay" ? "Запуск повтора…" : "Запустить повтор записи"}
</Button>
</div>
)}
@@ -591,9 +591,9 @@ export function K1AcquisitionPipeline({
}}
>
{physicalStopInFlight
? "Останавливаем устройство…"
? "Остановка устройства…"
: pendingAction === "stop"
? physicalStopPresented ? "Останавливаем устройство…" : state?.source_mode === "replay" ? "Останавливаем повтор…" : "Завершаем локальный приём…"
? physicalStopPresented ? "Остановка устройства…" : state?.source_mode === "replay" ? "Остановка повтора…" : "Завершение локального приёма…"
: physicalStopPresented ? recoveredPhysicalStop ? "Остановить сканирование" : "Остановить устройство и запись" : state?.source_mode === "replay" ? "Остановить повтор" : preparedAcquisition ? "Завершить подготовленный приём" : "Завершить локальный приём"}
</Button>
) : null}
@@ -2953,8 +2953,8 @@ export function K1ProvisioningPipeline({
});
};
const attemptButtonLabel = connectionAttemptPresentation?.localPhase === "submitting"
? "Применяем настройки…"
: "Подтверждаем подключение…";
? "Применение настроек…"
: "Подтверждение подключения…";
const applyAction = connectionAttemptSettling ? (
<Button
width="full"
@@ -2996,7 +2996,7 @@ export function K1ProvisioningPipeline({
<span>{modeCopy.stepTitle}</span>
<strong>
{connectionAttemptSettling
? "Ожидаем подтверждение подключения"
? "Ожидание подтверждения подключения"
: connectionAttemptFailed
? "Подключение не подтверждено"
: "Готово к продолжению"}
@@ -3099,7 +3099,7 @@ export function K1ProvisioningPipeline({
onClick={() => void verifyConnectionRecoveryTarget()}
>
{connectionReconnectPending
? "Переподключаемся…"
? "Переподключение…"
: "Переподключиться"}
</Button>
) : null}
@@ -3139,7 +3139,7 @@ export function K1ProvisioningPipeline({
/>
{modeResetInFlight ? (
<p className="safety-note" role="status">
Завершаем прежнюю локальную границу. Новый поиск не начнётся автоматически.
Завершение прежней локальной границы. Новый поиск не начнётся автоматически.
</p>
) : null}
{activeScenarioReset ? (
@@ -3163,15 +3163,15 @@ export function K1ProvisioningPipeline({
? "Устройство выбрано"
: presentedPhysicalRecoveryRequired
? verificationActionPending
? "Переподключаемся…"
? "Переподключение…"
: "Нужно выбрать действие"
: networkRecoveryRequired
? appliedControlSettlementPending
? "Подтверждаем управление"
? "Подтверждение управления"
: "Управление не подтверждено · выбор заблокирован"
: presentedConnectionRecoveryRequired
? connectionReconnectPending
? "Переподключаемся…"
? "Переподключение…"
: connectionRecoveryTarget
? "Нужна проверка"
: "Нужен новый поиск"
@@ -3261,7 +3261,7 @@ export function K1ProvisioningPipeline({
onClick={() => void verifyPhysicalRecovery()}
>
{physicalReconnectPending
? "Переподключаемся…"
? "Переподключение…"
: "Переподключиться"}
</Button>
) : null}
@@ -3430,15 +3430,15 @@ export function K1ProvisioningPipeline({
status={
connectionAttemptSettling
? connectionAttemptPresentation?.localPhase === "submitting"
? "Применяем настройки…"
: "Подтверждаем подключение…"
? "Применение настроек…"
: "Подтверждение подключения…"
: connectionAttemptFailed && !networkRecoveryRequired
? "Подключение не подтверждено"
: verificationActionPending
? "Проверка…"
: networkRecoveryRequired
? appliedControlSettlementPending
? "Подтверждаем управление"
? "Подтверждение управления"
: "Управление не подтверждено"
: networkActionPending
? "Настройка…"
@@ -3474,7 +3474,7 @@ export function K1ProvisioningPipeline({
aria-busy="true"
>
<ActivityIndicator />
<strong>Проверяем подключение без изменения сети</strong>
<strong>Проверка подключения без изменения сети</strong>
</div>
) : networkRecoveryRequired && appliedControlSettlementPending ? (
<div
@@ -3485,7 +3485,7 @@ export function K1ProvisioningPipeline({
>
<ActivityIndicator />
<div>
<strong>Подтверждаем управляющее подключение</strong>
<strong>Подтверждение управляющего подключения</strong>
<p className="safety-note">
BLE-команда не повторяется. Дождитесь результата одной
сервисной проверки состояния без изменений.
@@ -71,7 +71,7 @@ export function k1SpatialPhasePresentation(
const presentations: Record<AcquisitionState, PhasePresentation> = {
preparing: {
label: "Подготовка локального приёма",
detail: "Проверяем контур и создаём сессию записи.",
detail: "Проверка контура и создание сессии записи.",
busy: true,
},
prepared: {
@@ -114,14 +114,14 @@ export function k1SpatialPhasePresentation(
busy: true,
},
stopping: {
label: softwareCommanded ? "Останавливаем K1 и запись" : "Останавливаем локальный приём",
label: softwareCommanded ? "Остановка K1 и записи" : "Остановка локального приёма",
detail: softwareCommanded
? "Команда отправлена; ожидаем подтверждённое состояние устройства."
: "Физическое состояние K1 остаётся неизвестным.",
busy: true,
},
finalizing: {
label: "Сохраняем локальную запись",
label: "Сохранение локальной записи",
detail: "Не закрывайте Mission Core до завершения финализации.",
busy: true,
},
@@ -247,7 +247,7 @@ export function K1SpatialControlsView({
? "Связь с потоком K1 потеряна"
: dataPlaneState === "stalled"
? "Поток K1 нестабилен"
: "Ожидаем подтверждённый поток K1",
: "Ожидание подтверждённого потока K1",
detail: !controlAuthoritative
? "Состояние acquisition сохранено как последнее известное; команды устройству не отправляются."
: "Управляющая сессия подтверждена, но живые данные пока не получили авторитетный статус.",
@@ -318,11 +318,11 @@ export function K1SpatialControlsView({
>
<span className="xgrids-k1-spatial-controls__action-label">
{physicalStopInFlight
? "Останавливаем устройство…"
? "Остановка устройства…"
: pendingAction === "stop"
? terminalPhysicalStopRequired ? "Останавливаем K1…" : softwareCommanded ? "Останавливаем устройство…" : "Останавливаем приём…"
? terminalPhysicalStopRequired ? "Остановка K1…" : softwareCommanded ? "Остановка устройства…" : "Остановка приёма…"
: stopping
? acquisition.state === "finalizing" ? "Сохраняем запись…" : "Остановка выполняется…"
? acquisition.state === "finalizing" ? "Сохранение записи…" : "Остановка выполняется…"
: terminalPhysicalStopRequired ? "Остановить K1" : "Остановить устройство и запись"}
</span>
</Button>
@@ -336,7 +336,7 @@ export function K1SpatialControlsView({
>
<span className="xgrids-k1-spatial-controls__action-label xgrids-k1-spatial-controls__action-label--local">
{pendingAction === "stop"
? "Завершаем локальный приём…"
? "Завершение локального приёма…"
: "Завершить локальный приём"}
</span>
</Button>