diff --git a/.release-notes/v1.0.0.md b/.release-notes/v1.0.0.md new file mode 100644 index 0000000..33b1473 --- /dev/null +++ b/.release-notes/v1.0.0.md @@ -0,0 +1,42 @@ +## 1.0.0 + +Стабильный релиз **1.0** — всё новое после **v0.20.0**. + +### Магазин + +- Промокоды (%, фикс. сумма), баллы лояльности, таймер акции в корзине +- Акционная цена на товаре: старая цена зачёркнута, новая цена и % скидки +- Подписка «сообщить о поступлении» + email при появлении на складе + +### Вход и админ + +- Passkey (WebAuthn) в профиле и на странице входа +- Один админ — только `ADMIN_EMAIL` в `.env` +- Админка: цены/скидки на товарах, промокоды, **обновление с Git** (`/admin/system`) +- Иконки и улучшенное отображение цен + +### Сервер + +- `scripts/install.sh` — интерактивная установка +- `SHOP_ROOT`, `server-update.sh`, `git-sync.sh`, systemd-скрипты +- Wiki: Server-Operations, Troubleshooting + +### Обновление с 0.20 + +```bash +export SHOP_ROOT=/opt/shop/shop10 # ваш каталог +git fetch origin && git checkout main && git pull +bash "$SHOP_ROOT/scripts/server-update.sh" +``` + +Или после настройки sudo: **Админ → Обновление →** ввести `update`. + +### Новые переменные (.env) + +```env +SHOP_ROOT=/opt/shop +ADMIN_EMAIL=admin@site.com +# Обновление из админки (опционально): +ADMIN_UPDATE_ENABLED=1 +ADMIN_UPDATE_USE_SUDO=1 +``` diff --git a/CHANGELOG.md b/CHANGELOG.md index 0eccec5..d11c688 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,43 @@ # Changelog +## [1.0.0] — 2026-05-17 + +Первый мажорный релиз после **v0.20.0**: безопасность, лояльность, акции на товары, удобная установка и обновление с сервера. + +### Безопасность и вход + +- **Passkey (WebAuthn):** привязка в профиле, вход без пароля +- **Один администратор:** только email из `ADMIN_EMAIL`; остальные регистрируются как `customer` +- Документация только под **PostgreSQL 17** (SQLite убран из описаний) + +### Магазин и маркетинг + +- **Промокоды:** процент или фиксированная скидка, мин. сумма, лимит использований, таймер до конца акции в корзине +- **Баллы лояльности:** списание при оплате, начисление с заказа +- **Цена со скидкой на товар:** `sale_price_cents`, дата окончания акции; в каталоге — зачёркнутая старая цена и бейдж +- **Уведомление о поступлении:** подписка при нулевом остатке, email при пополнении склада + +### Админ-панель + +- Товары: цена, цена со скидкой, срок акции, остаток +- Промокоды: создание и редактирование +- **Обновление с Git:** `/admin/system` — `git pull`, `npm install`, перезапуск `shop` (с подтверждением) +- Улучшенный UI: SVG-иконки, наглядные цены со скидкой + +### Установка и эксплуатация + +- Интерактивный **`scripts/install.sh`** (Docker или Ubuntu, админ, БД, SMTP) +- **`SHOP_ROOT`**, **`git-sync.sh`**, **`server-update.sh`** — обновление без detached HEAD +- **`install-shop-service.sh`**, **`wait-postgres.sh`**, освобождение порта 3000 +- Wiki: [Server-Operations](wiki/Server-Operations.md), универсальное развёртывание + +### Исправления + +- Пути `include` иконок в EJS (Internal Server Error после UI-обновления) +- Быстрое развёртывание Ubuntu: PGDG PostgreSQL 17, корректный каталог репозитория + +[1.0.0]: https://git.evilfox.cc/test/shop10/releases/tag/v1.0.0 + ## [0.20.0] — 2026-05-17 ### Роли и администрирование diff --git a/README.md b/README.md index ed156f9..1419599 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # Shop -**v0.20.0** — интернет-магазин на **Node.js** и **PostgreSQL 17**. +**v1.0.0** — интернет-магазин на **Node.js** и **PostgreSQL 17**. Два способа установки: [Docker Compose](#docker-compose-рекомендуется-для-теста) | [без Docker (Ubuntu)](#postgresql-17-без-docker) -Подробности релиза: [CHANGELOG.md](CHANGELOG.md) · [docs/RELEASE-0.20.md](docs/RELEASE-0.20.md) +Подробности релиза: [CHANGELOG.md](CHANGELOG.md) · [docs/RELEASE-1.0.md](docs/RELEASE-1.0.md) · [что нового после 0.20](docs/RELEASE-1.0.md#что-нового-после-020) **Сервер (установка, обновление, ошибки):** [wiki/Server-Operations.md](wiki/Server-Operations.md) · [wiki/Troubleshooting.md](wiki/Troubleshooting.md) @@ -361,19 +361,22 @@ scripts/ src/ ``` -## Релиз 0.20.0 +## Релиз 1.0.0 ```bash git clone /opt/shop cd /opt/shop -git checkout v0.20.0 +git checkout v1.0.0 ``` | Способ | Команда | |--------|---------| +| Интерактивно | `bash scripts/install.sh` | | Docker | `docker compose up -d --build` | | Без Docker | `bash scripts/setup-postgres-ubuntu.sh` → `systemctl start shop` | +Обновление с **0.20**: `bash "$SHOP_ROOT/scripts/server-update.sh"` или **Админ → Обновление**. + ## Репозиторий ```bash diff --git a/docs/RELEASE-1.0.md b/docs/RELEASE-1.0.md new file mode 100644 index 0000000..ca04ec8 --- /dev/null +++ b/docs/RELEASE-1.0.md @@ -0,0 +1,51 @@ +# Релиз 1.0.0 + +Мажорный релиз после **v0.20.0**. Кратко: passkey, лояльность и промокоды, акционные цены, уведомления о поступлении, обновление из админки, установщик `install.sh`. + +## Что нового после 0.20 + +| Область | Изменения | +|---------|-----------| +| Вход | Passkey (WebAuthn), один админ (`ADMIN_EMAIL`) | +| Цены | Скидка на товар, промокоды, баллы лояльности | +| Склад | Подписка на email при поступлении товара | +| Админка | Цены/скидки, промокоды, **/admin/system** — обновление с Git | +| UI | Иконки, зачёркнутая старая цена, бейдж «−N%» | +| Deploy | `install.sh`, `SHOP_ROOT`, `git-sync`, wiki Server-Operations | + +## Быстрый старт + +### Новая установка + +```bash +git clone /opt/shop +cd /opt/shop +git checkout v1.0.0 +bash scripts/install.sh +``` + +### Обновление с v0.20.0 + +```bash +export SHOP_ROOT=/opt/shop # или /opt/shop/shop10 +cd "$SHOP_ROOT" +git fetch origin && git checkout main && git pull origin main +bash "$SHOP_ROOT/scripts/server-update.sh" +``` + +## Админ: обновление без SSH + +1. В `.env`: `SHOP_ROOT`, `ADMIN_UPDATE_ENABLED=1` +2. Sudoers для `www-data` на `scripts/admin-web-update.sh` (см. `/admin/system`) +3. Админ → **Обновление** → проверить Git → ввести `update` + +## Тег и Release в Gitea + +```bash +git tag -a v1.0.0 -m "Release 1.0.0" +git push origin v1.0.0 +export GITEA_TOKEN=... +bash scripts/publish-gitea-release.sh 1.0.0 +``` + +Полный список: [CHANGELOG.md](../CHANGELOG.md) diff --git a/package.json b/package.json index b4c1e4e..871b39e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "shop", - "version": "0.20.0", + "version": "1.0.0", "description": "Интернет-магазин на Node.js с PostgreSQL 17", "main": "src/server.js", "scripts": { diff --git a/wiki/Home.md b/wiki/Home.md index 5e67a40..4175341 100644 --- a/wiki/Home.md +++ b/wiki/Home.md @@ -1,6 +1,6 @@ # Shop — документация -Интернет-магазин на **Node.js** и **PostgreSQL 17**. +Интернет-магазин на **Node.js** и **PostgreSQL 17**. Текущий релиз: **v1.0.0** (см. [CHANGELOG](../CHANGELOG.md), [RELEASE-1.0](../docs/RELEASE-1.0.md)). ## Способы установки