Files
mp-answer-bot/WINDOWS_SETUP.md
T

276 lines
14 KiB
Markdown
Raw 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.
# Запуск проекта PrimeKraft на Windows (с нуля)
Проект — Telegram-бот для работы с отзывами Ozon/Wildberries, GPT-анализом и Google Таблицами. Изначально настроен под Linux, но на Windows запускается без изменений кода.
Ниже шаги для компьютера, где **ничего не установлено** (ни Python, ни что-то ещё).
---
## Какие данные куда записать
### 1. Файл `.env` (в корне проекта)
Создайте файл **`.env`** в папке с проектом (рядом с `pyproject.toml`) и заполните переменные **без кавычек**, по одной в строке:
| Переменная | Что подставить | Обязательно |
|------------|----------------|-------------|
| `BOT_TOKEN` | Токен бота от [@BotFather](https://t.me/BotFather) | Да |
| `TG_CHAT_ID` | ID чата (число, например `-1003569236790`) — куда слать отзывы | Да |
| `GOOD_REVIEWS_THREAD_ID` | ID топика для положительных отзывов (число) | Да |
| `BAD_REVIEWS_THREAD_ID` | ID топика для отрицательных отзывов (число) | Да |
| `EMPTY_LOW_RATING_THREAD_ID` | ID топика для отзывов без текста 1–3 ★ (или не указывать) | Нет |
| `EMPTY_HIGH_RATING_THREAD_ID` | ID топика для отзывов без текста 4–5 ★ (или не указывать) | Нет |
| `NEGATIVE_RATING` | Порог «плохого» отзыва: оценка ≤ этого числа = плохой (по умолчанию 3) | Нет |
| `REVIEWS_SHEET_LINK` | Полная ссылка на Google-таблицу, куда пишутся отзывы | Да (если нужна таблица) |
| `PRODUCTS_WB_SHEET_LINK` | Ссылка на таблицу с товарами WB (артикулы и т.д.) | Для WB |
| `PRODUCTS_OZON_SHEET_LINK` | Ссылка на таблицу с товарами Ozon (Ozon ID и т.д.) | Для Ozon |
| `OZON_API_KEY` | API-ключ личного кабинета Ozon | Для Ozon |
| `OZON_CLIENT_ID` | Client-Id личного кабинета Ozon | Для Ozon |
| `WB_API_KEY` | Токен API Wildberries (кабинет продавца) | Для WB |
| `GPTUNNEL_API_KEY` | Ключ для GPTunnel (генерация ответов и анализ) | Для GPT-функций |
| `OZON_CHECK_INTERVAL` | Интервал проверки Ozon в секундах (по умолчанию 60) | Нет |
| `WB_CHECK_INTERVAL` | Интервал проверки WB в секундах (по умолчанию 300) | Нет |
**Как узнать ID чата и топика:** добавьте бота [@userinfobot](https://t.me/userinfobot) в чат — он покажет ID. ID топика в ссылке на обсуждение: `https://t.me/c/1234567890/5` → топик = **5**.
Сохраните `.env` в кодировке **UTF-8**.
---
### 2. Google-таблица отзывов (REVIEWS_SHEET_LINK)
Таблица, в которую бот дописывает строки с отзывами. В **первой строке** задайте заголовки ровно в таком порядке (12 столбцов):
| № | Заголовок столбца |
|---|--------------------|
| 1 | Дата |
| 2 | Площадка |
| 3 | Название товара |
| 4 | Категория |
| 5 | Подкатегория |
| 6 | ID товара |
| 7 | Оценка |
| 8 | Текст отзыва |
| 9 | Тональность |
| 10 | Причина |
| 11 | Критичность |
| 12 | Тэги |
Бот сам заполняет данные; новые строки добавляются вниз. Доступ к таблице должен быть у сервисного аккаунта (см. ниже).
---
### 3. Google Sheets — ключ `key.json`
Чтобы бот мог читать и писать таблицы:
1. Создайте проект в [Google Cloud Console](https://console.cloud.google.com/).
2. Включите **Google Sheets API**.
3. Создайте **сервисный аккаунт**, скачайте JSON-ключ.
4. Положите файл в проект: **`google-auth/key.json`** (папка `google-auth` в корне проекта).
5. В каждой нужной Google-таблице нажмите «Настройки доступа» и дайте доступ на **редактирование** email’у сервисного аккаунта (из `key.json`, поле `client_email`).
---
## Шаг 1. Установить Python 3.12
1. Откройте в браузере: **https://www.python.org/downloads/**
2. Скачайте **Python 3.12.x** (кнопка "Download Python 3.12.x").
3. Запустите установщик.
4. **Важно:** в первом окне включите галочку **"Add python.exe to PATH"**.
5. Нажмите **"Install Now"** и дождитесь окончания установки.
6. Закройте и заново откройте **PowerShell** или **CMD**, чтобы подхватился PATH.
Проверка в терминале:
```powershell
python --version
```
Должно быть что-то вроде: `Python 3.12.x`.
---
## Шаг 2. Установить менеджер зависимостей uv (рекомендуется)
В проекте используется **uv** (как на Linux). Его можно поставить одной командой.
В **PowerShell** выполните:
```powershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```
После установки закройте и снова откройте терминал, затем проверьте:
```powershell
uv --version
```
Если по какой-то причине uv ставить не хотите, можно обойтись только pip (см. альтернативу в конце).
---
## Шаг 3. Перейти в папку проекта и установить зависимости
Откройте PowerShell (или CMD) и перейдите в каталог проекта, например:
```powershell
cd C:\Users\a.shestakov\Desktop\primekraftProd
```
Установите зависимости и создайте виртуальное окружение одной командой:
```powershell
uv sync
```
Эта команда по файлам `pyproject.toml` и `uv.lock` создаст виртуальное окружение (например, `.venv`) и установит все пакеты. На Windows всё то же самое, что и на Linux.
---
## Шаг 4. Файл с переменными окружения (.env)
Приложение читает настройки из файла **`.env`** в **корне проекта** (рядом с `pyproject.toml`).
1. В папке `primekraftProd` создайте файл с именем **`.env`** (точка в начале).
2. Откройте его любым редактором и заполните переменные. Минимум для запуска бота:
```env
BOT_TOKEN=ваш_токен_от_BotFather
TG_CHAT_ID=ид_вашего_чата_в_Telegram
GOOD_REVIEWS_THREAD_ID=ид_топика_хороших_отзывов
BAD_REVIEWS_THREAD_ID=ид_топика_плохих_отзывов
```
Остальные переменные из `app/config.py` (Ozon, WB, GPT, таблицы) можно добавить позже или оставить пустыми по умолчанию. Пример полного набора:
```env
BOT_TOKEN=...
TG_CHAT_ID=...
GOOD_REVIEWS_THREAD_ID=...
BAD_REVIEWS_THREAD_ID=...
# Топики для отзывов без текста (только оценка): 1–3 и 4–5 звёзд (необязательно; если не заданы, используются топики плохих/хороших)
EMPTY_LOW_RATING_THREAD_ID=...
EMPTY_HIGH_RATING_THREAD_ID=...
NEGATIVE_RATING=3
REVIEWS_SHEET_LINK=...
PRODUCTS_WB_SHEET_LINK=...
PRODUCTS_OZON_SHEET_LINK=...
OZON_API_KEY=...
OZON_CLIENT_ID=...
WB_API_KEY=...
GPTUNNEL_API_KEY=...
OZON_CHECK_INTERVAL=60
WB_CHECK_INTERVAL=300
```
Сохраните файл в кодировке **UTF-8**.
---
## Шаг 5. Google Таблицы (key.json)
Для работы с Google Таблицами нужен сервисный аккаунт.
1. В корне проекта должна быть папка **`google-auth`** и в ней файл **`key.json`** (ключ сервисного аккаунта из Google Cloud).
2. Если у вас уже есть `key.json` с Linux-сервера — просто скопируйте его в `primekraftProd\google-auth\key.json`.
3. Если ключа нет — создайте проект в Google Cloud, включите Google Sheets API и создайте сервисный аккаунт, затем скачайте JSON-ключ и положите его в `google-auth\key.json`.
Путь в коде задан как `google-auth/key.json` — на Windows такой относительный путь тоже работает, если запуск идёт из корня проекта.
---
## Шаг 6. Запуск бота
Обязательно запускайте из **корня проекта** (там, где лежат `pyproject.toml` и `.env`):
```powershell
cd C:\Users\a.shestakov\Desktop\primekraftProd
uv run python -m app
```
Либо, если сначала активируете виртуальное окружение:
```powershell
.\.venv\Scripts\Activate.ps1
python -m app
```
В консоли должны появиться логи; бот начнёт опрос Telegram и фоновые проверки Ozon/WB по таймерам.
Остановка: **Ctrl+C** в том же окне терминала.
---
## Краткая шпаргалка (если уже всё установлено)
```powershell
cd C:\Users\a.shestakov\Desktop\primekraftProd
uv sync
# Проверить .env и google-auth/key.json
uv run python -m app
```
---
## Если не хотите использовать uv
1. Установите Python 3.12 (шаг 1).
2. В папке проекта создайте виртуальное окружение и установите зависимости:
```powershell
cd C:\Users\a.shestakov\Desktop\primekraftProd
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e .
```
3. Создайте и заполните `.env`, положите `key.json` в `google-auth\` (шаги 45).
4. Запуск:
```powershell
python -m app
```
---
## Возможные проблемы на Windows
- **"python не найден"** — при установке Python не была отмечена опция "Add to PATH". Переустановите Python с этой галочкой или добавьте путь к `python.exe` в PATH вручную.
- **Ошибки при `uv sync`** — убедитесь, что открыт именно PowerShell/CMD и вы в папке `primekraftProd` (проверьте: `dir pyproject.toml` или `ls pyproject.toml`).
- **Ошибка про .env или BOT_TOKEN** — файл `.env` должен быть в корне проекта и переменные записаны без кавычек: `BOT_TOKEN=123:ABC...`.
- **Google Sheets / key.json** — если не используете таблицы, часть функций бота будет падать при обращении к ним; для минимального запуска достаточно BOT_TOKEN и TG_CHAT_ID (и при необходимости топиков).
После выполнения этих шагов проект на Windows запускается так же, как на Linux: те же зависимости, та же точка входа `python -m app`.
---
## Как запустить на Windows (кратко)
1. **Проверьте, что заполнено:**
- Файл **`.env`** в корне проекта (минимум: `BOT_TOKEN`, `TG_CHAT_ID`, `GOOD_REVIEWS_THREAD_ID`, `BAD_REVIEWS_THREAD_ID`; для таблицы — `REVIEWS_SHEET_LINK`; для Ozon/WB — ключи и ссылки на таблицы товаров).
- Файл **`google-auth/key.json`** — ключ сервисного аккаунта Google (если используете таблицы).
- В таблице отзывов первая строка — заголовки (Дата, Площадка, … Тэги).
2. **Откройте PowerShell** (или CMD) и перейдите в папку проекта:
```powershell
cd "C:\Users\a.shestakov\Downloads\бот телеграм прайм\бот телеграм прайм\primekraftProd_02_02_2026_23_30\primekraftProd"
```
(или ваш путь к папке `primekraftProd`; если в пути есть пробелы — возьмите путь в кавычки.)
3. **Установите зависимости** (если ещё не ставили):
```powershell
uv sync
```
4. **Запустите бота:**
```powershell
uv run python -m app
```
5. В консоли появятся логи; бот начнёт опрос Telegram и проверки Ozon/WB. Остановка — **Ctrl+C**.