Telegram-бот для акції «Купи 2× Arteggia → безкоштовна Vertebra». Статус: MVP готовий, очікує bot token від BotFather.
ARTEGGIA-TEST-2026)fiscal_id)arteggia-bot.service/srv/projects/arteggia-bot/
├── .env # BOT_TOKEN, GEMINI_API_KEY, ADMIN_IDS
├── requirements.txt
├── src/
│ ├── bot.py # aiogram handlers + FSM
│ ├── vision.py # Gemini Vision OCR
│ ├── validator.py # 3 перевірки (SKU/period/duplicate)
│ └── db.py # SQLite: participants, receipts, moderation_notes
├── data/
│ ├── db.sqlite
│ └── images/ # збережені фото чеків (для модерації)
└── logs/bot.log
/log — останні 15 чеків (усі статуси)/log approved / /log rejected / /log error — фільтр/comment <receipt_id> <текст> — додати коментар/stats — кількість approved / rejected / issuedBot також пушить адміну:
/start → привітання → кнопка «Поділитись номером»wait_phone → отримано Contact → зберігаємо номерwait_name → введення ПІБ (мінімум 2 слова)wait_receipt → фото → OCR → валідація → видача/відмова з деталямиunreadable — «не розпізнав чек, надішли чіткіше»not_enough_sku — «знайдено N Arteggia, треба 2»bad_date — «не вдалося розпізнати дату»out_of_period — «чек датовано X, акція Y–Z»duplicate_fiscal — «чек вже реєстрували»duplicate_image — «це фото вже надсилали»error — vision API помилка → повідомлення адміну# .env вже готовий, GEMINI_API_KEY з passepartout
# Після отримання BOT_TOKEN:
sed -i 's/BOT_TOKEN=.*/BOT_TOKEN=YOUR_TOKEN_HERE/' /srv/projects/arteggia-bot/.env
systemctl enable --now arteggia-bot
systemctl status arteggia-bot
journalctl -u arteggia-bot -f
@arteggia_promo_bot (або інша назва)Головна мета MVP — перевірити чи Gemini Vision нормально розпізнає укр фіскальні чеки. Після запуску бота: