feat: refine AI navigation and accessibility recovery

This commit is contained in:
2026-08-26 22:58:26 +08:00
parent c6f98b5445
commit 9ccbdfead4
15 changed files with 521 additions and 203 deletions
+33
View File
@@ -5,6 +5,7 @@ import 'package:miaoji_zhang/shared/api/backend_identity.dart';
import 'package:miaoji_zhang/shared/api/business_api.dart';
import 'package:miaoji_zhang/shared/api/sse_frame_accumulator.dart';
import 'package:miaoji_zhang/shared/services/current_ledger_store.dart';
import 'package:miaoji_zhang/shared/services/screenshot_channel.dart';
import 'package:miaoji_zhang/shared/widgets/app_icons.dart';
void main() {
@@ -176,6 +177,38 @@ void main() {
expect(report.balance, 2400);
});
test('无障碍连接状态区分重连、正常和异常', () {
final reconnecting = RecognitionStatus.fromMap({
'accessibilityAuthorized': true,
'accessibilityConnected': false,
'accessibilityConnectionState': 'reconnecting',
'accessibilityLastConnectedAt': 1724472000000,
'settings': jsonEncode({'accessibilityEvents': true}),
});
final connected = RecognitionStatus.fromMap({
'accessibilityAuthorized': true,
'accessibilityConnected': true,
'accessibilityConnectionState': 'connected',
'settings': '{}',
});
final disconnected = RecognitionStatus.fromMap({
'accessibilityAuthorized': true,
'accessibilityConnected': false,
'accessibilityConnectionState': 'disconnected',
'settings': '{}',
});
expect(
reconnecting.accessibilityConnectionState,
AccessibilityConnectionState.reconnecting,
);
expect(reconnecting.accessibilityConnectionLabel, '正在重连');
expect(reconnecting.accessibilityLastConnectedAt, isNotNull);
expect(connected.accessibilityConnectionLabel, '已连接');
expect(disconnected.accessibilityConnectionLabel, '服务未连接');
expect(disconnected.accessibilityNeedsRecovery, isTrue);
});
test('分类图标目录至少 32 个且键值不重复', () {
final keys = AppIcons.categoryCatalog.map((item) => item.key).toList();
expect(keys.length, greaterThanOrEqualTo(32));