# NORDA BIZNES HUB - Informacje Projektowe

## Cel Projektu
Katalog firm członkowskich NORDA BIZNES - stowarzyszenia biznesowego z Wejherowa i okolic.
Aplikacja webowa umożliwiająca przeglądanie, wyszukiwanie i czat z AI o firmach członkowskich.

## Status Bazy Danych

### Aktualna Zawartość
- **80 firm** - 100% pokrycie oficjalnej listy NORDA BIZNES
- Źródło: https://norda-biznes.info/czlonkowie
- Data ostatniej aktualizacji: 2025-11-24

### Struktura Bazy
**Database:** PostgreSQL via Docker (`localhost:5433/nordabiz` - DEV) / PostgreSQL (`10.22.68.249:5432` - PROD)
**ORM:** SQLAlchemy

**Tabele:**
- `companies` - 80 firm członkowskich
- `categories` - kategorie branżowe
- `users` - użytkownicy z logowaniem

### Model Company (companies)
```python
id INTEGER PRIMARY KEY
name VARCHAR(255) NOT NULL          # Nazwa handlowa
legal_name VARCHAR(255)             # Pełna nazwa prawna
slug VARCHAR(255) UNIQUE            # URL-friendly identyfikator

# Identyfikatory podatkowe
nip VARCHAR(10)                     # NIP (bez UNIQUE - możliwe duplikaty)
regon VARCHAR(14)                   # REGON
krs VARCHAR(10)                     # KRS

# Dane kontaktowe
website VARCHAR(500)
email VARCHAR(255)
phone VARCHAR(50)

# Adres
address_street VARCHAR(255)
address_city VARCHAR(100)
address_postal VARCHAR(10)
address_full TEXT

# Opisy
description_short TEXT
description_full TEXT

# Metadane
category_id INTEGER                 # FK do categories
year_established INTEGER
employees_count INTEGER
capital_amount NUMERIC(15,2)
status VARCHAR(20)                  # 'active'
data_quality VARCHAR(20)            # 'basic', 'enhanced', 'complete'
last_updated DATETIME
created_at DATETIME
```

### Ważna Zmiana Schematu
**NIP bez UNIQUE constraint** - pozwala na przypisanie tego samego NIP do wielu wpisów.

**Powód:** Jedna firma prawna może mieć wiele marek/usług na liście NORDA:
- Nadmorski24.pl (portal)
- Radio Norda FM (radio)
- TTM (telewizja)

Wszystkie trzy mają NIP: 5882285147 (Twoja Telewizja Morska sp. z o.o.)

## Skrypty Importu

### Historia Importów
1. **Batch 1-3** - 56 firm (poprzednia sesja)
2. **Batch 4** (`import_norda_batch4.py`) - 9 firm
3. **Batch 5** (`import_norda_batch5.py`) - 8 firm
4. **Batch 6** (`fix_norda_database.py`) - 4 brakujące firmy
5. **Split** (`split_ttm_companies.py`) - podział TTM na 3 wpisy

### Usunięcia
- **Test companies** - 10 firm testowych (NIP 567*)
- **Autotest Polska** - nie jest członkiem NORDA

### Korekty Nazw (9 firm)
```
WATERM Artur Wiertel → Waterm
Ekofabryka Wejherowo → Ekofabryka
Kancelaria Rachunkowa Gawin & Wojnowska → Kancelaria Rachunkowa Gawin & Wojnowska Sp. z o. o.
Round Two → Round Two Sp. z o.o.
Hebel Masiak i Wspólnicy → Hebel Masiak i Wspólnicy Adwokaci i Radcowie Prawni
PHU U Witka → PHU Witka
Kupsa Coatings → Kupsa Coathing
Litwic & Litwic → Litwic&Litwic
```

## Funkcje Pomocnicze

### create_slug(name: str) -> str
Tworzy URL-friendly slug z polskiej nazwy firmy.
```python
replacements = {
    'ą': 'a', 'ć': 'c', 'ę': 'e', 'ł': 'l',
    'ń': 'n', 'ó': 'o', 'ś': 's', 'ź': 'z', 'ż': 'z',
    '&': 'i', ' ': '-', '/': '-'
}
```

### parse_address(address: str) -> dict
Parsuje polski adres na komponenty (ulica, miasto, kod pocztowy).
Regex: `(\d{2}-\d{3})\s+([A-ZĄĆĘŁŃÓŚŹŻ][a-z]+)`

## Aplikacja Flask

