fix: 应用 xhigh 代码评审的跨端修复
来自 xhigh code review 的正确性/健壮性修复,覆盖全部五端: - server:鉴权 fail-closed、计量交叉校验与配额扣穿处理、WS 网关并发与关闭顺序、 billing 行锁、redis Lua 过期与设备槽刷新、config 解析 - desktop:会话 epoch 防串话、WS 重连与 401 处理、api 客户端复用、统一 usePoll 轮询 - android:握手时序、请求头封装、账户状态派生、按需重组 - ios:finalize 宽限、串行采集、错误文案服务端优先、删除死代码 CommitController Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -13,8 +13,19 @@ const ERR_TEXT = {
|
||||
ASR_UNAVAILABLE: '识别服务暂不可用,稍后再试',
|
||||
NETWORK: '连接中断,松开重试',
|
||||
NO_ACCESSIBILITY: '需要辅助功能权限才能上屏,去系统设置开启 dudu',
|
||||
UNAUTHORIZED: '登录已失效,去重新登录',
|
||||
SESSION_ABORTED: '连接断了,这次没说完,重新说一次',
|
||||
AUTH_HEADER: '登录信息有误,去重新登录',
|
||||
DEVICE_HEADER: '设备标识有误,重启应用试试',
|
||||
};
|
||||
|
||||
// 未知 code(如 BAD_REQUEST/INTERNAL)且服务端 message(omitempty)缺失时的兜底,
|
||||
// 保证任何 error 帧都有可见错误态,不会因空串停在「听写中」。
|
||||
const ERR_FALLBACK = '出错了,稍后再试';
|
||||
function errText(payload) {
|
||||
return ERR_TEXT[payload.code] || payload.message || payload.text || ERR_FALLBACK;
|
||||
}
|
||||
|
||||
function OverlayApp() {
|
||||
const [finalText, setFinalText] = useState('');
|
||||
const [partialText, setPartialText] = useState('');
|
||||
@@ -28,7 +39,7 @@ function OverlayApp() {
|
||||
listen('asr', ({ payload }) => {
|
||||
if (payload.type === 'partial') setPartialText(payload.text);
|
||||
else if (payload.type === 'final') { setFinalText((f) => f + payload.text); setPartialText(''); }
|
||||
else if (payload.type === 'error') setError(ERR_TEXT[payload.code] || payload.message || '');
|
||||
else if (payload.type === 'error') setError(errText(payload));
|
||||
}).then((off) => offs.push(off));
|
||||
return () => offs.forEach((off) => off());
|
||||
}, []);
|
||||
|
||||
Reference in New Issue
Block a user