Кейс 03

Единый поиск по нескольким домашним сервисам

Один запрос возвращает сгруппированные результаты из разрешённых источников, не превращая их в общую неконтролируемую базу.

Контекст и задача

Файлы, сведения об имуществе, задачи и семейные списки находились в разных приложениях. Для проверки каждого источника приходилось повторять запрос вручную.

Исходные ограничения
  • Не смешивать права разных источников
  • Не создавать полную копию данных без необходимости
  • Сохранить понятную выдачу на телефоне
Изменение схемы

До

  • Каждый сервис имел собственную строку поиска
  • Пользователь заранее должен был знать, где искать сведения
  • Права источников нельзя было заменять общим доступом агрегатора

После

  • Запрос вводится один раз
  • Результаты разделены по источнику и типу
  • Недоступность поиска не блокирует прямую работу сервисов
Принятая архитектура
Nextcloud как один из файловых источников
Система учёта имущества с собственными правами
Семейные списки и задачи как отдельные источники
Адаптер запроса для каждого поддерживаемого сервиса
Агрегатор без постоянного общего хранилища содержимого
Мобильная выдача с группировкой и фильтрами

Почему так: Агрегация сокращает число повторных действий, но оставляет хранение, жизненный цикл и контроль доступа у исходной системы.

Ход реализации
  • Зафиксировано исходное состояние
  • Собрана тестовая схема
  • Проверены рабочий сценарий и откат
  • Изменения переданы владельцу

Риски

  • Ошибочный адаптер способен вернуть результат без нужной проверки прав
  • Недоступный источник замедляет или частично сокращает выдачу
  • Кэш может показать устаревшее состояние

Проверка

Проверялись одинаковые запросы под разными правами, отсутствие запрещённых источников, обозначение происхождения и поведение при временной недоступности одного сервиса.

Восстановление

Поскольку источники остаются самостоятельными, отключение агрегатора не меняет их данные. Его конфигурация и список подключений сохраняются отдельно.

Результат

Пользователь быстрее находит разрешённые сведения, а исходные сервисы сохраняют собственные права и структуру данных.

Следующий шаг

Разобрать похожую задачу

Архитектура всегда зависит от исходных ограничений. Начнём с безопасного описания текущего состояния.

Перейти к контактам