5.1 KiB
mes_core
Система управления производством (ShiftFlow MES)
📥 Как пушить код (Шпаргалка)
Если внес изменения в проект и готов отправить их на сервер ProdServ:
-
Подготовь файлы: git add .
-
Запечатай изменения: git commit -m "Подправил докерфайл сборки контейнера"
-
Отправляй в полет: 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-х контейнеров:
- db: PostgreSQL 15 (хранит все данные).
- web: Django + Gunicorn (логика приложения).
- nginx: Веб-сервер (раздает статику и проксирует запросы на Django).
🛠 Как это работает (Автоматизация)
Мы используем CI/CD через Gitea Actions. Тебе не нужно заходить на сервер руками.
- Push в main: Как только ты пушишь код, раннер на
ProdServпросыпается. - Сборка: Docker пересобирает образ
web, если изменилисьrequirements.txtили код. - Запуск:
entrypoint.shавтоматически накатывает миграции (migrate).collectstaticсобирает все стили в общую папку для Nginx.- Создается суперпользователь (если его еще нет) из данных
.env.
📁 Важные папки на сервере ProdServ
Проект живет здесь: /home/ack/projects/mes_core/
- staticfiles/ — здесь лежат стили и скрипты. Если админка стала "белой", проверь права этой папки (
chmod 755). - media/ — здесь будут лежать загруженные фото и файлы.
- .env — здесь лежат все пароли. Никогда не удаляй его!
🆘 Что делать, если "все упало"?
Если сайт по адресу 192.168.1.108 не открывается:
- Проверь логи контейнеров:
docker compose logs -f. - Убедись, что порты в
docker-compose.ymlстоят80:80. - Перезапусти всё одной командой:
docker compose up -d --build.
👤 Роли и доступ (Django Admin)
В проекте используются Django Groups как роли (можно назначать несколько ролей одному пользователю).
1) Роли (Groups)
Имена групп должны совпадать с кодами ролей:
operatormastertechnologistclerksupplyprod_headdirectorobserveradmin
Важно:
- Название группы — это "код роли" и используется прямо в коде (чувствительно к регистру).
- Писать строчными латиницей, без пробелов.
- Для панели снабженца используется группа
supply(экран/procurement/).
Как выдать роль пользователю:
- Открой Django admin:
/admin/ Users→ выбери пользователя- Поле
Groups→ добавь нужные группы Save
Примечание: на переходном этапе может использоваться fallback на EmployeeProfile.role, чтобы при деплое до раздачи групп доступ не "слетал".
2) Назначение станков и цехов пользователю
Станки/цеха назначаются через профиль сотрудника (Shiftflow):
- Django admin:
/admin/ Shiftflow→Employee profiles→ выбрать профиль пользователя- Поля:
Machines— закреплённые станки (обычно для операторов)Allowed workshops— доступные цеха (ограничение видимости/действий)Is readonly— режим "только просмотр" (удобно для руководителя/наблюдателя)
Save