🐛 fix(explorer): 补齐 Redis 部分导入与库节点加载态

- 新增 Redis 导入预览与按 key 勾选导入能力

- 后端支持导入文件预读、选中 key 过滤与本地化错误提示

- 打开数据库节点时同步展示加载态并补齐前后端回归测试

Fixes #607

Fixes #609
This commit is contained in:
Syngnat
2026-06-30 21:17:00 +08:00
parent b0d8ccbf23
commit a9bae6bb3f
14 changed files with 1926 additions and 2 deletions

View File

@@ -6351,11 +6351,17 @@
"redis_viewer.action.delete_key": "Удалить Key",
"redis_viewer.action.delete_selected": "Удалить выбранное ({{count}})",
"redis_viewer.action.edit": "Редактировать",
"redis_viewer.action.export_all": "Экспортировать все",
"redis_viewer.action.export_selected": "Экспортировать выбранное",
"redis_viewer.action.change_import_file": "Изменить файл импорта",
"redis_viewer.action.import": "Импортировать",
"redis_viewer.action.load_all": "Загрузить все",
"redis_viewer.action.load_more": "Загрузить еще",
"redis_viewer.action.new_key": "Создать",
"redis_viewer.action.refresh": "Обновить",
"redis_viewer.action.rename_key": "Переименовать Key",
"redis_viewer.action.select_all_import_keys": "Выбрать все Key для импорта",
"redis_viewer.action.select_import_file": "Выбрать файл импорта",
"redis_viewer.action.select_all_loaded": "Выбрать все загруженные",
"redis_viewer.action.select_group": "Выбрать",
"redis_viewer.action.set_ttl": "Задать TTL",
@@ -6368,6 +6374,9 @@
"redis_viewer.confirm.delete_stream_entry": "Удалить эту запись Stream?",
"redis_viewer.field.field_name": "Имя поля",
"redis_viewer.field.fields_json": "Поля JSON:",
"redis_viewer.field.import_conflict_mode": "Обработка существующих Key",
"redis_viewer.field.import_file": "Файл импорта",
"redis_viewer.field.import_keys": "Keys для импорта",
"redis_viewer.field.key": "Key",
"redis_viewer.field.member": "Участник:",
"redis_viewer.field.new_key_name": "Новое имя Key",
@@ -6383,6 +6392,8 @@
"redis_viewer.label.keys_count": "Загружено ключей: {{count}}",
"redis_viewer.label.length": "Длина: {{count}}",
"redis_viewer.label.node_count": "Узлов: {{count}}",
"redis_viewer.label.import_database": "Исходная БД: db{{database}}",
"redis_viewer.label.import_selection": "Выбрано {{selected}} из {{total}} Keys",
"redis_viewer.label.original_key": "Исходный Key: {{key}}",
"redis_viewer.message.add_failed": "Не удалось добавить: {{detail}}",
"redis_viewer.message.add_success": "Добавлено",
@@ -6394,9 +6405,16 @@
"redis_viewer.message.delete_failed": "Не удалось удалить: {{detail}}",
"redis_viewer.message.delete_success": "Удалено",
"redis_viewer.message.deleted_keys": "Удалено Keys: {{count}}",
"redis_viewer.message.export_failed": "Не удалось экспортировать: {{detail}}",
"redis_viewer.message.export_selection_required": "Выберите хотя бы один Key для экспорта",
"redis_viewer.message.export_success": "Экспортировано Keys: {{count}}",
"redis_viewer.message.fields_json_invalid": "Поля JSON недействительны",
"redis_viewer.message.fields_must_be_json_object": "Поля должны быть объектом JSON",
"redis_viewer.message.fields_required": "Укажите хотя бы одно поле",
"redis_viewer.message.import_failed": "Не удалось импортировать: {{detail}}",
"redis_viewer.message.import_file_required": "Сначала выберите файл импорта",
"redis_viewer.message.import_selection_required": "Выберите хотя бы один Key для импорта",
"redis_viewer.message.import_summary": "Импортировано {{imported}} Keys, пропущено {{skipped}} существующих Keys",
"redis_viewer.message.key_check_failed": "Не удалось проверить целевой Key: {{detail}}",
"redis_viewer.message.key_missing_removed": "Key больше не существует или истек и был удален из списка",
"redis_viewer.message.key_name_copied": "Имя Key скопировано",
@@ -6422,10 +6440,13 @@
"redis_viewer.modal.edit_field": "Редактировать поле: {{field}}",
"redis_viewer.modal.edit_index": "Редактировать индекс {{index}}",
"redis_viewer.modal.edit_value": "Редактировать значение",
"redis_viewer.modal.import_keys": "Импортировать Redis Key",
"redis_viewer.modal.new_key": "Новый Key",
"redis_viewer.modal.rename_key": "Переименовать Key",
"redis_viewer.modal.set_ttl": "Задать TTL",
"redis_viewer.modal.update_score": "Обновить оценку",
"redis_viewer.option.import_overwrite": "Перезаписывать существующие Key",
"redis_viewer.option.import_skip_existing": "Пропускать существующие Key",
"redis_viewer.notice.large_keyspace_mode": "Включен режим производительности для большого keyspace. Отрисовка узлов упрощена, сохраняется до {{count}} развернутых групп.",
"redis_viewer.placeholder.key_name": "Имя Key",
"redis_viewer.placeholder.member_value": "Введите значение участника",
@@ -6440,6 +6461,7 @@
"redis_viewer.search.fuzzy": "Нечетко",
"redis_viewer.state.connection_not_found": "Подключение не найдено",
"redis_viewer.state.empty_selection": "Выберите Key, чтобы просмотреть детали",
"redis_viewer.state.import_preview_empty": "Выберите файл экспорта Redis, просмотрите его и отметьте Keys для импорта",
"redis_viewer.table.action": "Действия",
"redis_viewer.table.field": "Поле",
"redis_viewer.table.fields": "Поля",
@@ -6480,6 +6502,9 @@
"redis.backend.error.connect_attempt_failed": "Попытка подключения {{attempt}} завершилась ошибкой: {{detail}}",
"redis.backend.error.connect_failed": "Не удалось подключиться к Redis: {{detail}}",
"redis.backend.error.connect_tls_setup_failed": "Сбой настройки TLS на попытке {{attempt}}: {{detail}}",
"redis.backend.error.export_no_keys": "Нет Key для экспорта",
"redis.backend.error.import_no_keys_selected": "Не выбраны Keys для импорта",
"redis.backend.error.import_payload_invalid": "Файл импорта Redis недействителен: {{detail}}",
"redis.backend.error.invalid_node_address": "Недопустимый адрес узла Redis: {{address}}",
"redis.backend.error.invalid_port": "Недопустимый порт Redis: {{address}}",
"redis.backend.error.node_address_required": "Адрес узла Redis не может быть пустым",
@@ -6497,7 +6522,9 @@
"redis.backend.message.add_success": "Добавление выполнено",
"redis.backend.message.connect_success": "Подключение выполнено",
"redis.backend.message.delete_success": "Удаление выполнено",
"redis.backend.message.export_success": "Экспорт выполнен",
"redis.backend.message.flush_success": "Очистка выполнена",
"redis.backend.message.import_success": "Импорт выполнен",
"redis.backend.message.rename_success": "Переименование выполнено",
"redis.backend.message.select_db_success": "База данных переключена",
"redis.backend.message.set_success": "Значение задано",