DieCut Catalog — сетевая система FLEXPRINT для хранения, поиска и производственного учёта вырубных ножей. Windows-клиенты работают с единым API на Ubuntu-сервере; PostgreSQL хранит карточки, сотрудников и историю событий, а PDF-чертежи находятся в управляемом серверном хранилище.
Текущая стабильная версия: 1.3.0.
- каталог ножей с вкладками по оборудованию, поиском и фильтрами;
- карточка ножа с техническими параметрами, статусом, заказом JC и комментарием;
- статусы OK, Требует проверки, Списан, Заказать новый с цветовой индикацией;
- ввод производственного ресурса по тиражу в штуках или по пробегу в метрах с автоматическим взаимным пересчётом и вычислением целых оборотов;
- автоматический перевод ножа в статус Требует проверки при достижении заданного ресурса;
- импорт действующего Excel-каталога с нормализацией legacy-названий оборудования;
- создание, загрузка, скачивание и хранение версий PDF-чертежей;
- предварительное распознавание параметров при импорте PDF;
- справочники материалов, фигур и оборудования;
- личный кабинет и справочник сотрудников с историей действий;
- общий журнал с экспортом в CSV и PDF;
- разграничение прав и подтверждение опасных операций паролем администратора;
- аудит успешных входов и штатных выходов клиентов;
- управляемое обновление Windows-клиента: отдельные подтверждения загрузки и установки, видимый прогресс, проверка SHA-256, откат при ошибке и автоматический перезапуск.
Таблица показывает только поля, необходимые для ежедневной работы: номер, статус, вал, L, B, ручьи, этикетки в ручье, A1, A2, материал, ширину материала, фигуру, дату, оборудование, заказ JC, обороты и комментарий. Выбор строки открывает подробную карточку справа.
Оборудование выбирается из справочника. Базовый набор: Nilpeter/Lesko, MarkAndy, Big Lesko, Label Source. Поддерживаются фигуры: прямоугольник, круг, квадрат, специальная форма и перфорация.
Администратор может дополнять и корректировать материалы, фигуры и оборудование. Общий журнал содержит действия с ножами, тиражами, PDF, а также входы и выходы сотрудников. Журнал доступен для поиска и экспорта.
Личный кабинет хранит фотографию, контакты, должность, электронную почту и параметры учётной записи. В справочнике сотрудников отображается история работы: создание и изменение ножей, ввод тиражей, формирование PDF, удаление, вход и выход из системы.
Пользователь вводит либо тираж этикеток в штуках, либо пробег в метрах. Второй показатель и целое количество оборотов рассчитываются и накапливаются автоматически.
Пробег, м =
тираж / количество ручьёв
× (длина этикетки B, мм + horizontal break, мм)
/ 1000
Раппорт, м = вал × 3,175 / 1000
Обороты = округление вверх(пробег / раппорт)
Обороты всегда сохраняются целым числом. Каждая операция содержит дату, сотрудника, тираж и значения до/после. Сброс ресурса выполняется только после установки нового ножа.
Генератор создаёт векторный PDF в масштабе 1:1 по параметрам карточки:
- контур этикетки соответствует размерам L × B;
- учитываются ручьи, этикетки в ручье, раппорт и ширина материала;
- применяются радиус скругления и межэтикеточные расстояния;
- выводятся Corner radius, vertical break и horizontal break;
- каждая версия сохраняется отдельно и регистрируется в журнале.
Можно прикрепить существующий PDF или импортировать схему для предварительного извлечения параметров. Распознанные данные всегда подтверждаются пользователем перед созданием ножа.
- клиент не подключается напрямую к PostgreSQL или папке PDF;
- все операции проходят через HTTPS API с серверной валидацией;
- сервер хранит хеши паролей, а не исходные пароли;
- временный пароль нового сотрудника генерируется сервером и отправляется через SMTP;
- удаление ножа или сотрудника, списание и сброс ресурса требуют пароль администратора в Danger Zone;
- успешный вход и штатный выход клиента сохраняются в базе и видны в журналах;
- API ограничивает частоту попыток авторизации.
При аварийном отключении питания или сети точное время выхода определить невозможно. Оно фиксируется при штатном выходе или закрытии клиента.
Windows-клиент WPF
|
HTTPS
|
Caddy на Ubuntu
|
ASP.NET Core API
| |
PostgreSQL PDF-хранилище
- .NET 8 / ASP.NET Core — API и бизнес-логика;
- WPF + WPF UI — Windows 10/11 клиент;
- PostgreSQL 16 — каталог, сотрудники, события и метаданные;
- Docker Compose — развёртывание сервера;
- Caddy — HTTPS и reverse proxy;
- PDFsharp / PdfPig / ClosedXML — PDF и Excel.
DieCutCatalog.Api— HTTP API и серверные endpoints;DieCutCatalog.Domain— бизнес-модель и правила учёта;DieCutCatalog.Application— контракты и сценарии приложения;DieCutCatalog.Infrastructure— PostgreSQL, Excel, PDF, SMTP и файлы;DieCutCatalog.Desktop— Windows-клиент;DieCutCatalog.Updater— отдельный установщик клиентских обновлений;tests/DieCutCatalog.Infrastructure.Tests— быстрые тесты бизнес-логики на EF Core InMemory;tests/DieCutCatalog.PostgreSql.Tests— PostgreSQL integration-тесты на Testcontainers.
Требуются .NET 8 SDK и Docker.
docker compose up -d postgres
dotnet restore
dotnet run --project src/DieCutCatalog.ApiAPI: http://localhost:5080. Проверка состояния: GET /health.
Запуск клиента:
dotnet run --project src/DieCutCatalog.DesktopБыстрые тесты:
dotnet test tests/DieCutCatalog.Infrastructure.TestsPostgreSQL integration-тесты требуют запущенный Docker Engine. Они поднимают временный
postgres:16-alpine, применяют реальные миграции и удаляют контейнер после завершения:
dotnet test tests/DieCutCatalog.PostgreSql.TestsGitHub Actions выполняет сборку и оба набора тестов при каждом push и pull request.
Автономная Windows-сборка с updater:
./scripts/Build-ClientRelease.ps1 -Version 1.5.0Сервер разворачивается на Ubuntu через compose.production.yaml. Секреты передаются через серверный .env и не должны попадать в Git.
cp .env.example .env
docker-compose -f compose.production.yaml up -d --build
curl http://127.0.0.1:5080/healthAPI должен слушать только loopback-интерфейс и публиковаться наружу через HTTPS reverse proxy. Текущий тестовый адрес: https://diecutcatalog.duckdns.org.
Обновление клиента стало пошаговым: пользователь подтверждает загрузку, видит процент и объём, отдельно подтверждает установку, наблюдает её этапы, после чего приложение перезапускается и сообщает об успешном завершении.
Добавлен полноценный автоматический updater: клиент проверяет и скачивает пакет, отдельный процесс создаёт резервную копию, заменяет файлы, откатывает изменения при ошибке и перезапускает программу. Переход с 1.3.0 выполняется вручную один раз.
Усилена надёжность и безопасность: конкурентные начисления ресурса сериализуются транзакцией PostgreSQL, удалённые подключения клиента требуют HTTPS, производственные параметры ограничены безопасными максимумами, а каждый push и pull request проверяется быстрыми и PostgreSQL/Testcontainers-тестами.
HOTFIX-004: после сохранения карточки каталог сохраняет текущую страницу. Переход на страницу 1 выполняется только при переносе ножа на другую вкладку оборудования.
Добавлен двусторонний учёт производственного ресурса: оператор выбирает ввод тиража в штуках или пробега в погонных метрах. Система рассчитывает второй показатель и целое количество оборотов, проверяет взаимоисключающий ввод и сохраняет результаты в общей истории ножа.
HOTFIX-003: исправлен прямой переход из справочника сотрудников в справочники. Строки сотрудников выровнены по высоте, длинные должности переносятся на две строки без обрезания.
HOTFIX-002: текст и заголовки во всех таблицах выровнены по центру. В справочнике сотрудников длинные названия должностей отображаются в две строки шрифтом на один пункт меньше.
HOTFIX-001: исправлен расчёт A1 с учётом расстояний между ручьями. Отрицательная геометрия подсвечивается красным и блокирует сохранение и генерацию PDF; существующие значения A1 пересчитываются миграцией. Подробности приведены в CHANGELOG.md.
Первый стабильный релиз: сетевой каталог, учёт тиража и ресурса, Excel/PDF-импорт, параметрические чертежи прямоугольных, квадратных и круглых ножей, справочники, сотрудники, аудит и защищённые административные операции. Полный список изменений приведён в CHANGELOG.md.
Рабочая сетевая версия включает авторизацию, каталог и карточки ножей, Excel/PDF-импорт, справочники, сотрудников, учёт тиража и ресурса, аудит действий и сессий, PDF-хранилище и параметрическую генерацию схем. Изменения проверяются автоматическими тестами и развёрнуты на тестовом Ubuntu-сервере.
Клиент показывает установленную версию в боковом меню, автоматически проверяет новый релиз после входа и позволяет запустить ручную проверку кнопкой Check updates. Пакет загружается с рабочего сервера, проверяется по размеру и SHA-256, затем отдельный updater устанавливает его и перезапускает приложение.
Порядок сборки и публикации описан в docs/client-updates.md.



