You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

194 lines
12 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# ITD Transport Tracking пълно ръководство
Приложение за проследяване на транспортни средства (камиони) по постове: четене на QR карта, регистрация на преминаване през постове, генериране на карти и администрация на картите. Работи с база данни SQL Server и може да се ползва като Python скрипт или като преносимо EXE.
---
## 1. Какво прави приложението
- **Регистрация по пост** при четене на QR код на карта се записва преминаване през следващия пост (1→2→3→4→5).
- **Пет поста:** Портал (паркинг) → Вход в завода → Рампа начало товарене → Рампа край товарене → Напускане.
- **Таблица с цикли** показва всички цикли с време за всеки пост и изход; поддържа филтър по номер на карта.
- **Служебно затваряне на цикъл** ако липсва регистрация на последен пост, цикълът може да се затвори ръчно със „Служебен изход“ (и после отмяна на служебния изход).
- **Модул „Карти“** списък на карти, корекция на текст (име + № кола), активиране/деактивиране, генериране на QR карта, отпечатване на карта като PNG.
Иконата на приложението е **ITD.ico** (квадратна, без допълнително преобразуване).
---
## 2. Изисквания
- **Python 3.8+** (при ползване като скрипт).
- **SQL Server** база данни с таблиците `ITD_Cards` и `ITD_Cycles` (схемата се прилага автоматично при първо стартиране от `schema.sql`).
- **ODBC Driver 17 for SQL Server** (или съвместим) на машината.
- За изграждане на EXE: **PyInstaller** (`pip install pyinstaller`).
---
## 3. Първоначална настройка
### 3.1 Файлове в папката на проекта
| Файл | Описание |
|------|----------|
| `main.py` | Основно приложение (екран с регистрация, цикли, бутони). |
| `db.py` | Връзка към БД и операции с карти/цикли. |
| `db_check.py` | Проверка за достъп до БД и прилагане на `schema.sql`. |
| `schema.sql` | SQL схема таблици `ITD_Cards`, `ITD_Cycles`. |
| `appsettings.json` | **Задължителен** connection string към SQL Server (не се комитва в Git). |
| `appsettings.example.json` | Пример; копирайте като `appsettings.json` и попълнете данните. |
| `ITD.ico` | Икона на приложението (прозорец и EXE). |
| `start.bat` | Стартиране в режим разработка (проверка БД + main.py). |
| `build.bat` | Изграждане на преносимо EXE. |
| `requirements.txt` | Python зависимости: pyodbc, qrcode[pil]. |
### 3.2 Настройка на връзката към базата данни
1. Копирайте `appsettings.example.json` като **`appsettings.json`** в същата папка.
2. Отворете `appsettings.json` и попълнете connection string:
```json
{
"ConnectionStrings": {
"SqlServer": "Server=ВАШИЯ_СЪРВЪР;Database=ITD;User Id=ПОТРЕБИТЕЛ;Password=ПАРОЛА;TrustServerCertificate=true"
}
}
```
- **Server** име или адрес на SQL Server инстанцията.
- **Database** име на базата (напр. `ITD`).
- **User Id** / **Password** потребител с права за създаване на таблици и четене/запис.
- **TrustServerCertificate=true** обикновено нужен при самоподписан сертификат.
Алтернативно можете да използвате **Odbc** ключ в `ConnectionStrings` с пълен ODBC connection string, ако не ползвате SqlServer формата.
### 3.3 База данни и таблици
При първо стартиране (или при изпълнение на `db_check.py`) приложението търси `schema.sql` и изпълнява скрипта. Така се създават:
- **ITD_Cards** карти (код, текст за показ, активна/неактивна, дати).
- **ITD_Cycles** цикли за всяка карта с дата/час за пост 1…5 и служебно затваряне.
Ако таблиците вече съществуват, схемата не променя данните (използва се `IF NOT EXISTS`).
---
## 4. Стартиране (режим разработка)
1. Отворете папката на проекта в командния ред.
2. Стартирайте:
```bat
start.bat
```
Скриптът:
- проверява за наличие на `appsettings.json`;
- инсталира зависимости от `requirements.txt` (ако липсват);
- пуска `db_check.py` проверка за достъп до БД и прилагане на схемата;
- при успех пуска `main.py`.
Ако няма `appsettings.json` или връзката към БД не успее, програмата спира с подходящо съобщение.
Можете да стартирате и директно:
```bat
python db_check.py
python main.py
```
Иконата на прозореца се зарежда от **ITD.ico** в същата папка.
---
## 5. Изграждане на преносимо EXE
1. Уверете се, че в папката има: `main.py`, `schema.sql`, **ITD.ico**, `appsettings.json` (за тест; за разпространение вижте по-долу).
2. Инсталирайте PyInstaller (еднократно):
```bat
pip install pyinstaller
```
3. Пуснете:
```bat
build.bat
```
При успех в подпапка **`dist`** се създава **`ITD_Transport.exe`**. В EXE е вградена и схемата `schema.sql`; иконата на изпълнимия файл е **ITD.ico**.
Ако няма `ITD.ico`, build-ът все пак минава, но EXE няма да има икона.
---
## 6. Преносимо ползване на друг компютър
За да ползвате приложението без инсталиран Python:
1. Копирайте в една папка на целевата машина:
- **ITD_Transport.exe** (от `dist\`);
- **appsettings.json** (с правилен connection string за тази мрежа/сървър);
- **ITD.ico** (по желание за икона на прозореца при нужда).
2. На целевата машина трябва да е инсталиран **ODBC Driver 17 for SQL Server** (или съвместим драйвер).
3. Стартирайте `ITD_Transport.exe`. Работната директория е папката на exe-то; от там се чете `appsettings.json`.
Не е нужно да инсталирате Python или PyInstaller на целевата машина.
---
## 7. Основни екрани и функции
### 7.1 Основен екран
- **Постове** показват се петте поста с цветове.
- **QR карта (код)** въвеждате или сканирате кода на картата и натискате **Регистрирай**. Записва се следващият пост за тази карта.
- **Филтър по карта** показват се само циклите за въведения номер на карта; **Всички** премахва филтъра.
- **Таблица с цикли** ред за всеки цикъл: карта, време за постове 15, изход (нормален или служебен). С клик се избира ред.
- **Бутони:**
- **Обнови** презарежда циклите;
- **Затвори цикъла** служебно затваряне на избрания цикъл (ако липсва регистрация на последен пост);
- **Отмени служебен изход** премахва служебното затваряне за избрания цикъл;
- **Карти** отваря модула за карти.
### 7.2 Модул „Карти“
- Таблица с всички карти: код, текст (име + № кола), активна, дати.
- **Обнови** презарежда списъка.
- **Коригирай** промяна на текста на избрана карта.
- **Изтрий** изтриване на карта (и регистрациите по нея).
- **Деактивирай** / **Активирай** картата спира/започва да участва в регистрации.
- **Създай PNG** запазване на карта като PNG (QR + текст) за отпечатване.
- **Генерирай QR карта** нова карта с текст; запис в БД и показване на QR за отпечатване.
- **Затвори** затваряне на прозореца.
---
## 8. Git и синхронизация
За работа с няколко компютъра и GitHub вижте **GIT_SETUP.md**: инициализация на repo, push към GitHub, клониране на друг компютър и локално изграждане на EXE.
**Важно:** `appsettings.json` е в `.gitignore` не се комитва. На всеки компютър копирайте `appsettings.example.json` като `appsettings.json` и попълнете connection string.
---
## 9. Помощни скриптове и файлове
- **make_icon.py** не се използва от текущия build; иконата е директно **ITD.ico**.
- **reset_manual_cycle_closes.sql** при нужда за нулиране на служебни затваряния (изпълнява се ръчно върху БД).
- **centered_messagebox.py** помощни функции за центрирани диалози в приложението.
---
## 10. Обобщение бърз старт
| Действие | Команда / стъпка |
|----------|-------------------|
| Първа настройка | Копирайте `appsettings.example.json``appsettings.json`, попълнете connection string. |
| Стартиране | `start.bat` (или `python db_check.py` и `python main.py`). |
| Build на EXE | `build.bat` → exe в `dist\ITD_Transport.exe`. |
| Преносимо ползване | Копирайте exe + `appsettings.json` + при желание `ITD.ico` в папка на целевата машина; инсталиран ODBC драйвер за SQL Server. |
Иконата на приложението е само **ITD.ico** в папката на скрипта при разработка и в папката на exe при преносимо ползване.