Чистка хвостов веб-формы: убраны web_registrations и строка «с сайта» в стате
- 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 <noreply@anthropic.com>
This commit is contained in:
-51
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user