# BIgo Reader - User Access Guide

## Режимы доступа

### 1. **Гостевой режим (Guest Mode)**

**Когда активируется:**
- Пользователь отменил вход при запуске
- Сервер недоступен и пользователь не может войти

**Что доступно:**
- ✅ Демонстрационная книга (книга #2)
- ❌ Остальные книги недоступны
- ❌ Синхронизация прогресса не работает

**Как включить:**
1. Запустить `Start BIgo Reader.bat`
2. Нажать "Cancel" в окне входа
3. Выбрать "Да" в диалоге "Продолжить в гостевом режиме?"

**Сообщение:**
```
Вы не вошли в систему.

Хотите продолжить в гостевом режиме?

В гостевом режиме доступна только демонстрационная книга (книга #2).
Для полного доступа обратитесь к разработчикам.
```

---

### 2. **Зарегистрированный пользователь (Authenticated Mode)**

**Что доступно:**
- ✅ Все книги в базе данных
- ✅ Синхронизация прогресса с сервером
- ✅ Закладки, статистика чтения

**Как войти:**
1. Запустить `Start BIgo Reader.bat`
2. Ввести логин и пароль
3. Нажать "Login"

**Если сервер недоступен:**
- Используется кэш токена (действителен 7 дней)
- Сообщение: "Server unavailable, using cached token (valid for 7 days)"

---

## Источники данных

### **Local SQLite** (по умолчанию)
- Файл: `bigo_book/BIgo_Bookshelf.sqlite`
- Работает оффлайн
- Быстрый доступ

**Проверка доступности:**
- Если файл не найден → источник скрыт в диалоге выбора
- Пользователь видит только доступные источники

### **Remote API** (планируется)
- URL: `https://study.baduk.org/api/v1`
- Требует интернет
- Синхронизация с сервером

### **Local PostgreSQL** (для разработки)
- Подключение к локальному серверу PostgreSQL
- Только для тестирования

---

## Логика работы

### **Запуск приложения:**

```
1. Проверка аутентификации
   ├─ Если токен валиден → вход в систему
   └─ Если токена нет → показать LoginDialog
      ├─ Пользователь вошёл → полный доступ
      ├─ Отменил вход → предложить Guest Mode
      │  ├─ Да → гостевой режим (книга #2)
      │  └─ Нет → выход из приложения
      └─ Сервер недоступен → предложить Guest Mode

2. Загрузка данных
   ├─ Проверка источника в reader_config.json
   ├─ SQLite: проверка существования файла
   ├─ Если файл отсутствует → скрыть из списка
   └─ Подключение к доступному источнику

3. Выбор книги
   ├─ Guest Mode → фильтр: только книга #2
   └─ Authenticated → все книги
```

---

## Обработка ошибок

### **Сервер недоступен (HTTP 503)**
- Таймаут: 3 секунды
- Fallback: использование кэша до 7 дней
- Сообщение: "Server unavailable, using cached token"

### **SQLite файл не найден**
- Источник автоматически скрыт в `UnifiedDataManager.get_available_sources()`
- Пользователь видит только Remote API или PostgreSQL
- Нет ошибки "file not found"

### **Нет доступных источников**
- Показать сообщение: "No data sources available. Please check configuration."
- Выход из приложения

---

## Для разработчиков

### **Добавление нового источника:**

1. Отредактировать `bigo_reader/reader_config.json`:
```json
{
  "data_sources": {
    "my_source": {
      "type": "sqlite",
      "name": "My Custom Database",
      "sqlite_path": "path/to/database.sqlite",
      "icon": "📚",
      "description": "Моя локальная база"
    }
  }
}
```

2. Файл автоматически проверяется при `get_available_sources()`

### **Изменение списка книг для Guest:**

```python
# bigo_reader/auth/auth_manager.py
def get_allowed_books(self) -> Optional[list]:
    if self._guest_mode:
        return [2, 5, 7]  # Добавить ID книг
    return None
```

---

## Контакты

**Для получения полного доступа:**
- Email: support@baduk.org
- Сайт: https://study.baduk.org
