Skip to content

Документация разработчика

Andrew Nenashev edited this page Sep 17, 2023 · 22 revisions

Структура проекта. Ссылки

Какие есть задачи и как они решаются средствами electron, node, vue и typescript.

В двух словах

Линка - это десктоп-апп, который интегрируется с tobii eyetracker 5 и позволяет пользователю общаться с внешним миром посредством карточек, каждая из которых несет в себе произвольную порцию смысла. Карточки объединяются в наборы.

Набор - это произвольное количество карточек. Карточка - это визуальное представление для пользователя + озвучиваемый текст, который произносится по клику на карточку. В зависимости от потребностей пользователя, в наборе могут быть собраны отдельные слова и предложения или же понятные ребёнку картинки. В настройках каждой карточки добавляется текст, который будет озвучиваться text-to-speech модулем.

Архитектура и логика реализации

  • Сконфигурированные наборы приложение сохраняет в файлах с расширением .linka. Один набор - один файл.

  • Каждый такой файл - это zip-архив, который содержит Config.json с инфой о наборе, карточках, и всех необходимых ассетах (картинки для карточек). Подробнее

  • Метрики и регистрация пользователей вынесены в отдельный веб-сервис. Фронтенд периодически отправляет в него обновления со статистикой.

  • Для генерации аудио приложение каждый раз обращается в tts-генератор по адресу https://tts.linka.su/tts

  • Приложение запускает отдельный процесс, который работает с бекендом на C#. В проект этот процесс подключается как отдельный модуль tobii-electron

  • Под капотом этот модуль запускает регистратор событий, работающий с tobii SDK EyeLog

Управление

Управление интерфейсом организовано через обработку двух основных событий:

  • вход взгляда на элемент
  • срабатывание по удержанию взгляда на элементе

Длительность нажатия и размеры элементов всячески конфигурируются на отдельном экране с настройками.

Ответственность за регистрацию событий поделена между процессами: Все элементы с классом eye в UI пробрасываются вместе с текущим положением глаз в отдельный процесс через electron-ipc API. В этом отдельном процессе крутится программа, написанная на C#, которая занимается вычислениями. Обмен данными между процессами происходит с некоторым throttling-ом: изменения от фронта прилетают в бек и события пробрасываются назад с некоторой периодичностью.

Гайдлайны.

  • Code-style
  • Testing