Этот репозиторий хранит код и знания о внутренней системе для ведения заявок на закупку. Текущая версия стабильна и используется в продакшене.
CRM обеспечивает полный цикл работы с заявками: от создания и согласования до заказа и закрытия. Веб-интерфейс построен на Filament и адаптирован под несколько ролей с учётом прав доступа.
- Роли admin, purchaser и camp_manager с разграничением прав.
- Форма заявки с повторителем позиций: наименование, количество, цена, тех. требования и автоподсчёт итогов.
- Жизненный цикл заявки со статусами Draft → Submitted → Approved → Rejected → Ordered → Completed и архивированием.
- Импорт позиций из Excel с предпросмотром и валидацией.
- Шаблоны заявок для ускорения создания новых запросов.
- Дашборд с быстрыми действиями (создать, список заявок, помощь).
- Backend: Laravel 12 (монолит) — базовая структура и миграции присутствуют в репозитории.
- Admin UI: Filament v3 (панель настраивается через стандартный сервис-провайдер Filament).
- БД: SQLite локально, MySQL в продакшене.
- Хостинг: Beget (public_html с вынесенным
public/). - Аутентификация:
webguard, проверка доступа черезUser::canAccessPanel().
- Установите зависимости:
composer install. - Скопируйте окружение:
cp .env.example .envи сгенерируйте ключphp artisan key:generate. - Создайте SQLite-файл
database/database.sqliteили настройте MySQL в.env. - Примените миграции и сиды:
php artisan migrate --seed. - Запустите dev-сервер:
php artisan serve.
В сидере создаётся администратор admin@example.com с паролем password и демо-заявка.
php artisan migrate --forcephp artisan storage:linkphp artisan optimize:clearphp artisan config:cachephp artisan route:cache
- Ошибка 403 после логина означает, что
canAccessPanel()вернулfalse(часто из-заis_active = false). - При проблемах с ассетами на хостинге проверьте корректность
public_htmlи симлинкаstorage.