master
Feature: Реализация резервного копирования БД и рефакторинг навигации Профиля Основные изменения: 1. Резервное копирование (Backup): ◦ Реализован функционал экспорта и импорта базы данных Room для Android и iOS. ◦ Добавлен BackupRepository с логикой wal_checkpoint перед экспортом и корректной заменой файлов при импорте. ◦ Расширен ShareManager: добавлена поддержка отправки файлов (shareFile) через системные механизмы (Android FileProvider, iOS UIActivityViewController). ◦ Создан механизм FilePicker (expect/actual) для выбора файла базы данных из файловой системы устройства. ◦ Добавлен экран BackupScreen с информационным блоком о важности регулярных бэкапов. 2. Рефакторинг структуры настроек: ◦ Удален промежуточный экран "Настройки". ◦ Пункты «Шаблон сообщения», «Напоминания» и «Резервное копирование» вынесены в прямой доступ в раздел «Приложение» экрана Профиля. ◦ Оптимизирована навигация через SettingNavigationProvider. 3. Логирование и среда: ◦ В интерфейс AppInfo добавлен флаг isDebug для определения типа сборки в commonMain. ◦ Подготовлена база для интеграции AppTracer: логирование событий MVI в BaseStore теперь автоматически выводится в Napier. 4. Исправления и тесты: ◦ Багфикс: Исправлена логика в GetAvailableTimeSlotsUseCase — теперь временные слоты не предлагаются, если запись заканчивается после завершения рабочего дня. ◦ Добавлены Unit-тесты для BackupStore (успешные/неудачные сценарии). ◦ Исправлены и актуализированы существующие тесты: CreateAppointmentStoreTest, GetAvailableTimeSlotsUseCaseTest. ◦ Удалено избыточное событие Init в MVI-сторах, где загрузка данных происходит в блоке init. Технические детали: • Android: Настроен FileProvider в AndroidManifest.xml для безопасной передачи .db файлов. • iOS: Реализована поддержка UIDocumentPickerViewController для выбора файлов. • Локализация: Добавлены строки для всех новых функций и уведомлений на русском языке.
Заголовок: Реализация функционала создания новой записи (Create Appointment) Описание изменений: • Бизнес-логика (Store): ◦ Реализован CreateAppointmentStore для управления состоянием экрана создания записи. ◦ Добавлена динамическая загрузка необходимых данных: список клиентов, доступные услуги, рабочие часы мастера и существующие записи на выбранную дату. ◦ Реализован расчет доступных временных слотов (recalculateSlots) с учетом длительности выбранных услуг и текущей занятости дня. ◦ Добавлен контроль "сверхурочного" времени (isOvertime): система предупреждает, если выбранные услуги выходят за рамки рабочего времени мастера. ◦ Реализована валидация формы создания записи (проверка выбора клиента, услуг и корректности временного слота). • Модели и данные: ◦ Интегрированы UseCase для работы с расписанием: GetAvailableTimeSlotsUseCase, GetWorkingDayByDateUseCase, SaveAppointmentUseCase и др. ◦ Обновлена логика работы с сущностями Appointment и ServiceShortInfo. ◦ Используется kotlin.uuid.Uuid для генерации идентификаторов новых записей. • UI и UX: ◦ Добавлена обработка событий выбора даты, времени, клиента и переключения услуг. ◦ Реализовано автоматическое суммирование стоимости и длительности выбранных услуг. ◦ Настроена навигация и уведомления пользователя (закрытие экрана после сохранения, показ ошибок). • Инфраструктура: ◦ Обновлены DI-модули (AppointmentDetailModule) для поддержки новых UseCase. ◦ Внесены правки в базовые компоненты UI (PeriodPickerBottomSheet, VerticalList) для поддержки процесса выбора параметров записи.
first_commit
Удален convection-plugin Реализован минимальный функционал
Добавлена дока проекта и карта экранов