---
# System prepended metadata

title: TAaS

---

# TAaS
## Plans
### На стороне TAaS
- Авторизация и регистрация через сторонние сервисы
  - oauth by VK/Google/etc
    - хранение ключей в конфиге (env/json-файле)
    - классы для обработки callback-ов от разных платформ
  - Обновление модели БД для хранения необходимой информации (платформа и данные о пользователе)
  - страница регистрации/авторизации (с учётом взаимодействия - одно и то же)
  - поддержка пользователей системы вне сторонних oauth (администраторы)
---
- Система квот
  - Конфигурация квот
    - регулируемые/учитываемые параметры для контейнеров (время, память, пр.)
  - Контроль квоты пользователя
    - Завершение пользовательской сессии (*переложить на LC?*) 
  - Страница выбора квот 
---
- PayAnyWay API
  - Обёртка для взаимодействия с API
    - хранение ключей в конфиге (env/json-файле)
    - авторизация в API
    - генерация ссылок для оплаты
  - Роут для получения фидбека (о статусе оплаты)
  - Коллекции БД для хранения заказов/на очереди обработки
---
### На стороне LC
- Дополнить/обновить параметризацию через /lti
  - перенести ограничения из пользователя в задачи пользователя
  - ввести ограничение на ttl контейнера
  - ввести параметр для disk_space
  - ввести параметр и реализовать
    - возможность неудаления неиспользуемого контейнера (отдельный флаг в документе бд контейнеров?)
    - возможность запуска контейнера сразу при переходе на задачу (без нажатия connect)
      - вкупе с параметром TTL может стать контролем  доступа к контейнеру/задаче, создавая контейнер на ровно время квоты 
        - *что делать, если пользователь перезапустит контейнер, тем самым обновив время жизни?*
          - ввести параметр на запрет перезапуска? (*если контейнеру/системе станет плохо - перезапуск будет необходим в рамках чистоты*) 
  - *??: ввести ограничение на время доступа к задаче*
    - *имеет свои плюсы и востребовано (на защитах/контрольных/экзаменах)*
    - *на данный момент в LC нет ничего подходящего для этого (кроме стороннего таймера)*

## Псевдо-диаграмма
[In progress, but u can check](https://viewer.diagrams.net/?highlight=0000ff&edit=_blank&layers=1&nav=1&title=TAaS.%20Scheme.drawio#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D15eQzjSoS1T9HEVzn8pa-ZKpjcncHIcpq%26export%3Ddownload)

## Roadmap

**Разделение и порядок по приоритету задач**

---
- Все задачи по OAuth/БД (как основопологающие для пользователей системы)
  - Регистрация/авторизация пользователей 
- Все задачи по квотам
  - Конфигурация и реализация квот пользователей
  - Возможность выбора пользователем квоты
  - Контроль пользовательских квот
- Обновление LC
  - Перенос ограничений в задачи пользователя 
  - Параметры LTI
    - Неудаление бездействующего контейнера
    - Поддержка указания TTL
*Так TAaS сможет осуществлять минимальную задачу - предоставлять пользователям доступ к терминалам LC (увы, бесплатно, просто за то, что у него есть аккаунт Vk/Google )*

---
- Задачи по взаимодействию с PayAnyWay
  - Авторизация в API
  - Генерация ссылки на оплату
  - Ожидание подтвержения оплаты 
    - очередь на получение квоты (перед предоставлением доступа) 
---

