merge: sync feature/N7Web into feature/N7Web-Tech

# Conflicts:
#	apps/web-console/service-worker.js
#	tests/e2e/test_seat_web_api.py
#	tests/unit/test_assistant_frontend_contract.py
#	tests/unit/test_vue_frontend_contract.py
This commit is contained in:
Miayui
2026-09-16 16:19:13 +08:00
10 changed files with 658 additions and 87 deletions
+6 -1
View File
@@ -568,7 +568,11 @@
const verificationStatus = String(telemetry.verification_status || "").toLowerCase();
const failureMessage = String(execution?.message || "").trim();
const aborted = abortedStates.has(executionStatus);
const explicitlyBlocked = executionStatus === "blocked"
|| verificationStatus === "blocked"
|| Boolean(telemetry.authorization_reason);
const executionFailed = executionStatus === "failed"
|| explicitlyBlocked
|| verificationStatus === "failed_or_blocked";
const missingWindowFeedback = /0x388/i.test(failureMessage) && (
/no fresh valid/i.test(failureMessage)
@@ -579,7 +583,8 @@
|| /未收到.*(?:有效|新鲜).*遮阳帘.*位置/.test(failureMessage)
);
const safetyBlocked = executionFailed && !submitted && (
missingWindowFeedback
explicitlyBlocked
|| missingWindowFeedback
|| missingShadeFeedback
|| /refusing (?:blind )?motion/i.test(failureMessage)
|| /拒绝(?:启动机构|盲动|执行)/.test(failureMessage)
+7 -2
View File
@@ -1224,7 +1224,9 @@
}
showGscuResult(result);
showToast(
action === "learn" ? `IR ${slot} 学习完成,槽位回读已确认。` : `${action} 指令处理完成。`,
action === "learn"
? `IR ${slot} 学习完成并已加入自然语言解析;实际下发仍需 NFC 授权。`
: `${action} 指令处理完成。`,
"success",
);
} catch (error) {
@@ -1275,7 +1277,10 @@
$("[data-gscu-action-names]", card).value,
"tcp",
).then((value) => {
showToast(`IR ${value.slot} 的控制对象与执行动作已保存。`, "success");
showToast(
`IR ${value.slot} 已保存并立即加入自然语言解析;实际下发仍需 NFC 授权。`,
"success",
);
}).catch((error) => {
showToast(error.message, "error");
}).finally(() => { save.disabled = false; });
+1 -1
View File
@@ -1,4 +1,4 @@
const CACHE_VERSION = "cognitive-agent-pad-v316-sidebar-accordion";
const CACHE_VERSION = "cognitive-agent-pad-v318-tech-nfc-routing";
const SHELL_CACHE = `${CACHE_VERSION}-shell`;
const RUNTIME_CACHE = `${CACHE_VERSION}-runtime`;
const APP_SHELL = [