[2ff88f42] Full End-to-End integration: Webhooks, Auto-Enrichment, Notion-Sync, UI updates and new Connector Architecture
This commit is contained in:
111
seed_test_data.py
Normal file
111
seed_test_data.py
Normal file
@@ -0,0 +1,111 @@
|
||||
import sys
|
||||
import os
|
||||
import requests
|
||||
import json
|
||||
from sqlalchemy import create_engine, select
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
|
||||
# Add paths to use backend models directly for complex seeding (Matrix/Person)
|
||||
sys.path.append(os.path.join(os.getcwd(), "company-explorer"))
|
||||
from backend.database import Base, Company, Contact, Industry, JobRoleMapping, MarketingMatrix
|
||||
|
||||
# Database Connection (Direct SQL access is easier for seeding specific IDs)
|
||||
DB_PATH = "sqlite:///companies_v3_fixed_2.db" # Local relative path
|
||||
engine = create_engine(DB_PATH)
|
||||
Session = sessionmaker(bind=engine)
|
||||
session = Session()
|
||||
|
||||
def seed():
|
||||
print("--- Company Explorer Test Data Seeder ---")
|
||||
print("This script prepares the database for the SuperOffice Connector End-to-End Test.")
|
||||
|
||||
# 1. User Input
|
||||
so_contact_id = input("Enter SuperOffice Contact ID (Company) [e.g. 123]: ").strip()
|
||||
so_person_id = input("Enter SuperOffice Person ID [e.g. 456]: ").strip()
|
||||
company_name = input("Enter Company Name [e.g. Test GmbH]: ").strip() or "Test GmbH"
|
||||
person_role = "Geschäftsführer" # Fixed for test simplicity
|
||||
industry_name = "Logistik" # Fixed for test simplicity
|
||||
|
||||
if not so_contact_id or not so_person_id:
|
||||
print("Error: IDs are required!")
|
||||
return
|
||||
|
||||
print(f"\nSeeding for Company '{company_name}' (ID: {so_contact_id}) and Person (ID: {so_person_id})...")
|
||||
|
||||
# 2. Check/Create Industry
|
||||
industry = session.query(Industry).filter_by(name=industry_name).first()
|
||||
if not industry:
|
||||
industry = Industry(name=industry_name, description="Test Industry")
|
||||
session.add(industry)
|
||||
session.commit()
|
||||
print(f"✅ Created Industry '{industry_name}'")
|
||||
else:
|
||||
print(f"ℹ️ Industry '{industry_name}' exists")
|
||||
|
||||
# 3. Check/Create Job Role
|
||||
role_map = session.query(JobRoleMapping).filter_by(role=person_role).first()
|
||||
if not role_map:
|
||||
role_map = JobRoleMapping(pattern=person_role, role=person_role) # Simple mapping
|
||||
session.add(role_map)
|
||||
session.commit()
|
||||
print(f"✅ Created Role Mapping '{person_role}'")
|
||||
else:
|
||||
print(f"ℹ️ Role Mapping '{person_role}' exists")
|
||||
|
||||
# 4. Check/Create Company
|
||||
company = session.query(Company).filter_by(crm_id=str(so_contact_id)).first()
|
||||
if not company:
|
||||
company = Company(
|
||||
name=company_name,
|
||||
crm_id=str(so_contact_id),
|
||||
industry_ai=industry_name, # Link to our test industry
|
||||
status="ENRICHED"
|
||||
)
|
||||
session.add(company)
|
||||
session.commit()
|
||||
print(f"✅ Created Company '{company_name}' with CRM-ID {so_contact_id}")
|
||||
else:
|
||||
company.industry_ai = industry_name # Ensure correct industry for test
|
||||
session.commit()
|
||||
print(f"ℹ️ Company '{company_name}' exists (Updated Industry)")
|
||||
|
||||
# 5. Check/Create Person
|
||||
person = session.query(Contact).filter_by(so_person_id=int(so_person_id)).first()
|
||||
if not person:
|
||||
person = Contact(
|
||||
company_id=company.id,
|
||||
first_name="Max",
|
||||
last_name="Mustermann",
|
||||
so_person_id=int(so_person_id),
|
||||
so_contact_id=int(so_contact_id),
|
||||
role=person_role
|
||||
)
|
||||
session.add(person)
|
||||
session.commit()
|
||||
print(f"✅ Created Person with SO-ID {so_person_id}")
|
||||
else:
|
||||
person.role = person_role # Ensure role match
|
||||
session.commit()
|
||||
print(f"ℹ️ Person with SO-ID {so_person_id} exists (Updated Role)")
|
||||
|
||||
# 6. Check/Create Matrix Entry
|
||||
matrix = session.query(MarketingMatrix).filter_by(industry_id=industry.id, role_id=role_map.id).first()
|
||||
if not matrix:
|
||||
matrix = MarketingMatrix(
|
||||
industry_id=industry.id,
|
||||
role_id=role_map.id,
|
||||
subject="Test Betreff: Optimierung für {{company_name}}",
|
||||
intro="Hallo, dies ist ein generierter Test-Text aus dem Company Explorer.",
|
||||
social_proof="Wir arbeiten bereits erfolgreich mit anderen Logistikern zusammen."
|
||||
)
|
||||
session.add(matrix)
|
||||
session.commit()
|
||||
print(f"✅ Created Matrix Entry for {industry_name} x {person_role}")
|
||||
else:
|
||||
print(f"ℹ️ Matrix Entry exists")
|
||||
|
||||
print("\n🎉 Seeding Complete! The Company Explorer is ready.")
|
||||
print(f"You can now trigger the Webhook for Contact {so_contact_id} / Person {so_person_id}.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
seed()
|
||||
Reference in New Issue
Block a user