Условие:
Необходима диаграмма связей компонентов программы
Таблица компонентов и их взаимодействия
| Уровень | Компонент | Назначение | Взаимодействует с |
| UI | MainActivity | Точка входа | NavController, ViewModels |
| | AuthScreen | Вход в систему | AuthViewModel |
| | SignUpScreen | Регистрация | AuthViewModel |
| | AggregateListScreen | Список агрегатов | AggregateListViewModel |
| | AggregateDetailsScreen | Детали агрегата | AggregateDetailsViewModel |
| ViewModel | AuthViewModel | Логика аутентификации | AuthRepository |
| | AggregateListViewModel | Управление списком | AggregateRepository |
| | AggregateDetailsViewModel | Управление деталями | AggregateRepository |
| Repository | AuthRepository | Работа с auth API | Supabase |
| | AggregateRepository | Работа с данными | Supabase |
| DI | SupabaseModule | Конфигурация Supabase | - |
| | RepositoryModule | Внедрение репозиториев | - |
Жизненный цикл основных процессов:
Аутентификация
1. Ввод данных (email/пароль)
2. AuthViewModel.signIn()
3. AuthRepository.signIn()
4. Supabase.auth
5. Обновление UI состояния
6. Переход к списку агрегатов
Загрузка списка агрегатов:
1. AggregateListScreen создан
2. AggregateListViewModel.init()
3. loadAggregates()
4. AggregateRepository.getAggregates()
5. Supabase запрос
6. Обновление UI
Просмотр деталей:
1. Клик по элементу списка
2. Навигация к AggregateDetailsScreen
3. AggregateDetailsViewModel.init()
4. Загрузка данных агрегата
5. Отображение информации
Состояния и переходы:
Состояния аутентификации:
Не аутентифицирован
В процессе входа
Аутентифицирован (роль определена)
Состояния данных:
Loading
Success (данные загружены)
Error (ошибка загрузки)
7. Обработка ошибок
Уровни обработки:
1. Repository → технические ошибки
2. ViewModel → бизнес-логика
3. UI → отображение пользователю
Способы уведомления:
- Snackbar (кратковременные)
- Dialog (требующие действия)
- Логирование (для отладки)
