183 lines
6.4 KiB
Python
183 lines
6.4 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
NordaBiznes - Aktualizacja zweryfikowanych danych firm
|
|
Data weryfikacji: 2025-12-29
|
|
Autor: Claude Code (automatyczna weryfikacja)
|
|
|
|
Ten skrypt aktualizuje dane firm na podstawie weryfikacji przeprowadzonej
|
|
przez 8 równoległych agentów sprawdzających rejestry KRS/CEIDG oraz strony WWW.
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
from datetime import datetime
|
|
|
|
# Dodaj ścieżkę do modułów
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
from database import SessionLocal, Company, CompanyQualityTracking
|
|
|
|
# Data weryfikacji
|
|
VERIFICATION_DATE = datetime(2025, 12, 29)
|
|
VERIFIED_BY = "Claude Code - automatyczna weryfikacja (8 agentów równoległych)"
|
|
|
|
# Zmiany do wdrożenia
|
|
PHONE_UPDATES = {
|
|
14: "+48 530 777 530", # Agis Management Group
|
|
25: "+48 58 738 97 01", # Chopin TV Kablowa
|
|
27: "+48 58 677 52 39", # CrisTap
|
|
37: "+48 502 314 830", # Joker
|
|
53: "+48 58 677 47 71", # PHU TED
|
|
64: "+48 698 367 205", # SCROL
|
|
68: "+48 58 672 30 21", # Sigma Budownictwo
|
|
75: "+48 58 673 04 00", # Pucka Gosp. Komunalna
|
|
76: "+48 668 172 141", # PHU S&K TOBACCO
|
|
77: "+48 666 999 964", # PHU Witka
|
|
}
|
|
|
|
EMAIL_UPDATES = {
|
|
22: "sekretariat@bibrokers.pl", # Bibrokers
|
|
30: "ekod@ekod.com.pl", # Ekod
|
|
37: "biuro@joker-reklamy.pl", # Joker
|
|
38: "info@kammet.com.pl", # KAMMET
|
|
52: "biuro@pgconstruction.pl", # PG Construction
|
|
56: "wejherowo@sklepprosport.pl", # Pro-Sport
|
|
69: "biuro@rumiasim.pl", # SIM Rumia
|
|
75: "sekretariat@pgkpuck.pl", # Pucka Gosp. Komunalna
|
|
76: "kontakt@lordalkohole.pl", # PHU S&K TOBACCO
|
|
77: "biuro@uwitka.com.pl", # PHU Witka
|
|
}
|
|
|
|
# Firmy z problemami WWW (do oznaczenia)
|
|
WWW_ISSUES = {
|
|
15: "SSL_ERROR", # ALMARES
|
|
19: "SSL_ERROR", # ARD Invest
|
|
29: "SSL_ERROR", # Eko Laser
|
|
40: "SSL_ERROR", # Kancelaria Skwarło
|
|
55: "MAINTENANCE", # Pro-Invest
|
|
61: "OFFLINE", # Rubinsolar
|
|
64: "SSL_ERROR", # SCROL
|
|
65: "OFFLINE", # Semerling Security
|
|
75: "SSL_ERROR", # Pucka Gosp. Komunalna
|
|
}
|
|
|
|
|
|
def update_company_data(dry_run=True):
|
|
"""Aktualizuje dane firm w bazie."""
|
|
db = SessionLocal()
|
|
changes = []
|
|
|
|
try:
|
|
# Aktualizacja telefonów
|
|
for company_id, new_phone in PHONE_UPDATES.items():
|
|
company = db.query(Company).filter(Company.id == company_id).first()
|
|
if company:
|
|
old_phone = company.phone
|
|
if not dry_run:
|
|
company.phone = new_phone
|
|
company.last_verified_at = VERIFICATION_DATE
|
|
changes.append({
|
|
'company_id': company_id,
|
|
'company_name': company.name,
|
|
'field': 'phone',
|
|
'old_value': old_phone,
|
|
'new_value': new_phone
|
|
})
|
|
print(f"[PHONE] {company.name}: {old_phone} -> {new_phone}")
|
|
|
|
# Aktualizacja emaili
|
|
for company_id, new_email in EMAIL_UPDATES.items():
|
|
company = db.query(Company).filter(Company.id == company_id).first()
|
|
if company:
|
|
old_email = company.email
|
|
if not dry_run:
|
|
company.email = new_email
|
|
company.last_verified_at = VERIFICATION_DATE
|
|
changes.append({
|
|
'company_id': company_id,
|
|
'company_name': company.name,
|
|
'field': 'email',
|
|
'old_value': old_email,
|
|
'new_value': new_email
|
|
})
|
|
print(f"[EMAIL] {company.name}: {old_email} -> {new_email}")
|
|
|
|
# Oznaczanie problemów z WWW
|
|
for company_id, issue_type in WWW_ISSUES.items():
|
|
company = db.query(Company).filter(Company.id == company_id).first()
|
|
if company:
|
|
if not dry_run:
|
|
company.website_status = issue_type
|
|
company.website_last_analyzed = VERIFICATION_DATE
|
|
changes.append({
|
|
'company_id': company_id,
|
|
'company_name': company.name,
|
|
'field': 'website_status',
|
|
'old_value': company.website_status,
|
|
'new_value': issue_type
|
|
})
|
|
print(f"[WWW] {company.name}: website_status = {issue_type}")
|
|
|
|
# Aktualizacja quality tracking dla wszystkich firm
|
|
all_companies = db.query(Company).all()
|
|
for company in all_companies:
|
|
tracking = db.query(CompanyQualityTracking).filter(
|
|
CompanyQualityTracking.company_id == company.id
|
|
).first()
|
|
|
|
if not dry_run:
|
|
if not tracking:
|
|
tracking = CompanyQualityTracking(
|
|
company_id=company.id,
|
|
verification_count=1,
|
|
last_verified_at=VERIFICATION_DATE,
|
|
verified_by=VERIFIED_BY
|
|
)
|
|
db.add(tracking)
|
|
else:
|
|
tracking.verification_count += 1
|
|
tracking.last_verified_at = VERIFICATION_DATE
|
|
tracking.verified_by = VERIFIED_BY
|
|
|
|
if not dry_run:
|
|
db.commit()
|
|
print(f"\n✅ Zaktualizowano {len(changes)} zmian w bazie danych.")
|
|
else:
|
|
print(f"\n[DRY RUN] Znaleziono {len(changes)} zmian do wdrożenia.")
|
|
print("Uruchom z parametrem --apply aby zastosować zmiany.")
|
|
|
|
return changes
|
|
|
|
except Exception as e:
|
|
db.rollback()
|
|
print(f"❌ Błąd: {e}")
|
|
raise
|
|
finally:
|
|
db.close()
|
|
|
|
|
|
def main():
|
|
import argparse
|
|
parser = argparse.ArgumentParser(description='Aktualizacja zweryfikowanych danych firm NordaBiznes')
|
|
parser.add_argument('--apply', action='store_true', help='Zastosuj zmiany (domyślnie: dry-run)')
|
|
args = parser.parse_args()
|
|
|
|
print("=" * 60)
|
|
print("NordaBiznes - Aktualizacja zweryfikowanych danych")
|
|
print(f"Data weryfikacji: {VERIFICATION_DATE.strftime('%Y-%m-%d')}")
|
|
print("=" * 60)
|
|
print()
|
|
|
|
dry_run = not args.apply
|
|
if dry_run:
|
|
print("🔍 TRYB DRY-RUN (symulacja)")
|
|
else:
|
|
print("⚠️ TRYB PRODUKCYJNY - zmiany zostaną zapisane!")
|
|
print()
|
|
|
|
update_company_data(dry_run=dry_run)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|