### Uruchomienie
```bash
python3 app.py
# Dostęp: http://localhost:5001
```

### Główne Funkcje
- **Katalog firm** - przeglądanie z kategoriami
- **Wyszukiwanie** - po nazwie, NIP, mieście
- **Szczegóły firmy** - `/company/<slug>`
- **Czat AI** - Google Gemini 2.0 Flash (FREE tier)
- **Logowanie** - Flask-Login, CSRF protection

### Użytkownik Testowy
```python
username: admin@nordabiz.local
password: admin123
```

## Kategorie Firm

Domyślna kategoria: **Inne** (slug: `inne`)

Kategorie do rozszerzenia:
- Budownictwo
- IT i technologie
- Usługi prawne
- Produkcja
- Handel
- Transport
- itp.

## Źródła Danych

### Główne Źródło
https://norda-biznes.info/czlonkowie - oficjalna lista 80 członków

### Źródła Dodatkowe (dla wzbogacania danych)
- https://pixlab.pl
- https://kornix.com.pl
- https://waterm.pl
- https://norda.fm
- https://hebel-masiak.pl

### Metodologia
1. Pobieranie listy firm z norda-biznes.info
2. Wzbogacanie danych ze stron WWW firm
3. Walidacja NIP/REGON/KRS
4. Import do bazy z jakością danych: 'enhanced'

## Pliki Konfiguracyjne

### .env
```
# DEV (PostgreSQL via Docker)
DATABASE_URL=postgresql://nordabiz_app:dev_password@localhost:5433/nordabiz

# PROD
# DATABASE_URL=postgresql://nordabiz_app:<password>@10.22.68.249:5432/nordabiz

SECRET_KEY=<random_secret>
GEMINI_API_KEY=<api_key>
```

### database.py
Definicje modeli SQLAlchemy

### app.py
Główna aplikacja Flask

## Następne Kroki (TODO)

### Rozwój Funkcjonalności
- [ ] Dodać pełne kategorie firm zamiast "Inne"
- [ ] Zaimportować loga firm
- [ ] Dodać mapy Google dla lokalizacji
- [ ] Rozszerzyć profile firm (galerie, oferty)
- [ ] Panel administracyjny do zarządzania

### Poprawa Danych
- [ ] Zweryfikować wszystkie adresy email
- [ ] Uzupełnić brakujące numery telefonów
- [ ] Dodać rok założenia dla wszystkich firm
- [ ] Poprawić opisy firm (copywriting)

### Integracje
- [ ] Export do CSV/Excel
- [ ] API REST dla aplikacji zewnętrznych
- [ ] Synchronizacja z GUS/CEIDG
- [ ] Newsletter dla członków

### SEO i Marketing
- [ ] Meta tagi dla każdej firmy
- [ ] Sitemap.xml
- [ ] Schema.org markup
- [ ] Google Analytics

## Technologie

- **Backend:** Python 3.9+, Flask 3.0+, SQLAlchemy
- **Database:** PostgreSQL (dev via Docker na localhost:5433, prod na 10.22.68.249:5432)
- **Frontend:** HTML5, Bootstrap 5, JavaScript
- **AI:** Google Gemini 2.0 Flash (FREE tier)
- **Auth:** Flask-Login, werkzeug password hashing
- **Forms:** Flask-WTF (CSRF protection)

## Uwagi Techniczne

### Port Conflicts
Aplikacja działa na porcie **5001**. W razie konfliktu:
```bash
lsof -ti:5001 | xargs kill -9
```

### Background Processes
Sprawdzenie działających instancji:
```bash
ps aux | grep app.py
```

### Database Backup
```bash
# DEV (Docker PostgreSQL)
docker exec nordabiz-postgres pg_dump -U nordabiz_app nordabiz > backup_dev_$(date +%Y%m%d_%H%M%S).sql

# PROD
ssh maciejpi@10.22.68.249 "sudo -u postgres pg_dump nordabiz" > backup_prod_$(date +%Y%m%d_%H%M%S).sql
```

### Schema Migration
W razie potrzeby migracji użyj Alembic (nie skonfigurowane obecnie).

## Kontakt z NORDA BIZNES

Website: https://norda-biznes.info
Lokalizacja: Wejherowo, województwo pomorskie
Typ: Stowarzyszenie biznesowe

---

**Ostatnia aktualizacja:** 2025-11-24
**Status:** ✅ Baza danych kompletna (80/80 firm)
**Jakość danych:** Enhanced (pełne dane firmowe, NIP/REGON/KRS zweryfikowane)
