# Презентация отдела HLC 2025-02-13

# Кто такие программисты
## Что делают программисты?
1. **Пишут код** — это набор инструкций, которые говорят компьютеру, что и как делать. Например, как открыть фотографию, отправить сообщение или посчитать что-то.
2. **Исправляют ошибки** — если программа работает неправильно, программисты ищут, где ошибка, и исправляют её. Это называется "отладка".
3. **Создают новые функции** — добавляют в программы новые возможности. Например, в приложении для фото можно добавить фильтры или стикеры.
4. **Тестируют** — проверяют, всё ли работает так, как задумано. Это важно, чтобы программа не "глючила".
5. **Работают в команде** — часто программисты сотрудничают с другими специалистами, например, дизайнерами или менеджерами, чтобы создать что-то полезное и удобное.
**Главная задача программиста** — решать задачи с помощью кода
## Что делают программисты HLC
*high level control system*
- Занимаются решением задач ~~высокого уровня~~ сортировки на уровне точек маршрута
- Создают веб-интерфейс для отображения статусов и изменения настроек
- Поддерживают старые проекты, помогая техподдержке
- Составляют ТЗ обсуждая реализацию с клиентом
- Разрабатывают архитектуру и способы взаимодействия с внешними системами или оборудованием
- Оптимизируют свой труд и процессы
## Чем отличается HLC от LLC
1. Задачами
	- LLC решают задачи управления группой железок (преимущественно механических или аналоговых)
	-  HLC управляет совокупностью разрозненных систем, одной из которых является LLC
2. Подходом к решению задач
	- LLC преимущественно реализует простые и чёткие алгоритмы управления, уменьшая вероятность ошибок до минимума
	- HLC допускает возможность ошибок, и должна обрабатывать их поддерживая работоспособность системы не смотря на их наличие
3. Оборудованием
	- LLC работает в условиях ограниченных ресурсов
	- HLC работает используя мощности одного или нескольких ПК
4. Языком программирования
	- LLC использует язык STEP7 ST похожий на CLang
	- HLC пишут на C# .Net, древняя версия которого известна как .Net framework встроенная в OS Windows
## Что ещё программисты умеют делать
- Писать прикладной софт, не связанный с сортировкой 
	- Отображение фотографий со сканеров штрихкодов
	- Отображение состояния системы конвейеров
	- Подсчёт статистики
- Чинить принтеры (по крайней мере пытаться)
- Устанавливать винду и линукс
- Настраивать инфраструктуру, настраивая готовые решения под свои задачи
	- https://cloud.pepe1984.ru
	- https://hlc.photomechanics.ru/
	- https://docs.pepe1984.ru/
	- https://pm.pepe1984.ru/
## Что же конкретно делают HLC?
- Обсуждение с клиентом ТЗ на созвоне, уточнение логики сортировки и способ обмена информацией
- Доработка ядра системы под конкретные условия и требования
- Реализация нестандартной логики или добавление устройств (принтеры, весы и т.п.)
- Расширение протоколов взаимодействия с ПЛК под нестандартную логику
- Настройка прод сервера (установка виртуализатора proxmox и нескольких виртуальных машин)
- Настройка инфраструктуры (база данных, сервисы HLC, логи, метрики)
- Активное участие в ПНР на последнем этапе. Проверка всей логики внутри и с клиентом
## Глобальные задачи
### Сделано
- Виртуализация систем
	- Возможность использовать несколько систем на одном компьютере (Linux, windows)
	- Разделение систем под задачи (хранение и обмен данными, логика, мониторинг, управление ПЛК)
- Контейнеризация сервисов HLC используя docker и docker-registry
	- Чёткое разделение версий одного приложения
	- Мониторинг и управление сервисами
	- Отсутствие потенциальных побочных эффектов
- Автоматические тесты логики используя симулятор оборудования
- Улучшение качества логов
- Стандартизация проектов используя одно и то же ядро системы
- Оптимизация взаимодействия с ПЛК используя протокол MQTT и MessagePack
- Система хранения паролей для совместного доступа
-  Nuget репозиторий для хранения отдельных библиотек (почти не задействован)
### В планах
- Настройка CI/CD процессов, автоматизированное обновление сервисов
- Добавление алертов на основе метрик
- Добавление метрик сервисов HLC
- Повышение надёжности системы путём репликации и резервирования сервисов на разных серверах
- Система регистрации ошибок (чтобы клиент имел возможность сообщить о проблеме где то кроме чата ТГ)
## Что мы используем в работе
- C# и .Net
- Linux
- PostgreSql 
- RabbitMq + Mqtt plugin
- Gitlab
- Docker + docker-repo
- OpenSearch + OpenSearch-dashboards
- Proxmox
- Prometheus + Grafana
- Obsidian + GitLab