fix: 应用 xhigh 代码评审的跨端修复
ci / server (push) Failing after 13s
ci / design-tokens (push) Failing after 11s

来自 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:
wangjia
2026-06-13 11:50:08 +08:00
parent 50b49f3cbe
commit b5ab92a57e
42 changed files with 2125 additions and 469 deletions
+12 -1
View File
@@ -13,8 +13,19 @@ const ERR_TEXT = {
ASR_UNAVAILABLE: '识别服务暂不可用,稍后再试',
NETWORK: '连接中断,松开重试',
NO_ACCESSIBILITY: '需要辅助功能权限才能上屏,去系统设置开启 dudu',
UNAUTHORIZED: '登录已失效,去重新登录',
SESSION_ABORTED: '连接断了,这次没说完,重新说一次',
AUTH_HEADER: '登录信息有误,去重新登录',
DEVICE_HEADER: '设备标识有误,重启应用试试',
};
// 未知 code(如 BAD_REQUEST/INTERNAL)且服务端 messageomitempty)缺失时的兜底,
// 保证任何 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());
}, []);