Files
MES_Core/README.md
2026-04-13 07:36:57 +03:00

111 lines
5.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`