From a71012680a233c2eac7173adb3a2e4407e053fab Mon Sep 17 00:00:00 2001 From: NW Date: Sat, 8 Aug 2026 11:55:52 +0100 Subject: [PATCH] =?UTF-8?q?docs:=20README=20=E2=80=94=20new=20Next.js=20ad?= =?UTF-8?q?min=20panel=20(admin-next/),=20tor=20schema=20update,=20project?= =?UTF-8?q?=20structure?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 989cd04..9465606 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,8 @@ - История транзакций и покупок - SaaS-система с автоматическим расчётом комиссий - **Мультиязычность (i18n)** — английский, испанский, немецкий с переключением в боте -- Админ-панель на порту 3001 с вкладкой локализации +- **Новая админ-панель** (Next.js 16 + Prisma + shadcn/ui) на порту 3000: дашборд, каталог, заказы, кошельки, лиды, ИИ-чатбот, аудит, настройки +- **Старая админка** (Express/EJS) на порту 3001 — бэкенд бота, сохранена для совместимости - Tor-прокси с двумя onion-сервисами (SSH + админка) - WireGuard VPN для безопасных транзакций @@ -51,7 +52,8 @@ docker compose up -d --build # 4. Проверить статус docker compose ps -curl http://localhost:3001/health +curl http://localhost:3001/health # бот + старая админка +curl -o /dev/null -w "%{http_code}\n" http://localhost:3000/login # новая админка ``` ## Настройка .env @@ -93,10 +95,16 @@ node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" ``` Internet → Tor Network → tor-proxy контейнер ├── Onion #1 :22 → хост SSH - └── Onion #2 :80 → telegram_shop_prod:3001 - (через Docker сеть tor_proxy_net) + └── Onion #2 :80 → tg_shop_admin:3000 + (новая Next.js админка, через Docker сеть tor_proxy_net) ``` +Новая админ-панель (`admin-next/`, Next.js 16 + Prisma + shadcn/ui): +- Работает на порту 3000 (контейнер `tg_shop_admin`) +- Использует **ту же SQLite БД**, что и бот (`db/shop.db`) — любые изменения мгновенно видны боту и наоборот +- Вход по токену `ADMIN_SECRET` / `SUPER_ADMIN_SECRET` (из `.env`) +- ИИ-чатбот: настройки в БД (`site_settings` ключи `chatbot_*`), бот обращается к `/api/chat` контейнера админки + ### Файлы Tor-прокси | Файл | Назначение | @@ -158,8 +166,10 @@ Docker автоматически собирает нативные модули │ │ telegram_shop_prod │ │ tor-proxy │ │ │ │ (node:22-alpine) │ │ (alpine:3.18 + tor) │ │ │ │ │ │ │ │ -│ │ Port 3001 │◄─┤ HiddenService :80 │ │ -│ │ Bot + Admin Panel │ │ HiddenService :22 → SSH│ │ +│ │ Port 3000 ←─────────────┼── Новая админка (Next.js) │ │ +│ │ Port 3001 ──────────────┼── Бот + старая админка (Express) │ +│ │ Bot + Admin Panel │ HiddenService :80 → админка 3000│ +│ │ │ HiddenService :22 → SSH │ │ │ │ │ │ │ │ │ Net: default │ │ Net: default + proxy_net │ │ │ │ + tor_proxy_net │ │ │ │ @@ -260,9 +270,11 @@ src/i18n/ ## Безопасность - `.env` монтируется только для чтения (`:ro`) -- Порт 3001 доступен из LAN и через Tor onion +- Порт 3001 (бот + старая админка) и 3000 (новая админка) доступны из LAN и через Tor onion - Onion-адреса сохраняются в volume (персистентность при перезапуске) - Tor hidden services с валидацией env vars +- Новая админка (`admin-next/`): вход по токену, `ADMIN_SECRET`/`SUPER_ADMIN_SECRET` из `.env` +- Секреты админки (`admin-next/.env`) исключены из git (`.gitignore`) - Нативные модули компилируются в builder-стейдже - `devDependencies` не попадают в production-образ - Тестовые файлы исключены из Docker-образа (`.dockerignore`) @@ -278,7 +290,7 @@ src/i18n/ ``` ├── src/ -│ ├── admin/ # Админ-панель (Express) +│ ├── admin/ # Старая админ-панель (Express/EJS) │ │ ├── routes/ # Роуты админ-панели (вкл. /locales для i18n) │ │ ├── views/ # Шаблоны HTML │ │ ├── public/ # Статические файлы (CSS) @@ -296,9 +308,14 @@ src/i18n/ │ ├── migrations/ # Миграции БД │ ├── models/ # Модели данных │ ├── router/ # Роутинг Express -│ ├── services/ # Бизнес-логика +│ ├── services/ # Бизнес-логика (вкл. chatbotService, leadService) │ ├── utils/ # Утилиты (логирование, валидация, ошибки) │ └── index.js # Точка входа +├── admin-next/ # НОВАЯ админ-панель (Next.js 16 + Prisma + shadcn/ui) +│ ├── prisma/schema.prisma # Схема БД (та же SQLite, что у бота) +│ ├── src/app/api/ # 45 API-роутов (каталог, заказы, лиды, чатбот) +│ ├── src/components/ # 76 UI-компонентов (dashboard, wallets, leads...) +│ └── Dockerfile # Multi-stage Next.js standalone ├── tor-proxy/ # Tor прокси для SSH и админки │ ├── Dockerfile # Alpine + Tor образ │ ├── entrypoint.sh # Генерация torrc, валидация env vars @@ -309,7 +326,7 @@ src/i18n/ ├── db/ # SQLite база данных (volume) ├── uploads/ # Загруженные фото (volume) ├── Dockerfile # Multi-stage сборка магазина -├── docker-compose.yml # Конфигурация обоих контейнеров +├── docker-compose.yml # Конфигурация трёх контейнеров (бот, админка, tor) ├── install.sh # Установщик (POSIX sh) ├── .dockerignore # Исключения из образа ├── .env.example # Шаблон переменных