From 72eeccdc3ad86c8f55e046cd974a17ba225c0419 Mon Sep 17 00:00:00 2001 From: Kenik Date: Thu, 23 Jul 2026 20:23:36 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A7=D0=B8=D1=81=D1=82=D0=BA=D0=B0=20=D1=85?= =?UTF-8?q?=D0=B2=D0=BE=D1=81=D1=82=D0=BE=D0=B2=20=D0=B2=D0=B5=D0=B1-?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D1=8B:=20=D1=83=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D1=8B=20web=5Fregistrations=20=D0=B8=20=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=BA=D0=B0=20=C2=AB=D1=81=20=D1=81=D0=B0=D0=B9?= =?UTF-8?q?=D1=82=D0=B0=C2=BB=20=D0=B2=20=D1=81=D1=82=D0=B0=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - database.py: удалены таблица web_registrations, методы add_web_registration и next_web_registration_id, поле from_web из get_lead_stats (форму убрали). - bot.py: из статистики убрана строка «с сайта» (веб-заявки больше не пишутся). pytest 33 passed. Co-Authored-By: Claude Opus 4.8 --- bot.py | 5 ++--- database.py | 51 --------------------------------------------------- 2 files changed, 2 insertions(+), 54 deletions(-) diff --git a/bot.py b/bot.py index 64c0fbf..1856d89 100644 --- a/bot.py +++ b/bot.py @@ -1428,8 +1428,7 @@ class VKBotApplication: "🗂 Заявки (всего): {total}\n" " • сегодня: {today}\n" " • за 7 дней: {last7}\n" - " • из бота: {from_bot}\n" - " • с сайта: {from_web}\n\n" + " • из бота: {from_bot}\n\n" "📨 Согласны на рассылку: {mk_yes} из {total} ({mk_pct}%)\n\n" "🎮 По направлениям:\n{services}\n" "💬 Диалоги:\n" @@ -1437,7 +1436,7 @@ class VKBotApplication: " • сообщений от клиентов: {umsg}" ).format( total=total, today=ls["today"], last7=ls["last7"], - from_bot=ls["from_bot"], from_web=ls["from_web"], + from_bot=ls["from_bot"], mk_yes=ls["marketing_yes"], mk_pct=marketing_pct, services=service_lines, uniq=ds["unique_users"], umsg=ds["user_messages"] ) diff --git a/database.py b/database.py index 5e249c1..fcbc763 100644 --- a/database.py +++ b/database.py @@ -174,21 +174,6 @@ class DatabaseManager: ) """) - # Table for web registrations - cursor.execute(""" - CREATE TABLE IF NOT EXISTS web_registrations ( - id TEXT PRIMARY KEY, - name TEXT, - phone TEXT, - email TEXT, - vk_link TEXT, - agree_oferta INTEGER, - agree_policy INTEGER, - agree_newsletter INTEGER, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP - ) - """) - # Table for editable bot links (переопределяют дефолты из config/.env) cursor.execute(""" CREATE TABLE IF NOT EXISTS bot_links ( @@ -389,21 +374,6 @@ class DatabaseManager: ) conn.commit() - def next_web_registration_id(self) -> str: - """Следующий ID веб-заявки вида id_004 по МАКСИМАЛЬНОМУ существующему номеру. - - Считаем по max(числовой суффикс), а не по COUNT: при удалении записей - COUNT+1 может совпасть с существующим id и нарушить PRIMARY KEY. - """ - with self._get_connection() as conn: - cursor = conn.cursor() - # substr(id, 4) отрезает префикс 'id_' и приводит к числу - cursor.execute( - "SELECT COALESCE(MAX(CAST(substr(id, 4) AS INTEGER)), 0) FROM web_registrations " - "WHERE id LIKE 'id\\_%' ESCAPE '\\'" - ) - return f"id_{cursor.fetchone()[0] + 1:03d}" - def add_lead(self, user_id: int, source: str, name: str, phone: str, service: Optional[str] = None, call_time: Optional[str] = None, promo: Optional[str] = None, marketing: bool = False): @@ -438,7 +408,6 @@ class DatabaseManager: "today": scalar("SELECT COUNT(*) FROM leads WHERE date(created_at) = date('now', 'localtime')"), "last7": scalar("SELECT COUNT(*) FROM leads WHERE created_at >= datetime('now', '-7 days')"), "from_bot": scalar("SELECT COUNT(*) FROM leads WHERE source = 'bot'"), - "from_web": scalar("SELECT COUNT(*) FROM leads WHERE source = 'web'"), "marketing_yes": scalar("SELECT COUNT(*) FROM leads WHERE marketing = 1"), } @@ -672,23 +641,3 @@ class DatabaseManager: stats["by_position"] = cursor.fetchall() return stats - def add_web_registration(self, reg_id: str, data: dict): - """Сохранить заявку с веб-формы в базу данных SQLite.""" - with self._get_connection() as conn: - cursor = conn.cursor() - cursor.execute(""" - INSERT INTO web_registrations ( - id, name, phone, email, vk_link, - agree_oferta, agree_policy, agree_newsletter - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?) - """, ( - reg_id, - data.get("name", "").strip(), - data.get("phone", "").strip(), - data.get("email", "").strip(), - data.get("vk", "").strip(), - 1 if data.get("agreeOferta") else 0, - 1 if data.get("agreePolicy") else 0, - 1 if data.get("agreeNewsletter") else 0 - )) - conn.commit()