Some checks are pending
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
8 contacts: PEJ leadership (Maj, Woszczyk, Skolimowski), supplier dept, Bechtel (Holda), PAA (Glowacki), Ministry (Wrochna), Choczewo info point. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
173 lines
7.5 KiB
Python
173 lines
7.5 KiB
Python
#!/usr/bin/env python3
|
|
"""Import PEJ-related external contacts to NordaBiz."""
|
|
|
|
import os
|
|
import sys
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy.orm import sessionmaker
|
|
from database import ExternalContact
|
|
|
|
DATABASE_URL = os.environ.get('DATABASE_URL', 'postgresql://nordabiz_app:dev_password@localhost:5433/nordabiz')
|
|
|
|
CONTACTS = [
|
|
# PEJ — kluczowe osoby
|
|
{
|
|
'first_name': 'Grzegorz', 'last_name': 'Maj',
|
|
'position': 'Pełnomocnik Zarządu ds. Wsparcia Rozwoju Rynku (Local Content)',
|
|
'organization_name': 'Polskie Elektrownie Jądrowe Sp. z o.o.',
|
|
'organization_type': 'company',
|
|
'organization_address': 'Al. Jerozolimskie 132/136, 02-305 Warszawa',
|
|
'organization_website': 'https://pej.pl',
|
|
'linkedin_url': 'https://www.linkedin.com/in/grzegorz-maj-80145574/',
|
|
'project_name': 'Elektrownia Jądrowa Lubiatowo-Kopalino',
|
|
'tags': 'PEJ, local content, dostawcy, atom, elektrownia jądrowa',
|
|
'notes': 'Kluczowy kontakt Izby ws. local content. Spotkanie z Zarządem Izby w marcu 2026.',
|
|
},
|
|
{
|
|
'first_name': 'Marek', 'last_name': 'Woszczyk',
|
|
'position': 'Prezes Zarządu PEJ',
|
|
'organization_name': 'Polskie Elektrownie Jądrowe Sp. z o.o.',
|
|
'organization_type': 'company',
|
|
'organization_address': 'Al. Jerozolimskie 132/136, 02-305 Warszawa',
|
|
'organization_website': 'https://pej.pl',
|
|
'linkedin_url': 'https://www.linkedin.com/in/marek-woszczyk-emba-1670a969/',
|
|
'project_name': 'Elektrownia Jądrowa Lubiatowo-Kopalino',
|
|
'tags': 'PEJ, zarząd, prezes, atom, elektrownia jądrowa',
|
|
'notes': 'Prezes PEJ od 1 lipca 2025. Były prezes URE i PGE.',
|
|
},
|
|
{
|
|
'first_name': 'Marcin', 'last_name': 'Skolimowski',
|
|
'position': 'Rzecznik prasowy PEJ',
|
|
'phone': '+48 885 661 184',
|
|
'email': 'Marcin.Skolimowski@pej.pl',
|
|
'organization_name': 'Polskie Elektrownie Jądrowe Sp. z o.o.',
|
|
'organization_type': 'company',
|
|
'organization_address': 'Al. Jerozolimskie 132/136, 02-305 Warszawa',
|
|
'organization_website': 'https://pej.pl',
|
|
'project_name': 'Elektrownia Jądrowa Lubiatowo-Kopalino',
|
|
'tags': 'PEJ, rzecznik, media, komunikacja, atom',
|
|
},
|
|
# PEJ — dział dostawców
|
|
{
|
|
'first_name': 'Dział', 'last_name': 'Dostawców PEJ',
|
|
'position': 'Rejestracja i współpraca z dostawcami',
|
|
'phone': '+48 885 993 277',
|
|
'email': 'dostawcy@pej.pl',
|
|
'organization_name': 'Polskie Elektrownie Jądrowe Sp. z o.o.',
|
|
'organization_type': 'company',
|
|
'organization_address': 'Al. Jerozolimskie 132/136, 02-305 Warszawa',
|
|
'organization_website': 'https://pej.pl',
|
|
'project_name': 'Elektrownia Jądrowa Lubiatowo-Kopalino',
|
|
'tags': 'PEJ, dostawcy, przetargi, zamówienia, local content',
|
|
'notes': 'Rejestracja dostawców: wysłać nazwę firmy, NIP, branżę, DUNS, osobę kontaktową.',
|
|
'related_links': [
|
|
{'title': 'Platforma zakupowa PEJ', 'url': 'https://pz.pej.pl/', 'type': 'portal'},
|
|
{'title': 'Tablica ogłoszeń dostawców', 'url': 'https://pej.pl/en/for-suppliers/notice-board/', 'type': 'portal'},
|
|
],
|
|
},
|
|
# Bechtel Polska
|
|
{
|
|
'first_name': 'Leszek', 'last_name': 'Hołda',
|
|
'position': 'Prezes Bechtel Polska',
|
|
'organization_name': 'Bechtel Polska Sp. z o.o.',
|
|
'organization_type': 'company',
|
|
'organization_website': 'https://www.bechtel.com/markets/nuclear-power/',
|
|
'linkedin_url': 'https://www.linkedin.com/in/leszekholda/',
|
|
'project_name': 'Elektrownia Jądrowa Lubiatowo-Kopalino',
|
|
'tags': 'Bechtel, generalny wykonawca, budowa, EPC, atom',
|
|
'notes': 'Generalny wykonawca elektrowni jądrowej. Wcześniej w PKP Energetyka.',
|
|
},
|
|
# PAA
|
|
{
|
|
'first_name': 'Andrzej', 'last_name': 'Głowacki',
|
|
'position': 'Prezes Państwowej Agencji Atomistyki',
|
|
'organization_name': 'Państwowa Agencja Atomistyki (PAA)',
|
|
'organization_type': 'government',
|
|
'organization_address': 'ul. Bonifraterska 17, 00-203 Warszawa',
|
|
'organization_website': 'https://www.gov.pl/web/paa',
|
|
'project_name': 'Elektrownia Jądrowa Lubiatowo-Kopalino',
|
|
'tags': 'PAA, regulator, dozór jądrowy, pozwolenie na budowę, atom',
|
|
'notes': 'Prezes PAA od marca 2023 (kadencja 5 lat). Odpowiada za wydanie pozwolenia na budowę EJ.',
|
|
},
|
|
# Ministerstwo Przemysłu
|
|
{
|
|
'first_name': 'Wojciech', 'last_name': 'Wrochna',
|
|
'position': 'Pełnomocnik Rządu ds. Strategicznej Infrastruktury Energetycznej',
|
|
'organization_name': 'Ministerstwo Przemysłu',
|
|
'organization_type': 'government',
|
|
'organization_website': 'https://www.gov.pl/web/przemysl',
|
|
'project_name': 'Elektrownia Jądrowa Lubiatowo-Kopalino',
|
|
'tags': 'ministerstwo, pełnomocnik, infrastruktura energetyczna, atom, PEJ',
|
|
'notes': 'Sekretarz stanu w Ministerstwie Przemysłu. Nadzoruje PEJ od strony rządowej.',
|
|
},
|
|
# Punkt informacyjny Choczewo
|
|
{
|
|
'first_name': 'Punkt Informacyjny', 'last_name': 'PEJ Choczewo',
|
|
'position': 'Lokalny Punkt Informacyjny',
|
|
'phone': '+48 785 772 726',
|
|
'email': 'info.choczewo@pej.pl',
|
|
'organization_name': 'Polskie Elektrownie Jądrowe Sp. z o.o.',
|
|
'organization_type': 'company',
|
|
'organization_address': 'ul. Pucka 4, 84-210 Choczewo',
|
|
'organization_website': 'https://pej.pl',
|
|
'project_name': 'Elektrownia Jądrowa Lubiatowo-Kopalino',
|
|
'tags': 'PEJ, Choczewo, punkt informacyjny, lokalny, atom',
|
|
'notes': 'Godziny otwarcia: Pn/Śr/Czw 9-16, Pt 9-14, Wt nieczynne.',
|
|
},
|
|
]
|
|
|
|
|
|
def import_contacts():
|
|
engine = create_engine(DATABASE_URL)
|
|
Session = sessionmaker(bind=engine)
|
|
session = Session()
|
|
|
|
added = 0
|
|
skipped = 0
|
|
|
|
for c in CONTACTS:
|
|
# Check if already exists (by name + organization)
|
|
existing = session.query(ExternalContact).filter(
|
|
ExternalContact.first_name == c['first_name'],
|
|
ExternalContact.last_name == c['last_name'],
|
|
ExternalContact.organization_name == c['organization_name']
|
|
).first()
|
|
|
|
if existing:
|
|
print(f" SKIP: {c['first_name']} {c['last_name']} ({c['organization_name']}) — already exists (ID={existing.id})")
|
|
skipped += 1
|
|
continue
|
|
|
|
contact = ExternalContact(
|
|
first_name=c['first_name'],
|
|
last_name=c['last_name'],
|
|
position=c.get('position'),
|
|
phone=c.get('phone'),
|
|
email=c.get('email'),
|
|
linkedin_url=c.get('linkedin_url'),
|
|
organization_name=c['organization_name'],
|
|
organization_type=c.get('organization_type', 'other'),
|
|
organization_address=c.get('organization_address'),
|
|
organization_website=c.get('organization_website'),
|
|
project_name=c.get('project_name'),
|
|
tags=c.get('tags'),
|
|
notes=c.get('notes'),
|
|
related_links=c.get('related_links'),
|
|
source_type='manual',
|
|
is_active=True,
|
|
is_verified=True,
|
|
)
|
|
session.add(contact)
|
|
print(f" ADD: {c['first_name']} {c['last_name']} @ {c['organization_name']}")
|
|
added += 1
|
|
|
|
session.commit()
|
|
print(f"\nDone: {added} added, {skipped} skipped")
|
|
session.close()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
import_contacts()
|