7ee57a1865
- Cooldown counter now always rendered (hidden) when auto_reply active, shown dynamically via polling - Modal form validates fields on blur/input with red highlight via .input-invalid class - Telegram: switched back to tel.4mont.ru proxy (working via /etc/hosts on 192.168.33.19) - context.md: added prod server 45.129.3.83, deploy commands, NPM routing notes Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
67 lines
3.5 KiB
Markdown
67 lines
3.5 KiB
Markdown
# Контекст проекта WBfeed
|
||
|
||
## Что это за проект
|
||
- Flask-приложение для автоответов на отзывы Wildberries.
|
||
- Поддерживает вход, личный кабинет с токенами магазинов, админку, журнал автоответов.
|
||
- Автоответ для 5★, 4★, 3★, 2★, 1★ с настраиваемыми пулами шаблонов.
|
||
- Уведомления в Telegram через прокси tel.4mont.ru при запросе доступа.
|
||
|
||
## Серверы
|
||
|
||
### Основной (локальная сеть)
|
||
- SSH: `root@192.168.33.19`, пароль: `utOgbZ09`
|
||
- Путь проекта: `/home/sites/wild`
|
||
- Docker Compose, порт `54119 → 5000`
|
||
- В `/etc/hosts` прописано: `192.168.33.19 tel.4mont.ru` (Telegram прокси)
|
||
|
||
### Продакшн (публичный)
|
||
- SSH: `root@45.129.3.83`, пароль: `utOgbZ09ruslan`
|
||
- Путь проекта: `/home/docker/wbfeed`
|
||
- Docker Compose, порт `2323 → 5000`, контейнер `wbfeed-app-1`
|
||
- NPM (Nginx Proxy Manager) на том же сервере
|
||
- Для NPM → wbfeed: Forward `172.19.0.1:2323` (шлюз Docker-сети npm)
|
||
- Для любого нового Docker-проекта через NPM: тот же IP `172.19.0.1`, другой порт
|
||
|
||
## Локальная структура (только контекст, код деплоится на сервер)
|
||
- `app.py` — основной backend (Flask + SQLite)
|
||
- `templates/*.html` — шаблоны интерфейса
|
||
- `static/styles.css` — стили
|
||
- `context.md` — этот файл, хранится локально в git
|
||
|
||
## Деплой
|
||
|
||
### На основной сервер (192.168.33.19)
|
||
```bash
|
||
sshpass -p 'utOgbZ09' scp <файл> root@192.168.33.19:/home/sites/wild/<путь>
|
||
sshpass -p 'utOgbZ09' ssh root@192.168.33.19 "docker restart wild-app-1"
|
||
# templates/ и static/ — перезапуск не нужен, Flask видит сразу
|
||
```
|
||
|
||
### На продакшн (45.129.3.83)
|
||
```bash
|
||
sshpass -p 'utOgbZ09ruslan' scp -o StrictHostKeyChecking=no <файл> root@45.129.3.83:/home/docker/wbfeed/<путь>
|
||
sshpass -p 'utOgbZ09ruslan' ssh root@45.129.3.83 "docker restart wbfeed-app-1"
|
||
```
|
||
|
||
## Учётные данные
|
||
- Админ: логин `ruslan`, пароль `utOgbZ09ruslan+`
|
||
- Git: https://git.ruslan.xyz/ruslan/wildberries.git
|
||
|
||
## Telegram уведомления
|
||
- Бот токен: `8181219074:AAGvqWqb6t10YP4xpMOQnBq_6LrUqAFm5hM`
|
||
- Chat ID: `54986411`
|
||
- Прокси URL: `https://tel.4mont.ru/bot{TOKEN}/sendMessage`
|
||
- На 192.168.33.19 работает через `/etc/hosts` → локальный прокси
|
||
- На 45.129.3.83 прокси недоступен (разные сети) — уведомления не доходят
|
||
|
||
## Технический стек
|
||
- Python 3.11, Flask 3.0.3, SQLite (tokens.db)
|
||
- Docker + Docker Compose, Nginx Proxy Manager
|
||
- WB API rate limit: 1 запрос / 120 сек
|
||
- Автоответ: цикл каждые 120 сек, 1 ответ за цикл, очередь в SQLite
|
||
|
||
## Известные особенности
|
||
- `tokens.db` монтируется как bind-mount: нужно создавать как файл (`touch`), не как папку
|
||
- `app.py` монтируется как файл — после `scp` нужен `docker restart` (inode binding)
|
||
- `templates/` и `static/` монтируются как папки — изменения видны без рестарта
|