feat(routing): 域名级系统锁冲突提示 + 重置默认按钮 + 客户端 follow-up 清理
承接 FT-A(GET /v1/me/routing 含只读 system_locked_domains)。 - RoutingProfile 加只读 systemLockedDomains(fromJson 读/toJson 不输出); routing_screen 冲突检测扩展到域名类规则(domain/domain_suffix/domain_keyword 命中锁定域名 → systemLocked),ip_cidr 私网启发式保留。 - RoutingProfile.defaults() + RoutingProfileNotifier.resetToDefault()(复用 _persist:乐观更新/失败回滚/存成功后自动重连,保留只读 systemLockedDomains 不丢)+ routing_screen 加「重置默认」按钮与二次确认弹层(新增 3 个 l10n 键)。 - RoutingRule.copyWith 用哨兵支持 note 显式清空为 null;RoutingRule/Builtin/ RoutingProfile 加值相等 operator==/hashCode。 - T8 smartRouteSub 清理:grep 全仓发现 design/prototype/i18n/alias.json → gen_proto_i18n.mjs(CI 漂移闸)仍有活引用,按计划口径不删,详见 .superpowers/sdd/task-FTB-report.md。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -665,5 +665,8 @@ abstract class AppText {
|
||||
String get routingAddRule; // 添加规则 / Add rule
|
||||
String get routingImport; // 从文本导入 / Import from text
|
||||
String get routingReset; // 重置默认 / Reset defaults
|
||||
String get routingResetConfirmTitle; // 重置为默认规则? / Reset to defaults?
|
||||
String get routingResetConfirmBody; // 重置确认弹层正文 / Reset confirm dialog body
|
||||
String get routingResetConfirmAction; // 重置(确认按钮) / Reset (confirm action)
|
||||
String get routingBack; // 返回设置 / Back to settings
|
||||
}
|
||||
|
||||
@@ -575,6 +575,12 @@ class StringsEn extends AppText {
|
||||
@override
|
||||
String get routingReset => 'Reset defaults';
|
||||
@override
|
||||
String get routingResetConfirmTitle => 'Reset to defaults?';
|
||||
@override
|
||||
String get routingResetConfirmBody => 'This clears all your custom rules and restores the factory routing table.';
|
||||
@override
|
||||
String get routingResetConfirmAction => 'Reset';
|
||||
@override
|
||||
String get routingBack => 'Back to settings';
|
||||
@override
|
||||
List<String> get days7 => const ['M', 'T', 'W', 'T', 'F', 'S', 'S'];
|
||||
|
||||
@@ -575,6 +575,12 @@ class StringsEs extends AppText {
|
||||
@override
|
||||
String get routingReset => 'Restablecer';
|
||||
@override
|
||||
String get routingResetConfirmTitle => '¿Restablecer las reglas predeterminadas?';
|
||||
@override
|
||||
String get routingResetConfirmBody => 'Esto borra todas tus reglas personalizadas y restaura la tabla de enrutamiento de fábrica.';
|
||||
@override
|
||||
String get routingResetConfirmAction => 'Restablecer';
|
||||
@override
|
||||
String get routingBack => 'Volver a ajustes';
|
||||
@override
|
||||
List<String> get days7 => const ['L', 'M', 'X', 'J', 'V', 'S', 'D'];
|
||||
|
||||
@@ -575,6 +575,12 @@ class StringsJa extends AppText {
|
||||
@override
|
||||
String get routingReset => 'デフォルトに戻す';
|
||||
@override
|
||||
String get routingResetConfirmTitle => 'デフォルトのルールに戻しますか?';
|
||||
@override
|
||||
String get routingResetConfirmBody => 'カスタムルールをすべて削除し、出荷時の分流テーブルに戻します。';
|
||||
@override
|
||||
String get routingResetConfirmAction => 'リセット';
|
||||
@override
|
||||
String get routingBack => '設定に戻る';
|
||||
@override
|
||||
List<String> get days7 => const ['月', '火', '水', '木', '金', '土', '日'];
|
||||
|
||||
@@ -575,6 +575,12 @@ class StringsKo extends AppText {
|
||||
@override
|
||||
String get routingReset => '기본값 재설정';
|
||||
@override
|
||||
String get routingResetConfirmTitle => '기본 규칙으로 재설정할까요?';
|
||||
@override
|
||||
String get routingResetConfirmBody => '사용자 지정 규칙을 모두 삭제하고 초기 분산 규칙으로 복원합니다.';
|
||||
@override
|
||||
String get routingResetConfirmAction => '재설정';
|
||||
@override
|
||||
String get routingBack => '설정으로 돌아가기';
|
||||
@override
|
||||
List<String> get days7 => const ['월', '화', '수', '목', '금', '토', '일'];
|
||||
|
||||
@@ -575,6 +575,12 @@ class StringsRu extends AppText {
|
||||
@override
|
||||
String get routingReset => 'Сбросить настройки';
|
||||
@override
|
||||
String get routingResetConfirmTitle => 'Сбросить к правилам по умолчанию?';
|
||||
@override
|
||||
String get routingResetConfirmBody => 'Это удалит все ваши пользовательские правила и восстановит заводскую таблицу маршрутизации.';
|
||||
@override
|
||||
String get routingResetConfirmAction => 'Сбросить';
|
||||
@override
|
||||
String get routingBack => 'Назад к настройкам';
|
||||
@override
|
||||
List<String> get days7 => const ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'];
|
||||
|
||||
@@ -575,6 +575,12 @@ class StringsZh extends AppText {
|
||||
@override
|
||||
String get routingReset => '重置默认';
|
||||
@override
|
||||
String get routingResetConfirmTitle => '重置为默认规则?';
|
||||
@override
|
||||
String get routingResetConfirmBody => '将清除你自定义的所有规则,恢复到出厂分流表。';
|
||||
@override
|
||||
String get routingResetConfirmAction => '重置';
|
||||
@override
|
||||
String get routingBack => '返回设置';
|
||||
@override
|
||||
List<String> get days7 => const ['一', '二', '三', '四', '五', '六', '日'];
|
||||
|
||||
Reference in New Issue
Block a user