Система предназначена для организации планирования производственной деятельности. Детали об алгоритме планирования приведены в файле readme-mrp.md
Система состоит из серверного проекта (этот проект) и клиентской части.
Серверный проект написан на javascript под node.js (тестировалось на версии v16.15, планируется тесты на v20). В качестве сервера базы данных используем SQLite3 через knex.js.
Параметры сервера (порт, на котором он слушает поступающие команды) указаны в файле .env
.
Необходимые для работы функции сервера:
-
система пользователей:
- управление пользователями,
- управление группами пользователей,
- управление полномочиями,
- авторизация: вход в систему,
- аутентификация: проверка полномочий при доступе к серверу
- информация: вернуть сведения о текущем пользователе
-
описание пользовательской модели:
- пользовательские объекты в системе с функциями:
- CRUD
- поиск,
- фильтр
- пользовательские объекты в системе с функциями:
(!) TODO:
- разобраться с форматом отображения чисел. У react admin сложная система форматирования, основанная на NumberFormat и описана в NumberFiels
- Разобраться со ссылками на ресурсы при декларировании моделей. Сейчас ссылки не проверяются. Нужно на этапе инициализации системы делать этап проверки ссылок в моделях (поля ref) - и выдавать ошибку при отсутствии нужной модели.
- Подумать над типом свойства модели enum - чтобы была возможность описания перечислений и сохранения в базе не значений, а их кодов
- product-stock, (+) date поля не все импортированы; (+) resource-stock, проблема с датами при seed файла
- (+) resource: зачем minOrder и orderPeriod - если это зависит от поставщика -> решить; зачем initialDate у ресурса? зачем defPrice если есть складская цена и цена у поставщика? initialDate?
- (+) разобраться с различными форматами даты при импорте seed файлов и работе с разными источниками - придумать как делать настройку (в seed файле, в описании поля дата и тп) - сделано поле format у свойства модели
- (?) в справочнике ProductStock и ResourceStock добавлять ссылку на приходную партию. Для партии указываать срок годности. При планировании предупреждать об окончании срока годности сырья. При указании нормы расхода ресурсов указывать критичный срок годности ресурса.
- (?) если запас ресурса снижается ниже минимального, но далее производство из этого ресурса не планируется - нужно ли заказывыать партию ресурса?
-
codegen: развиваем модуль, текущие идеи:
- (+) роут для генерации кода для app.js (все ресурсы перечисляем, или предоставляем для генерации перечень ресурсов)
/codegen/app-imports
: генерация кода для импорта модулей, включая иконки;/codegen/app-resources
: генерация списка ресурсов;
- (+) генерация документации для модели и ее свойств: сделан роут
/codegen/docs/model/:modelName
- генерация полного модуля для модели:
- делаем компоненты List, Edit и Create, вместе со всеми вспомогательными компонентами (фильтр, заголовок)
- с перечнем всех полей, с отработкой типа полей;
- для генерации возможно передать опции (через параметр запроса роута)
- делаем систему автоматического обновления сгенерированного контента через сниппеты внутри кода, а также консольную утилиту, которая подключается к серверу, генерирует код в промежуточные файлы, обновляет код внутри приложения; утилита ведет учет diff между различными сниппетами и текущим состоянием сниппета при последнем обновлении. Если код был обновлен, то выдается ошибка обновления.
- (+) роут для генерации кода для app.js (все ресурсы перечисляем, или предоставляем для генерации перечень ресурсов)
-
(+) exModular: добавить в routeBuilder возможность добавления обработчиков до стандартных before, after в разные события; - сделано свойство модели
afterCreateBeg
-
plan:
-
exModular: добавить генерацию первичных ключей, а также внешних ключей
-
добавить работу системы загрузки данных
seed
с индексами и ограничениями
(!) разобраться со свойством required (!) для описания модели - сделать свойство itemCaption для описания, каким образом выглядит элемент этой модели, если на него ссылаются через внешний ключ; обычно это свойство caption или иное, которое описывает объект;