# История изменений ERP WaterSurf ## 2025-02-25 20:45 UTC – Логотип убран; дизайн строго по брендбуку **Проблема**: Логотип в шапке был вставлен некорректно; визуально тема не отличалась от дефолтной — цвета и шрифты не применялись. **Решение**: - Логотип из шапки убран, в навбаре снова текст «WaterSurf ERP». - Файл логотипа удалён из `static/images/`. - Фон страницы и поверхностей задан только основными цветами бренда: Black #0A121D; границы — Gray 04 #617E92; текст — Gray 01 #F5F9FD, Gray 03 #B1C7D7, Gray 04 #617E92. - Ключевой акцент взят только из дополнительных цветов: Blue (02) #34AFE3, при наведении Blue (03) #00868F. - Добавлены переопределения Bootstrap с !important для body, main, кнопок, полей ввода, таблиц и типографики, чтобы гарантированно применялись Geologica и палитра брендбука. **Изменения**: base.html (удалён img логотипа), theme.css (палитра только из брендбука, акцент из дополнительных, переопределения Bootstrap), удалён app/static/images/watersurf-logo.png. --- ## 2025-02-25 20:15 UTC – Стили по корпоративному брендбуку и логотип **Проблема**: Нужно привести интерфейс в соответствие с корпоративным брендбуком WaterSurf и использовать логотип компании. **Решение**: - В `static/css/theme.css` применены цвета брендбука: базовый фон #0A121D, ключевой акцент #0DADBB, градации серого (Gray 01–04), дополнительные красный/зелёный для состояний. - Подключён шрифт Geologica (Google Fonts): Light для основного текста, Medium для подзаголовков, Bold для заголовков; учтён letter-spacing по брендбуку. - В шапке вместо текстовой надписи выводится логотип WaterSurf из `static/images/watersurf-logo.png`, рядом — подпись «ERP». - Сохранены тёмная тема, минималистичные карточки, таблицы и формы в едином стиле. **Изменения**: base.html (подключение Geologica, логотип в навбаре), theme.css (палитра и типографика брендбука), добавлен каталог static/images и файл watersurf-logo.png. --- ## 2025-02-25 19:00 UTC – Кнопка «Добавить строку» в табличной части заказов **Проблема**: В форме заказа клиента (и заказа поставщику) нельзя было добавить более одной строки товаров — formset показывал только одну пустую строку (extra=1). **Решение**: Под таблицей товаров добавлена кнопка «+ Добавить строку». По нажатию скрипт клонирует последнюю строку, подменяет в ней индексы полей (items-N-…) и значение TOTAL_FORMS в management form, очищает значения и добавляет строку в таблицу. Аналогично реализовано для заказа поставщику. --- ## 2025-02-25 18:45 UTC – Тёмная тема и обновлённый UI/UX **Проблема**: Требовался современный тёмный интерфейс, минималистичный и удобный. **Решение**: - Добавлена кастомная тема в `static/css/theme.css`: тёмный фон (оттенки #0d1117–#21262d), акцент бирюзовый (#2dd4bf), типографика Inter, переменные для цветов и отступов. - Обновлён базовый шаблон: навбар с выпадающими меню в стиле темы, контейнер контента с ограничением ширины, сообщения (alerts) в стиле темы. - Все страницы переведены на карточки (ws-card), таблицы (ws-table) с чередованием и hover, кнопки (btn-ws-primary, btn-ws-secondary, btn-ws-danger), формы с группами полей и явными метками. - Учтены UX: читаемый контраст, фокус на полях ввода, разделители секций в формах, выравнивание чисел в таблицах, пустые состояния. **Изменения**: base.html, registration/login.html, home.html, шаблоны references/* и documents/*, новый static/css/theme.css. В Dockerfile добавлен collectstatic при сборке образа. --- ## 2025-02-25 18:15 UTC – Ошибка 500 при создании заказа клиента **Проблема**: При открытии формы создания заказа клиента возникала ошибка 500 (AttributeError: 'NoneType' object has no attribute 'pk'). **Решение**: В `CustomerOrderCreate.get_context_data` при создании нового заказа `self.object` ещё None; обращение к `self.object.pk` вызывало исключение. Условие заменено на `if self.object and self.object.pk`, как в форме заказа поставщику. --- ## 2025-02-25 15:25 UTC – Исправление 403 CSRF при входе **Проблема**: При первой авторизации под администратором по https://erp.gen7x.ru возникала ошибка 403 (ошибка проверки CSRF, запрос отклонён). **Решение**: Добавлена настройка `CSRF_TRUSTED_ORIGINS` в `config/settings.py`: указаны `https://erp.gen7x.ru`, а также localhost/127.0.0.1 для локальной отладки. При работе за Nginx Django проверяет заголовок Origin/Referer; без доверенного источника запросы с формы логина отклонялись. **Изменения**: `app/config/settings.py` — список CSRF_TRUSTED_ORIGINS; опциональная переменная `CSRF_TRUSTED_ORIGINS` в `.env.example`. --- ## 2025-02-25 15:10 UTC – Администратор и SSH для Git **Проблема**: Требовалось создать первого администратора системы и настроить SSH для самостоятельного push в Gitea. **Решение**: - Создан Django superuser (логин `admin`, пароль и email записаны в `/root/docs/secrets/mysecrets.md`). - Сгенерирован SSH-ключ для Gitea (`/root/.ssh/gitea_cursor_agent_ed25519`), публичный ключ добавлен в учётную запись cursor-agent через API. - В `~/.ssh/config` добавлен хост `git.gen7x.ru` (HostName 127.0.0.1, Port 2222, User git, указан ключ). - Remote репозитория переведён на SSH: `git@git.gen7x.ru:cursor-agent/watersurf-erp.git`, выполнен успешный push ветки main. **Изменения**: - README.md: секция «Git и пуш» обновлена с указанием SSH и отсутствия необходимости ввода пароля с сервера. --- ## 2025-02-25 15:00 UTC – Начальная структура проекта (MVP) **Проблема**: необходимо развернуть систему класса ERP для WaterSurf с веб-доступом, авторизацией и хранением данных в БД. **Решение**: - Создан проект в `/opt/watersurf-erp`: Django 5, PostgreSQL 16, Docker Compose. - Реализованы справочники: Валюты, Виды заказов, Клиенты, Организации, Поставщики, Сотрудники, Счета денежных средств, Товары (CRUD через веб и админку). - Реализованы документы: Заказ клиента, Заказ поставщику (с табличными частями товаров), Поступление/Перемещение/Расход денежных средств (автогенерация номера). - Связь пользователь → сотрудник (профиль) для автоматической подстановки автора в документах. - Настроены Nginx (erp.gen7x.ru), добавлен volume в список бэкапов платформы. **Изменения**: - Структура приложения: config, references, documents, users; шаблоны, формы, представления; миграции. - Файлы: README.md, HISTORY.md, .env.example, docker-compose.yml, Dockerfile, manage.sh, requirements.txt. **Проверка**: ```bash cd /opt/watersurf-erp docker compose up -d docker compose logs -f app # Открыть https://erp.gen7x.ru/ (после перезагрузки Nginx) ```