[30388f42] Infrastructure Hardening: Repaired CE/Connector DB schema, fixed frontend styling build, implemented robust echo shield in worker v2.1.1, and integrated Lead Engine into gateway.

This commit is contained in:
2026-03-07 14:08:42 +00:00
parent 35c30bc39a
commit d1b77fd2f6
415 changed files with 24100 additions and 13301 deletions

View File

@@ -0,0 +1,95 @@
import sqlite3
import os
DB_PATH = "/data/companies_v3_fixed_2.db"
# Fallback for local testing
if not os.path.exists(DB_PATH):
DB_PATH = "company-explorer/companies_v3_fixed_2.db"
def add_column(cursor, table, column, type_def):
try:
cursor.execute(f"ALTER TABLE {table} ADD COLUMN {column} {type_def}")
print(f"✅ Added {table}.{column}")
except sqlite3.OperationalError as e:
if "duplicate column name" in str(e).lower():
print(f" {table}.{column} already exists")
else:
print(f"❌ Error adding {table}.{column}: {e}")
def migrate():
print(f"Starting migration for {DB_PATH}...")
if not os.path.exists(DB_PATH):
print(f"❌ Database not found at {DB_PATH}")
return
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
# Columns for 'companies' table
company_cols = [
("street", "TEXT"),
("zip_code", "TEXT"),
("city", "TEXT"),
("country", "TEXT DEFAULT 'DE'"),
("calculated_metric_name", "TEXT"),
("calculated_metric_value", "FLOAT"),
("calculated_metric_unit", "TEXT"),
("standardized_metric_value", "FLOAT"),
("standardized_metric_unit", "TEXT"),
("metric_source", "TEXT"),
("metric_proof_text", "TEXT"),
("metric_source_url", "TEXT"),
("metric_confidence", "FLOAT"),
("metric_confidence_reason", "TEXT"),
("ai_opener", "TEXT"),
("ai_opener_secondary", "TEXT"),
("research_dossier", "TEXT")
]
# Columns for 'industries' table
industry_cols = [
("status_notion", "TEXT"),
("is_focus", "BOOLEAN DEFAULT 0"),
("pains", "TEXT"),
("gains", "TEXT"),
("notes", "TEXT"),
("priority", "TEXT"),
("ops_focus_secondary", "BOOLEAN DEFAULT 0"),
("strategy_briefing", "TEXT"),
("metric_type", "TEXT"),
("min_requirement", "FLOAT"),
("whale_threshold", "FLOAT"),
("proxy_factor", "FLOAT"),
("scraper_search_term", "TEXT"),
("scraper_keywords", "TEXT"),
("standardization_logic", "TEXT"),
("primary_category_id", "INTEGER"),
("secondary_category_id", "INTEGER")
]
# Columns for 'contacts' table
contact_cols = [
("so_contact_id", "INTEGER"),
("so_person_id", "INTEGER"),
("role", "TEXT"),
("status", "TEXT"),
("unsubscribe_token", "TEXT"),
("is_primary", "BOOLEAN DEFAULT 0")
]
for col, dtype in company_cols:
add_column(cursor, "companies", col, dtype)
for col, dtype in industry_cols:
add_column(cursor, "industries", col, dtype)
for col, dtype in contact_cols:
add_column(cursor, "contacts", col, dtype)
conn.commit()
conn.close()
print("Migration complete.")
if __name__ == "__main__":
migrate()