# ERP Viskomp v2.0

Новый проект с нуля взамен `manager`. Стек: чистый PHP (свой лёгкий MVC,
без фреймворков), PDO с ручными SQL-запросами (без ORM), PHP + jQuery на
фронте, свои стили (без Bootstrap — ждём брендбук).

## Структура

```
public/            document root (сюда указывает веб-сервер)
  index.php        точка входа (front controller)
  assets/          css/js
app/
  Core/            роутер, БД, сессии, auth, csrf, view — свой мини-фреймворк
  Controllers/     контроллеры (Admin/ — раздел администрирования)
  Views/           php-шаблоны (layouts/main.php — общий каркас)
routes/web.php     список маршрутов
config/app.php     настройки приложения (не секреты)
database/
  migrations/      .sql файлы миграций, выполняются по порядку имени
  migrate.php      CLI-скрипт применения миграций
  seed.php         CLI-скрипт начальных данных (права, роль admin, пользователь admin)
storage/logs/      логи (создаётся на сервере)
.env               настройки подключения к БД (не в репозитории)
```

## Установка на сервере (SSH)

1. Скопировать проект на сервер.
2. `composer install` (или `composer dump-autoload`, если зависимостей ещё нет).
3. Скопировать `.env.example` в `.env` и прописать реальные `DB_HOST`, `DB_NAME`, `DB_USER`, `DB_PASS`.
4. Создать пустую БД (например `erp_v2`) — делает пользователь вручную.
5. Применить миграции: `php database/migrate.php`
6. Засеять начальные данные: `php database/seed.php`
   — создаст роль `admin`, пользователя `admin` / `admin123` и базовые права.
   **Сразу же смените пароль администратора после первого входа.**
7. Направить document root веб-сервера на папку `public/`.

## Как устроены роли и права

- `roles` — список ролей (`slug`, `title`, `description`).
- `permissions` — список прав (`slug`, `title`, `module` — для группировки в форме).
- `role_permission`, `user_role` — связки many-to-many.
- Роль со slug `admin` имеет доступ ко всему автоматически (проверка в `Auth::can()`),
  её нельзя удалить через интерфейс.
- Каждый новый модуль при разработке должен:
  1. добавить свои права в `database/seed.php` (или отдельный seed-файл),
  2. обернуть свои маршруты в `Middleware::permission('slug.права')`.

## Что уже готово (этап 1 — фундамент)

- Авторизация (`/login`, `/logout`), сессии, CSRF-защита форм.
- Управление ролями и правами: `/admin/roles`.
- Управление пользователями и назначение им ролей: `/admin/users`.
- Базовый каркас интерфейса (сайдбар, таблицы, формы) на своих стилях —
  будет пересобран под брендбук, когда он придёт.

## Дальше

Следующий модуль обсуждаем и утверждаем отдельно перед разработкой —
у каждого раздела (Установки/Блоки, Заявки на работы, Склад/МТР, Журналы,
Табель, Поставщики, Реестры, ПТО, Автопарк) своя логика и связи с БД.