mes_core

Система управления производством (ShiftFlow MES)

📥 Как пушить код (Шпаргалка)

Если внес изменения в проект и готов отправить их на сервер ProdServ:

  1. Подготовь файлы: git add .

  2. Запечатай изменения: git commit -m "Подправил докерфайл сборки контейнера"

  3. Отправляй в полет: git push origin main

💊 Таблетка: Если не пушится (сброс авторизации)

Если Git "забыл" пароль или выдает ошибку Permission Denied:

Очищаем старые привязки

git config --global --unset credential.helper

Устанавливаем менеджер заново (для Windows)

git config --global credential.helper manager

Снова пушим и вводим логин/пароль в окне

git push origin main

🚀 ShiftFlow MES - Инструкция по деплою (Production)

🧩 Общая архитектура

Система работает в связке из 3-х контейнеров:

  1. db: PostgreSQL 15 (хранит все данные).
  2. web: Django + Gunicorn (логика приложения).
  3. nginx: Веб-сервер (раздает статику и проксирует запросы на Django).

🛠 Как это работает (Автоматизация)

Мы используем CI/CD через Gitea Actions. Тебе не нужно заходить на сервер руками.

  1. Push в main: Как только ты пушишь код, раннер на ProdServ просыпается.
  2. Сборка: Docker пересобирает образ web, если изменились requirements.txt или код.
  3. Запуск:
    • entrypoint.sh автоматически накатывает миграции (migrate).
    • collectstatic собирает все стили в общую папку для Nginx.
    • Создается суперпользователь (если его еще нет) из данных .env.

📁 Важные папки на сервере ProdServ

Проект живет здесь: /home/ack/projects/mes_core/

  • staticfiles/ — здесь лежат стили и скрипты. Если админка стала "белой", проверь права этой папки (chmod 755).
  • media/ — здесь будут лежать загруженные фото и файлы.
  • .env — здесь лежат все пароли. Никогда не удаляй его!

🆘 Что делать, если "все упало"?

Если сайт по адресу 192.168.1.108 не открывается:

  1. Проверь логи контейнеров: docker compose logs -f.
  2. Убедись, что порты в docker-compose.yml стоят 80:80.
  3. Перезапусти всё одной командой: docker compose up -d --build.

👤 Роли и доступ (Django Admin)

В проекте используются Django Groups как роли (можно назначать несколько ролей одному пользователю).

1) Роли (Groups)

Имена групп должны совпадать с кодами ролей:

  • operator
  • master
  • technologist
  • clerk
  • supply
  • prod_head
  • director
  • observer
  • admin

Важно:

  • Название группы — это "код роли" и используется прямо в коде (чувствительно к регистру).
  • Писать строчными латиницей, без пробелов.
  • Для панели снабженца используется группа supply (экран /procurement/).

Как выдать роль пользователю:

  1. Открой Django admin: /admin/
  2. Users → выбери пользователя
  3. Поле Groups → добавь нужные группы
  4. Save

Примечание: на переходном этапе может использоваться fallback на EmployeeProfile.role, чтобы при деплое до раздачи групп доступ не "слетал".

2) Назначение станков и цехов пользователю

Станки/цеха назначаются через профиль сотрудника (Shiftflow):

  1. Django admin: /admin/
  2. ShiftflowEmployee profiles → выбрать профиль пользователя
  3. Поля:
    • Machines — закреплённые станки (обычно для операторов)
    • Allowed workshops — доступные цеха (ограничение видимости/действий)
    • Is readonly — режим "только просмотр" (удобно для руководителя/наблюдателя)
  4. Save
Description
Система управления производством
Readme 1.2 MiB
Languages
Python 51.4%
HTML 47.8%
CSS 0.5%
Dockerfile 0.3%