Сервис представляет собой систему управления терминами с возможностью визуализации связей между ними. Система состоит из двух основных компонентов:
- gRPC-сервис для управления данными
- Веб-интерфейс для взаимодействия с пользователем
- gRPC для взаимодействия между сервисами
- Flask для веб-интерфейса
- SQLite для хранения данных
- Cytoscape.js для визуализации графа терминов
- Docker
- Docker Compose
- Клонирование репозитория:
git clone <repository-url>
cd <repository-name>- Сборка и запуск контейнеров:
docker compose up --build- Проверка статуса контейнеров:
docker compose psОжидаемый результат:
NAME COMMAND SERVICE STATUS PORTS
lab8-dictionary-1 "python -m dictionar…" dictionary running 0.0.0.0:50051->50051/tcp
lab8-web-1 "python web_service.…" web running 0.0.0.0:5000->5000/tcp
После успешного запуска, веб-интерфейс доступен по адресу: http://localhost:5000
- Перейдите на главную страницу
- Вы увидите список всех терминов с их определениями
- Термины отсортированы по алфавиту
- Нажмите кнопку "Добавить термин"
- Заполните форму:
- Название термина
- Определение
- Источник (опционально)
- Связанные термины (опционально)
- Нажмите "Создать"
- Найдите нужный термин в списке
- Нажмите кнопку редактирования (иконка карандаша)
- Внесите изменения
- Нажмите "Сохранить"
- Найдите нужный термин в списке
- Нажмите кнопку удаления (иконка корзины)
- Подтвердите удаление
- Перейдите на вкладку "Визуализация"
- Вы увидите интерактивный граф терминов:
- Зеленые узлы - основные термины
- Синие узлы - связанные термины
- Стрелки показывают связи между терминами
- Возможности интерактива:
- Перетаскивание узлов
- Масштабирование колесиком мыши
- Клик по узлу для просмотра информации
Сервис предоставляет REST API для интеграции:
curl http://localhost:5000/api/termscurl -X POST http://localhost:5000/api/terms \
-H "Content-Type: application/json" \
-d '{
"name": "Новый термин",
"definition": "Определение термина",
"source": "Источник",
"related_terms": ["Связанный термин"],
"relations": {"Связанный термин": "связан с"}
}'curl -X PUT http://localhost:5000/api/terms/1 \
-H "Content-Type: application/json" \
-d '{
"name": "Обновленный термин",
"definition": "Новое определение"
}'curl -X DELETE http://localhost:5000/api/terms/1Для остановки сервиса выполните:
docker compose downДля полной очистки (включая базу данных):
docker compose down -v
rm -f dictionary.db