nordabiz/SCRIPTS_INDEX.md
2026-01-01 14:01:49 +01:00

5.3 KiB

Indeks Skryptów - NORDA BIZNES HUB

Skrypty Główne

app.py

Główna aplikacja Flask

  • Routing i widoki
  • Czat AI (Gemini)
  • Logowanie użytkowników
  • Port: 5001

database.py

Modele bazy danych

  • Company model (24 pola)
  • Category model
  • User model
  • SessionLocal factory

Skrypty Importu Danych

import_norda_batch4.py

Batch 4 - 10 firm

  • SIM Rumia, TTM, VENCODE, VINDOR, VOLTRIM TRADE
  • WDX, Wejherplast, Pucka Gospodarka Komunalna
  • PHU S&K TOBACCO, PHU U Witka

Status: Wykonany (9 zaimportowanych, 1 skip)

import_norda_batch5.py

Batch 5 - 10 firm

  • GRAAL, Green House Systems, Hebel Masiak i Wspólnicy
  • Kancelaria Radcy Prawnego Łukasz Gilewicz, KORNIX
  • Lenap Hale, P&P, Pixlab Softwarehouse
  • Radio Norda FM, Autotest Polska

Status: Wykonany (8 zaimportowanych, 2 skip)

Skrypty Naprawcze

fix_norda_database.py

Kompleksowa naprawa bazy

3 kroki:

  1. Usunięcie Autotest Polska (nie jest członkiem NORDA)
  2. Aktualizacja 9 nazw firm (zgodność z listą NORDA)
  3. Import 4 brakujących firm (Batch 6):
    • Stalpunkt (NIP: 9571169754)
    • CoolAir (NIP: 9581678322)
    • MKonsult (NIP: 5882044171)
    • Portal (NIP: 5881830157)

Status: Wykonany Rezultat: 78 unikalnych firm → 78 firm

split_ttm_companies.py

Podział TTM na 3 osobne wpisy

Operacje:

  1. Usunięcie UNIQUE constraint z kolumny NIP
  2. Stworzenie 3 osobnych firm:
    • Nadmorski24.pl (slug: nadmorski24pl)
    • Radio Norda FM (slug: radio-norda-fm)
    • TTM (slug: ttm)
  3. Usunięcie starego połączonego wpisu "TTM / Nadmorski24.pl"

Wspólne dane (NIP: 5882285147):

  • Legal name: Twoja Telewizja Morska sp. z o.o.
  • REGON: 220659444
  • KRS: 0000311636

Status: Wykonany Rezultat: 78 firm → 80 firm (100% pokrycie listy NORDA)

update_ttm.py

Aktualizacja danych TTM (przed splitem)

  • Dodanie REGON: 220659444
  • Zmiana nazwy: "Nadmorski24.pl" → "TTM / Nadmorski24.pl"
  • Aktualizacja opisów

Status: Wykonany (później zastąpione przez split_ttm_companies.py)

remove_test_companies.py

Usunięcie 10 firm testowych

  • Kryteria: ID <= 10 AND NIP like '567%'
  • Firmy testowe stworzone podczas development

Status: Wykonany Rezultat: 68 firm → 58 firm

Skrypty Weryfikacyjne

verify_norda_list.py (do stworzenia)

Weryfikacja zgodności z listą NORDA

Funkcje Pomocnicze (w każdym skrypcie importu)

create_slug(name: str) -> str

def create_slug(name: str) -> str:
    """Create URL-friendly slug from company name"""
    slug = name.lower()
    replacements = {
        'ą': 'a', 'ć': 'c', 'ę': 'e', 'ł': 'l',
        'ń': 'n', 'ó': 'o', 'ś': 's', 'ź': 'z', 'ż': 'z',
        '&': 'i', ' ': '-', '/': '-', ',': '', '.': '',
        '(': '', ')': '', '"': '', "'": ''
    }
    for old, new in replacements.items():
        slug = slug.replace(old, new)
    slug = re.sub(r'[^a-z0-9-]', '', slug)
    slug = re.sub(r'-+', '-', slug)
    slug = slug.strip('-')
    return slug

parse_address(address: str) -> dict

def parse_address(address: str) -> dict:
    """Parse address into components"""
    postal_match = re.search(r'(\d{2}-\d{3})\s+([A-ZĄĆĘŁŃÓŚŹŻ][a-ząćęłńóśźż\s]+)', address)
    if postal_match:
        postal = postal_match.group(1)
        city = postal_match.group(2).strip()
        street = address.split(postal)[0].strip().replace('ul.', '').strip()
        return {
            'street': street if street else None,
            'city': city,
            'postal': postal,
            'full': address
        }
    else:
        return {
            'street': None,
            'city': 'Wejherowo',
            'postal': None,
            'full': address
        }

Kolejność Wykonywania Skryptów (historia)

1. remove_test_companies.py        → Usunięto 10 testowych firm
2. import_norda_batch4.py          → +9 firm (67 total)
3. update_ttm.py                   → Aktualizacja TTM
4. import_norda_batch5.py          → +8 firm (75 total)
5. fix_norda_database.py           → -1 firma, +4 firmy, ~9 nazw (78 total)
6. split_ttm_companies.py          → -1 wpis, +3 wpisy (80 total)

Uruchamianie Skryptów

Standard

python3 <script_name>.py

Z output redirection

python3 <script_name>.py > output.log 2>&1

Sprawdzenie przed uruchomieniem

sqlite3 nordabiz_local.db "SELECT COUNT(*) FROM companies;"

Backup przed uruchomieniem

cp nordabiz_local.db nordabiz_local.db.backup_before_<operation>

Wskazówki

  1. Zawsze sprawdź stan bazy przed uruchomieniem skryptu
  2. Zawsze zrób backup przed operacjami modyfikującymi
  3. Nigdy nie uruchamiaj tego samego skryptu importu dwa razy (sprawdza NIP)
  4. Skrypty importu są idempotentne - można bezpiecznie uruchomić ponownie
  5. Dla operacji modyfikujących schemat (jak split_ttm_companies.py) - uruchom tylko raz

Status Bazy Danych

Aktualny stan: 80 firm Jakość danych: Enhanced Ostatnia modyfikacja: 2025-11-24 (split_ttm_companies.py)


Uwaga: Wszystkie skrypty importu używają SessionLocal() z database.py i automatycznie zamykają połączenie w bloku finally.