Инструкция по запуску проекта
=============================

1. Запуск MySQL и phpMyAdmin через XAMPP
---------------------------------------

1. Открой XAMPP Control Panel.
2. Нажми Start напротив Apache.
3. Нажми Start напротив MySQL.
4. Открой браузер.
5. Перейди по адресу:

   http://localhost/phpmyadmin

Если phpMyAdmin просит логин и пароль, используй данные из задания или
настроек XAMPP. Часто используется:

login: phpmyadmin
password: phpmyadmin

или пользователь root без пароля.


2. Создание базы данных через schema.sql
----------------------------------------

1. В phpMyAdmin открой вкладку SQL.
2. Открой файл schema.sql в текстовом редакторе.
3. Скопируй весь текст из schema.sql.
4. Вставь текст в SQL-поле phpMyAdmin.
5. Нажми кнопку Вперед / Go.

После выполнения будет создана база:

dem_DB

В ней должны появиться таблицы:

user
pickup_points
tovar
zakaz
order_items


3. Настройка подключения приложения к БД
---------------------------------------

Открой файл db_config.json и проверь настройки:

{
  "host": "localhost",
  "user": "root",
  "password": "",
  "database": "dem_DB",
  "charset": "utf8mb4"
}

Если у MySQL другой пользователь или пароль, измени user/password.


4. Преобразование Excel в CSV
-----------------------------

Excel-файлы лежат в папке excel.

Для автоматического преобразования всех Excel-файлов в CSV запусти:

python excel_to_csv.py

После этого CSV-файлы появятся в папке csv.

Скрипт удаляет пустые строки и сохраняет нужное количество столбцов, чтобы
файлы было проще импортировать в phpMyAdmin.


5. Импорт CSV в базу данных через phpMyAdmin
--------------------------------------------

Импорт нужно выполнять строго по порядку:

1. user_import.csv -> user
2. Пункты выдачи_import.csv -> pickup_points
3. Tovar.csv -> tovar
4. Order_main.csv -> zakaz
5. Order_Product.csv -> order_items


5.1 Импорт user_import.csv в user
---------------------------------

1. В phpMyAdmin выбери базу dem_DB.
2. Выбери таблицу user.
3. Открой вкладку Импорт.
4. Выбери файл:

   csv/user_import.csv

5. Формат: CSV.
6. Разделитель полей: ,
7. Если первая строка содержит заголовки, включи параметр пропуска первой строки.
8. В поле Название столбцов укажи:

role,full_name,login,password

9. Нажми Вперед / Go.

Поле id_user не указывается, потому что оно AUTO_INCREMENT.


5.2 Импорт Пункты выдачи_import.csv в pickup_points
---------------------------------------------------

1. Выбери таблицу pickup_points.
2. Открой вкладку Импорт.
3. Выбери файл:

   csv/Пункты выдачи_import.csv

4. Формат: CSV.
5. Разделитель полей: ,
6. В поле Название столбцов укажи:

address

7. Нажми Вперед / Go.

Поле id_points не указывается, потому что оно AUTO_INCREMENT.


5.3 Импорт Tovar.csv в tovar
----------------------------

1. Выбери таблицу tovar.
2. Открой вкладку Импорт.
3. Выбери файл:

   csv/Tovar.csv

4. Формат: CSV.
5. Разделитель полей: ,
6. В поле Название столбцов укажи:

article,product_name,unit,price,supplier,manufacturer,category,current_discount,stock_quantity,description,image

7. Нажми Вперед / Go.


5.4 Подготовка и импорт Order_main.csv в zakaz
----------------------------------------------

Перед импортом Order_main.csv нужно проверить данные:

1. Даты должны быть в формате YYYY-MM-DD.
   Например:

   2025-02-27

2. ФИО пользователя нельзя импортировать в id_user.
   Нужно заменить ФИО на соответствующий id_user из таблицы user.

   Проверить пользователей можно SQL-запросом:

   SELECT id_user, full_name FROM user;

3. Адрес пункта выдачи должен быть заменен на id_points.
   Проверить пункты выдачи можно SQL-запросом:

   SELECT id_points, address FROM pickup_points;

4. После подготовки CSV должен соответствовать полям:

order_date,delivery_date,pickup_code,order_status,id_points,id_user

Поле order_number не указывается, потому что оно AUTO_INCREMENT.

В phpMyAdmin:

1. Выбери таблицу zakaz.
2. Открой вкладку Импорт.
3. Выбери подготовленный Order_main.csv.
4. Формат: CSV.
5. Разделитель полей: ,
6. В поле Название столбцов укажи:

order_date,delivery_date,pickup_code,order_status,id_points,id_user

7. Нажми Вперед / Go.


5.5 Подготовка и импорт Order_Product.csv в order_items
-------------------------------------------------------

Перед импортом нужно проверить:

1. Заказы уже импортированы в zakaz.
2. Товары уже импортированы в tovar.
3. В артикулах нет пробелов в начале строки.

Например плохо:

 F635R4

Правильно:

F635R4

CSV должен соответствовать полям:

order_number,article,quantity

Поле id_items не указывается, потому что оно AUTO_INCREMENT.

В phpMyAdmin:

1. Выбери таблицу order_items.
2. Открой вкладку Импорт.
3. Выбери подготовленный Order_Product.csv.
4. Формат: CSV.
5. Разделитель полей: ,
6. В поле Название столбцов укажи:

order_number,article,quantity

7. Нажми Вперед / Go.


6. Создание виртуального окружения на Linux
-------------------------------------------

Открой терминал в папке проекта.

Создай виртуальное окружение:

python -m venv .venv

Активируй его:

source .venv/bin/activate

После активации в начале строки терминала появится:

(.venv)


7. Установка зависимостей
-------------------------

В активированном виртуальном окружении выполни:

pip install -r requirements.txt

Если используется uv:

uv pip install -r requirements.txt


8. Запуск приложения
--------------------

Убедись, что:

1. Apache и MySQL запущены в XAMPP.
2. База dem_DB создана.
3. CSV-данные импортированы.
4. db_config.json содержит правильные настройки подключения.
5. Виртуальное окружение активно.

Запусти приложение:

python main.py


9. Данные для входа
-------------------

Логины и пароли берутся из таблицы user.

После импорта user_import.csv можно посмотреть пользователей запросом:

SELECT id_user, role, full_name, login, password FROM user;

Также в приложении есть вход как гость.
