# 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 карта (код)** – въвеждате или сканирате кода на картата и натискате **Регистрирай**. Записва се следващият пост за тази карта. - **Филтър по карта** – показват се само циклите за въведения номер на карта; **Всички** премахва филтъра. - **Таблица с цикли** – ред за всеки цикъл: карта, време за постове 1–5, изход (нормален или служебен). С клик се избира ред. - **Бутони:** - **Обнови** – презарежда циклите; - **Затвори цикъла** – служебно затваряне на избрания цикъл (ако липсва регистрация на последен пост); - **Отмени служебен изход** – премахва служебното затваряне за избрания цикъл; - **Карти** – отваря модула за карти. ### 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 при преносимо ползване.