Final project for Go Web Development at Yandex Lyceum
- Go 82.1%
- Vue 8.4%
- TypeScript 7.8%
- Dockerfile 1.2%
- CSS 0.4%
| .github | ||
| agent | ||
| content | ||
| frontend | ||
| orchestrator | ||
| .gitignore | ||
| compose.yml | ||
| README.md | ||
Финальный проект 📟
Онлайн демо 🌐
Если вам не подходит ни один из способов запуска, то можете воспользоваться онлайн демо.
Структура проекта 📁
В папках orchestrator, agent и frontend есть описание решений, библиотек и файлов.
Документация API 📃
Документация запросов и ответом доступна по этому адресу. Здесь можно отправить запросы на бэкэнд, посмотреть примерные данные, а также пути и то, что делают запросы.
Функционал ✅
- CI - тестирование, сборка Docker образов (Готово)
- Решение простых математических выражений из +,-,*,/,(,) и чисел (Готово)
- Веб интерфейс (Готово)
- Документация (Готово)
- Решение выражений из !,^,% (В разработке)
- OpenTelemetry (Logging, Tracing, Metrics) (В разработке)
- Выбор Scope при получении выражений (Свои/Все) (В разработке)
- CD - автоматическое обновление Docker образов на сервере с помощью WatchTower (В разработке)
Как это работает? 🧪
Схема СУБД
- Valkey
taskId -> taskId;arg1;arg2;op;res
Запуск 🚀
1. Docker
- Установите Docker
- Откройте папку с проектом в терминале
- Пропишите:
docker compose up
2. Aeza (нужно, если нет возможности установить Docker)
- Перейдите на Terminator
- Следуйте шагам из части 1, но чтобы скачать проект - скачайте zip архив с GitHub
3. В ручную
- Установите PostgreSQL
- Создайте бд со следующими параметрами (см документацию оркестратора)
- Установите Valkey
- Установите Go
- В терминале из папки проекта запустите в разных окнах:
# запуск оркестратора
cd orchestrator
go run cmd/main.go
# запуск агента
cd agent
go run cmd/main.go
Тестирование 🛠
Тестирование завязано на TestContainers, поэтому Docker обязателен, смотрите README в папках agent и orchestrator для информации о каждом тесте.
# agent
cd agent && go test -v -cover ./...
# orchestrator
cd orchestrator && go test -v -cover ./...
Фидбэк 🖋
Если вам не трудно, то напишите ваш Фидбэк по решению в issues :)

