nordabiz/update_verified_data_2025-12-29.py
2026-01-01 14:01:49 +01:00

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()