Skip to content

Repository files navigation

parser-abit — Калькулятор потужності

Персональний аналіз конкурентів вступної кампанії на основі abit-poisk.org.ua. Не просто місце в рейтинговому списку, а реальний шанс пройти — з урахуванням того, що частина конкурентів вище тебе за балом можуть піти на свій вищий пріоритет і звільнити місце.

Три інтерфейси над одним рушієм: CLI, GUI (CustomTkinter) і Telegram-бот. Жодна логіка ніде не дублюється — все живе в abit_parser/.

Що рахує

v1 — вердикт по бюджету Широка вилка: оптимістична/песимістична межа місця проти БМmax, вердикт проходиш/на межі/пролітаєш
v2 — крос-аналіз Для кожного конкурента вище тебе — пошук його інших заяв з вищим пріоритетом, градація точно/ймовірно/лишається/невизначено, звужена оцінка
v3 GUI, компіляція в exe, LLM-сумаризація (Gemini/Anthropic/офлайн-шаблон)
v4 — шанс на контракт Той самий принцип для контрактного пулу (К-заявки + Б-невдахи бюджету), якщо на бюджет не проходиш
Telegram-бот Той самий аналіз у чаті, приватний, домашній хостинг. Плюс «🔔 Стежити» — періодична автоперевірка з повідомленням, якщо щось змінилось

Головне правило у всій подачі результату: краще занизити шанс, ніж завищити. Вердикт завжди веде з песимістичного сценарію, три окремі числа замість одного оманливого відсотка, «невизначено» показується чесно окремо, а не ховається в жодну зі сторін. Деталі формул і термінів — GLOSSARY.md.

Встановлення

pip install -r requirements.txt

Базові залежності (requests, beautifulsoup4, certifi) ставляться завжди. Усе інше — опційно, залежно від того, який інтерфейс потрібен (розкоментуй відповідні рядки в requirements.txt):

  • GUIcustomtkinter
  • Сумаризаціяgoogle-genai (Gemini, дефолт у GUI) і/або anthropic (--explain у CLI)
  • Компіляція в exepyinstaller
  • Telegram-ботpython-telegram-bot[job-queue], python-dotenv

Швидкий старт

CLI

python main.py https://abit-poisk.org.ua/rate2026/direction/1613482 --score 180.5 --priority 3 --funding Б

Корисні прапорці: --contract (шанс на контракт), --no-cross-check (лише швидкий v1, без мережевих запитів по кожному конкуренту), --explain (LLM-пояснення), --json/--md (зберегти результат). Повний список — python main.py --help.

GUI

python gui.py

Форма вводу → аналіз у фоновому потоці з прогресом → результат + скрол-таблиця групи ризику. Ключ Gemini API вводиться в самому застосунку (опційно зберігається локально).

Telegram-бот

cp .env.example .env   # і встав туди токен від @BotFather
python bot.py

Покроковий діалог у чаті (URL → бал → пріоритет → бюджет/контракт), кнопки «Хто саме вище мене» / «Шанс на контракт» / «🔔 Стежити» / «📚 Порахувати по всіх пріоритетах». Напрям можна не тільки вставити лінком, а й обрати каскадно (область → ВНЗ → спеціальність, з пошуком серед сотень варіантів у великих ВНЗ). Налаштування, автостарт вдома (NSSM/Task Scheduler) і все інше — BOT.md.

Усі слова бота (привітання, підказки, жарти, підписи кнопок) — в окремому texts.toml, автоматично підвантажується при старті. Правиш формулювання — правиш лише цей файл, код чіпати не треба.

Структура проєкту

abit_parser/           рушій — уся логіка, спільна для CLI/GUI/бота
  scraper.py, search.py, throttle.py, cache.py   парсинг сайту, кеш із TTL, глобальний тротлінг
  catalog.py, catalog_cache.py                   довідник область/ВНЗ/спеціальність для інтерактивного вибору в боті
  parse.py, models.py                            HTML → типізовані поля
  verdict.py, cross_analysis.py                  v1/v2 — вердикт по бюджету
  contract_analysis.py                           v4 — шанс на контракт
  estimate.py, format_text.py                    спільні формули меж/шансу і їх подача
  summarize.py                                   LLM-сумаризація (Gemini/Anthropic/офлайн)
  engine.py                                       єдина точка входу — run_analysis / run_contract_chance
  cli.py                                          CLI-обгортка над рушієм

main.py                 CLI, точка входу
gui.py                  GUI, точка входу
bot.py, bot_storage.py  Telegram-бот, точка входу + персистентні підписки на стеження
texts.toml, bot_texts.py   усі тексти бота окремо від коду (див. нижче)

GLOSSARY.md             усі терміни й скорочення (БМmax, П, статуси v2/v4 тощо)
BOT.md                  налаштування й автостарт бота
PACKAGING.md            збірка в exe (PyInstaller)

Застереження

  • Механіка «адресного розміщення за пріоритетами» описана за загальним розумінням системи, стабільним роками — деталі-2026 (коефіцієнти, квоти, точний сенс БМmin) не звірені з офіційними правилами.
  • Вильоти по пріоритету рахуються одноходово (без рекурсії) — свідоме спрощення заради кількості мережевих запитів.
  • Квоти позначаються, але не аналізуються на вихід/невихід.
  • P_LIKELY (0.5) — калібрована вручну, не звірена з реальними результатами вступу константа. Свідомо занижена, щоб «очікуваний» шанс радше не вводив в оману в бік оптимізму.
  • Дані з abit-poisk.org.ua публічні; тула поважає сайт — браузерний User-Agent, глобальний тротлінг 1-3с, кеш з TTL, жодних масових паралельних запитів.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages