Проект: Десктопний додаток на Python для автоматизації публікації оголошень на Bazoš.skТехнології: Python, Playwright, PySide6, SQLite, Excel імпорт/експортВартість другого етапу: 27 000 UAHТермін виконання: 12–14 робочих днів після резервування оплати на Сейфі і отримання чеської PSČ для probe Bazoš.cz.
1. Мета другого етапу
Розширити робочу MVP-версію до повноцінного production-інструмента для щоденної роботи менеджера на Bazoš.sk.
Етап 2 закриває всі ключові сценарії регулярної роботи: — автоматична ротація та перепублікація оголошень; — запуск роботи за розкладом без участі користувача; — моніторинг стану опублікованих оголошень; — управління групами акаунтів; — двостороння синхронізація результатів з Excel; — підтримка будь-яких «простих» категорій Bazoš.sk через універсальний движок (замість однієї фіксованої категорії Notebooky з Етапу 1).
Після Етапу 2 менеджер отримує інструмент, який вимагає мінімального ручного втручання: налаштувати розклад один раз → бот сам публікує, оновлює, моніторить і записує результати назад в Excel.
2. Що входить у другий етап
2.1 Модуль ротації / автоматичної перепублікації
— налаштовуваний інтервал ротації в днях: • глобальний дефолт за замовчуванням 3 дні; • можливість переоприділити інтервал на конкретний акаунт (наприклад, для ноутбуків 1 день, для дрібниць 3 дні); — логіка ротації: видалення старого оголошення на Bazoš → публікація нового з тими ж даними (той же title/description/фото/PSČ) → оновлення посилання в БД та Excel; — кнопка «Оновити обраний акаунт»: дозволяє менеджеру вручну запустити ротацію по одному конкретному акаунту, не торкаючись інших; — новий статус reserve для виключення товарів з ротації: • виставляється вручну в додатку (правий клік → «Зарезервувати») або через колонку в Excel; • такі товари бот пропускає при ротації до зняття статусу; — контроль ліміту 50 активних оголошень на акаунт: • перед публікацією бот перевіряє кількість активних оголошень на акаунті; • якщо ліміт досягнуто → ротація по цьому акаунту зупиняється, в лог пишеться повідомлення, менеджер вручну вирішує що робити (видалити старі оголошення або тимчасово відключити акаунт); • автоматичного видалення старих оголошень бот не робить.
2.2 Модуль розкладу / планувальника
— розклад на кожен акаунт окремо з двома режимами: • конкретний час: наприклад, акаунт #1 публікує о 09:00, 13:00, 17:00; • діапазон з інтервалом: наприклад, з 09:00 до 18:00 кожні 60 хвилин; — автозапуск ротації за розкладом: додаток сам у вказаний час піднімає чергу по акаунту, проходить по pending-товарам, робить паузи між публікаціями і завершує роботу; — вихідні/свята не враховуються — логіка однакова кожен день; — перегляд розкладу на вкладці «Налаштування» у вигляді таблиці: акаунт → найближчий запуск → наступний запуск; — можливість тимчасово відключити розклад по акаунту (галочка «активно/неактивно»).
2.3 Модуль моніторингу стану оголошень
— періодична перевірка URL опублікованих оголошень у фоні; — частота перевірки налаштовується в UI (за замовчуванням раз у 12 годин); — для кожного URL бот визначає один з станів: • active — оголошення доступне і активне; • inactive — оголошення було видалено Bazoš, заблоковано, або посилання повертає 404; — оновлення статусу товару в додатку: новий статус inactive, окремий фільтр на вкладці «Товари» для швидкого вибору всіх неактивних; — журнал змін по кожному товару: коли було опубліковано → коли стало неактивним → причина (якщо її можна визначити за відповіддю Bazoš); — бот не робить автоматичну перепублікацію неактивних оголошень — це рішення менеджера: він може виділити такі товари і натиснути «Перезапустити обрані».
2.4 Модуль групування акаунтів
— довільні користувацькі групи акаунтів з власними назвами (наприклад, «Ноутбуки», «Дрібна електроніка», «Авто», «Побутова техніка»); — на старті конфігурується 2 групи, можливість додавати нові без обмеження; — один акаунт належить рівно одній групі (не кільком); — фільтр по групах на вкладках «Товари», «Акаунти», «Черга»; — старт/стоп черги по конкретній групі: можливість запустити публікацію тільки для акаунтів вибраної групи, не торкаючись інших; — конфігурація груп зберігається в БД, переноситься разом з проектом при копіюванні на інший ПК.
2.5 Модуль двосторонньої синхронізації з Excel
— кнопка «Записати результати в Excel» на вкладці «Товари»: • вибирається вихідний Excel-файл (або запам'ятовується останній використаний); • бот оновлює в цьому файлі колонки: status, published_url, published_at, error_comment; • запис тільки в існуючі рядки — структура файлу не ламається; — обробка проданих/видалених товарів: • товари зі статусом sold або inactive видаляються з Excel-файлу (відповідний рядок видаляється); • опціонально можна включити «не видаляти, позначати статусом» — перемикається в налаштуваннях; — колонка product_id рекомендується до використання як якорь для надійного двостороннього матчінгу (якщо її немає — fallback на title); — синхронізація запускається тільки по кнопці (автоматичного таймера в Етапі 2 немає — додається при необхідності в наступних етапах).
2.6 Універсальний движок «простих категорій» Bazoš.sk
В Етапі 1 підтримувалася тільки категорія PC → Notebooky. В Етапі 2 реалізується універсальний publisher, що працює з будь-якою «простою» підкатегорією Bazoš.sk без хардкоду:
— Excel підтримує будь-які значення в колонках category / subcategory; — бот автоматично резолвить їх у правильний URL розділу + вибір підкатегорії у формі; — «проста категорія» = підкатегорія з базовою формою публікації (title, description, price, PSC, фото, контакт, пароль), без додаткових специфічних полів.
Гарантоване покриття в Етапі 2:
— всі 20 підкатегорій з файлу Palets.xlsx: • PC → Жорсткі диски/SSD, Ігрові консолі, Ігрові пристрої • Електро → Пилососи, Телевізори, Проектори, Hifi/Радіо, Радіостанції, Інше аудіо відео, Інше дрібне, Ручні збивачі/Міксери • Фото → Відеокамери • Мобілі → Інші бренди • Діти → Іграшки, Меблі для дітей • Дім і сад → Садова техніка, Інше • Меблі → Лампи, освітлення • Авто → Запчастини комерційні — прості підкатегорії Авто/Мотоцикли, явно згадані замовником: Запчастини, Тюнінг, Одяг, Інше (за умови що probe форми підтверджує відсутність специфічних полів); — з високою ймовірністю працює будь-яка інша проста підкатегорія в розділах PC, Електро, Мобілі, Фото, Діти, Меблі, Дім і сад — оскільки движок універсальний, нові підкатегорії додаються правкою одного рядка мапінгу без переробки логіки; — протягом 5 робочих днів після здачі Етапу 2 замовник може протестувати довільну просту підкатегорію — якщо щось не працює, я закриваю це безкоштовно в рамках періоду багфіксів.
2.7 Probe Bazoš.cz для Етапу 3 (бонус, без окремої оплати)
В рамках Етапу 2 я проводжу короткий probe (1–2 години) чеського сайту Bazoš.cz: — перевіряю що словацький акаунт + словацьке проксі публікує на .cz без триггера повторної верифікації; — перевіряю що форма публікації ідентична .sk (селектори, поля, Dropzone); — за результатами фіксую фінальну цифру Етапу 3 в доповненні до цього ТЗ до старту Етапу 3.
Це не входить у вартість Етапу 2 як окрема робота — побічний результат розробки універсального движка категорій.
2.8 Включається в період багфіксів Етапу 1 пункт
В рамках періоду багфіксів першого етапу (тобто до початку Етапу 2 і без окремої оплати):
— додавання колонки product_id в UI на вкладці «Товари» для зручного пошуку та ідентифікації товарів; — значення колонки беруться з поля product_id в Excel при імпорті (як вже в Palets.xlsx з форматом #П001, #П004, #П005).
3. Що НЕ входить у другий етап
Наступні пункти погоджені як окремі етапи або не входять у проект взагалі:
→ Етап 3 (Bazoš.cz):— повноцінна публікація на Bazoš.cz з підтримкою всіх 5 модулів Етапу 2; — паралельний site-модуль app/sites/bazos_cz/; — розширення Excel для вибору site публікації; — live-тест на чеських PSČ; — орієнтовна вартість: 10 000–12 000 UAH, 4–5 днів (фінальна цифра після probe в Етапі 2).
→ Етап 4 (масштабування і складні категорії):— паралельна робота більше 10 акаунтів на одному ПК (пул браузерних воркерів, паралельні черги, оптимізація GUI); — підтримка категорій з унікальними полями: Мотоцикли/Скутери (з об'ємом двигуна, роком), Авто/Машини (повні авто), Нерухомість (нерухомість з метражем) — якщо знадобляться; — орієнтовна вартість: ~22 000 UAH, 8–10 днів.
→ Етап 5 (multi-PC, опціонально):— робота двох і більше ПК з загальною БД (PostgreSQL) для централізованого управління акаунтами і публікаціями; — синхронізація стану між інстансами; — орієнтовна вартість: ~25 000 UAH, 10–12 днів.
Якщо для двох ПК достатньо незалежної роботи (різні набори акаунтів на кожному ПК, без синка) — Етап 5 не потрібен.
→ Не входять у проект взагалі (за погодженням з замовником): — платне просування / topovanie / Komerčný inzerát; — антидетект / емуляція «відбитків» браузера понад поточну логіку; — аналітика, звіти, дашборди по ефективності оголошень; — категорії з принципово іншими полями форми (повноцінні авто, нерухомість).
4. Критерії приймання Етапу 2
Приймання проводиться за чек-листом:
Модуль ротації:— [ ] налаштовується інтервал ротації глобально і на акаунт; — [ ] кнопка «Оновити обраний акаунт» запускає ротацію тільки по вибраному акаунту; — [ ] товари зі статусом reserve пропускаються; — [ ] при досягненні ліміту 50 оголошень ротація по акаунту зупиняється і пишеться в лог.
Модуль розкладу:— [ ] на акаунт можна задати розклад у двох режимах (конкретний час / діапазон з інтервалом); — [ ] додаток сам запускає ротацію за розкладом; — [ ] таблиця розкладу на вкладці «Налаштування» відображає найближчі запуски.
Модуль моніторингу:— [ ] періодична перевірка URL запускається за таймером; — [ ] частота перевірки налаштовується в UI; — [ ] неактивні оголошення отримують статус inactive; — [ ] на вкладці «Товари» працює фільтр по статусу inactive.
Модуль груп:— [ ] можна створити мінімум 2 групи і прив'язати до них акаунти; — [ ] фільтри по групах працюють на всіх вкладках; — [ ] старт/стоп черги по групі запускає публікацію тільки акаунтів цієї групи.
Модуль Excel-синхронізації:— [ ] кнопка «Записати результати в Excel» оновлює потрібні колонки в вихідному файлі