# 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
- Генерация ссылки на оплату
- Ожидание подтвержения оплаты
- очередь на получение квоты (перед предоставлением доступа)
---