Files
watersurf-erp/README.md

105 lines
6.5 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.
# ERP WaterSurf
Веб-приложение класса ERP для компании WaterSurf: справочники, документы (заказы клиентов и поставщикам, поступления/перемещения/расход денежных средств), авторизация пользователей.
## Требования
- Docker и Docker Compose
- Доступ к порту 8010 на localhost (для reverse proxy)
## Установка и настройка
```bash
cd /opt/watersurf-erp
cp .env.example .env
# Отредактировать .env: пароли, SECRET_KEY, ALLOWED_HOSTS
docker compose up -d db
docker compose run --rm app python manage.py migrate --noinput
docker compose run --rm app python manage.py createsuperuser # первый пользователь
docker compose up -d app
```
## Конфигурация
Переменные в `.env` (см. `.env.example`):
- `POSTGRES_*` — учётные данные PostgreSQL для контейнера db
- `DB_*` — подключение приложения к БД
- `SECRET_KEY` — секрет Django (не менее 50 символов)
- `ALLOWED_HOSTS` — через запятую (например `erp.gen7x.ru,localhost`)
- `DEBUG` — true/false
- `REQUIRE_LOGIN` — по умолчанию `false`: доступ без входа (для отладки); `true` — включить авторизацию
## Использование
- Веб-интерфейс: после настройки Nginx — https://erp.gen7x.ru/
- Вход по логину/паролю (пользователи Django). При `REQUIRE_LOGIN=false` доступ без входа (для отладки).
- Меню: Справочники (валюты, виды заказов, клиенты, организации, поставщики, сотрудники, счета, товары), Документы (заказы клиентов, заказы поставщику, поступления, перемещения, расходы).
- Поле «Автор» в документах подставляется из профиля пользователя (связь User → Сотрудник в разделе «Пользователи» / админка).
## Структура проекта
- `app/config/` — настройки Django
- `app/references/` — справочники (модели, админка, CRUD)
- `app/documents/` — документы (модели, формы, представления, автогенерация номера)
- `app/users/` — профиль пользователя (связь с сотрудником)
- `app/templates/` — шаблоны
- `manage.py` — точка входа для команд Django
## Docker Compose
- Сервис `db`: PostgreSQL 16, volume `watersurf_erp_data`
- Сервис `app`: Django + Gunicorn, порт 8010:8000
Запуск: `./manage.sh start` или `docker compose up -d`
Остановка: `./manage.sh stop`
Логи: `./manage.sh logs app`
## Volumes
- `watersurf_erp_data` — данные PostgreSQL. Добавлен в `/opt/gen7x/backup/include-volumes.txt` для бэкапа.
## Логирование
- Логи приложения: stdout контейнера; при наличии каталога `app/logs` — также в `app/logs/app.log`.
- Просмотр: `docker compose logs -f app`
## Резервное копирование и восстановление
- Volume БД включён в список бэкапов платформы Gen7x. Восстановление — по инструкции платформы (restore.sh и т.д.).
## Troubleshooting
- Ошибка подключения к БД: проверить, что контейнер `db` запущен и переменные `DB_*` в `.env` совпадают с `POSTGRES_*`.
- 502 от Nginx: проверить, что приложение слушает на 8010 (`docker compose ps`, `docker compose logs app`).
- После добавления полей в модели: `docker compose run --rm app python manage.py makemigrations && docker compose run --rm app python manage.py migrate`.
## Команды управления
- Запуск: `./manage.sh start`
- Остановка: `./manage.sh stop`
- Перезапуск: `./manage.sh restart`
- Логи: `./manage.sh logs [service]`
## Git и пуш
Репозиторий: https://git.gen7x.ru/cursor-agent/watersurf-erp (клонирование по SSH: `git@git.gen7x.ru:cursor-agent/watersurf-erp.git`).
На сервере настроен SSH-доступ к Gitea (ключ cursor-agent, см. `/root/docs/secrets/mysecrets.md`), поэтому с этого сервера можно выполнять `git push` и `git pull` без ввода пароля.
## Планы развития фронтенда
Текущий интерфейс — Django-шаблоны + CSS (Material Design 3), один деплой, простая поддержка. В перспективе планируется:
- **Канбан заказов** (drag-and-drop по стадиям)
- **Живые уведомления** (обновления без перезагрузки)
- **Дашборды** (сводные виджеты, графики)
Для этого потребуется введение **отдельного SPA-фронтенда** (React + MUI или аналог) и **REST API** (Django REST Framework или расширение текущих views JSON-ответами). Рекомендуемый путь при переходе:
1. Выделить REST API для сущностей (заказы, документы, справочники), аутентификация (JWT или session/cookies для того же домена).
2. Создать отдельное приложение фронтенда (например `frontend/` или отдельный репозиторий), подключать его к `erp.gen7x.ru` или отдельному поддомену.
3. Постепенная миграция: сначала дашборд и канбан как отдельные страницы SPA, остальное можно оставить на шаблонах (гибрид) или перенести позже.
Текущая кодовая база (модели, формы, логика) остаётся основой; API будет оборачивать те же данные.