|
|
|
|
|
|
|
|
""" |
|
|
Initialize database with all required tables |
|
|
""" |
|
|
import sqlite3 |
|
|
import os |
|
|
|
|
|
|
|
|
data_dir = os.path.join(os.path.dirname(__file__), 'data') |
|
|
os.makedirs(data_dir, exist_ok=True) |
|
|
|
|
|
db_path = os.path.join(data_dir, 'sentiment_analysis.db') |
|
|
|
|
|
|
|
|
if os.path.exists(db_path): |
|
|
os.remove(db_path) |
|
|
print(f"🗑️ Removed old database: {db_path}") |
|
|
|
|
|
|
|
|
conn = sqlite3.connect(db_path) |
|
|
cursor = conn.cursor() |
|
|
|
|
|
print("📋 Creating tables...") |
|
|
|
|
|
|
|
|
cursor.execute(''' |
|
|
CREATE TABLE IF NOT EXISTS customer_profiles ( |
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
|
customer_id TEXT UNIQUE NOT NULL, |
|
|
name TEXT, |
|
|
context_type TEXT, |
|
|
first_contact TIMESTAMP, |
|
|
last_contact TIMESTAMP, |
|
|
total_interactions INTEGER DEFAULT 0, |
|
|
churn_risk REAL DEFAULT 0, |
|
|
lifetime_sentiment REAL DEFAULT 0, |
|
|
notes TEXT |
|
|
) |
|
|
''') |
|
|
print("✅ Created: customer_profiles") |
|
|
|
|
|
|
|
|
cursor.execute(''' |
|
|
CREATE TABLE IF NOT EXISTS conversations ( |
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
|
customer_id TEXT NOT NULL, |
|
|
context_type TEXT NOT NULL, |
|
|
analysis_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
|
|
messages TEXT NOT NULL, |
|
|
sentiment_score REAL, |
|
|
trend TEXT, |
|
|
risk_level TEXT, |
|
|
predicted_action TEXT, |
|
|
confidence REAL |
|
|
) |
|
|
''') |
|
|
print("✅ Created: conversations") |
|
|
|
|
|
|
|
|
cursor.execute(''' |
|
|
CREATE TABLE IF NOT EXISTS risk_alerts ( |
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|
|
customer_id TEXT NOT NULL, |
|
|
alert_type TEXT, |
|
|
severity TEXT, |
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
|
|
resolved INTEGER DEFAULT 0, |
|
|
notes TEXT |
|
|
) |
|
|
''') |
|
|
print("✅ Created: risk_alerts") |
|
|
|
|
|
conn.commit() |
|
|
|
|
|
|
|
|
cursor.execute("SELECT name FROM sqlite_master WHERE type='table'") |
|
|
tables = cursor.fetchall() |
|
|
print(f"\n📊 Tables in database: {len(tables)}") |
|
|
for table in tables: |
|
|
cursor.execute(f"SELECT COUNT(*) FROM {table[0]}") |
|
|
count = cursor.fetchone()[0] |
|
|
print(f" • {table[0]}: {count} rows") |
|
|
|
|
|
conn.close() |
|
|
print(f"\n✅ Database initialized successfully at: {db_path}") |
|
|
|