Skip to content

deksden/p_server

Repository files navigation

P Server

Общая информация

Система предназначена для организации планирования производственной деятельности. Детали об алгоритме планирования приведены в файле 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 добавлять ссылку на приходную партию. Для партии указываать срок годности. При планировании предупреждать об окончании срока годности сырья. При указании нормы расхода ресурсов указывать критичный срок годности ресурса.
  • (?) если запас ресурса снижается ниже минимального, но далее производство из этого ресурса не планируется - нужно ли заказывыать партию ресурса?

TODO

  • codegen: развиваем модуль, текущие идеи:

    • (+) роут для генерации кода для app.js (все ресурсы перечисляем, или предоставляем для генерации перечень ресурсов)
      • /codegen/app-imports: генерация кода для импорта модулей, включая иконки;
      • /codegen/app-resources: генерация списка ресурсов;
    • (+) генерация документации для модели и ее свойств: сделан роут /codegen/docs/model/:modelName
    • генерация полного модуля для модели:
      • делаем компоненты List, Edit и Create, вместе со всеми вспомогательными компонентами (фильтр, заголовок)
      • с перечнем всех полей, с отработкой типа полей;
      • для генерации возможно передать опции (через параметр запроса роута)
      • делаем систему автоматического обновления сгенерированного контента через сниппеты внутри кода, а также консольную утилиту, которая подключается к серверу, генерирует код в промежуточные файлы, обновляет код внутри приложения; утилита ведет учет diff между различными сниппетами и текущим состоянием сниппета при последнем обновлении. Если код был обновлен, то выдается ошибка обновления.
  • (+) exModular: добавить в routeBuilder возможность добавления обработчиков до стандартных before, after в разные события; - сделано свойство модели afterCreateBeg

  • plan:

  • exModular: добавить генерацию первичных ключей, а также внешних ключей

  • добавить работу системы загрузки данных seed с индексами и ограничениями

(!) разобраться со свойством required (!) для описания модели - сделать свойство itemCaption для описания, каким образом выглядит элемент этой модели, если на него ссылаются через внешний ключ; обычно это свойство caption или иное, которое описывает объект;

About

Server for P project

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published