All checks were successful
Deploy MES Core / deploy (push) Successful in 13s
111 lines
5.1 KiB
Markdown
111 lines
5.1 KiB
Markdown
# mes_core
|
||
|
||
Система управления производством (ShiftFlow MES)
|
||
|
||
## 📥 Как пушить код (Шпаргалка)
|
||
|
||
Если внес изменения в проект и готов отправить их на сервер `ProdServ`:
|
||
|
||
1. **Подготовь файлы**:
|
||
git add .
|
||
|
||
2. **Запечатай изменения**:
|
||
git commit -m "Подправил докерфайл сборки контейнера"
|
||
3. **Отправляй в полет**:
|
||
git push origin main
|
||
|
||
### 💊 Таблетка: Если не пушится (сброс авторизации)
|
||
Если Git "забыл" пароль или выдает ошибку Permission Denied:
|
||
|
||
|
||
# Очищаем старые привязки
|
||
```bash
|
||
git config --global --unset credential.helper
|
||
```
|
||
|
||
# Устанавливаем менеджер заново (для Windows)
|
||
```bash
|
||
git config --global credential.helper manager
|
||
```
|
||
# Снова пушим и вводим логин/пароль в окне
|
||
```bash
|
||
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. `Shiftflow` → `Employee profiles` → выбрать профиль пользователя
|
||
3. Поля:
|
||
- `Machines` — закреплённые станки (обычно для операторов)
|
||
- `Allowed workshops` — доступные цеха (ограничение видимости/действий)
|
||
- `Is readonly` — режим "только просмотр" (удобно для руководителя/наблюдателя)
|
||
4. `Save` |