The documentation incorrectly stated that DEV environment uses SQLite when it actually uses PostgreSQL via Docker on localhost:5433. Updated files: - CLAUDE.md - main project instructions - PROJECT_INFO.md - environment documentation - deployment_checklist.md - deployment procedures - SCRIPTS_INDEX.md - script usage commands - .claude/commands/*.md - all slash command definitions - tests/test_admin_seo_dashboard.py - test database URL DEV environment: - PostgreSQL via Docker: localhost:5433 - Container: nordabiz-postgres - Database: nordabiz - User: nordabiz_app PROD environment: - PostgreSQL: 10.22.68.249:5432 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
193 lines
5.4 KiB
Markdown
193 lines
5.4 KiB
Markdown
# 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**
|
|
- Porównanie bazy z https://norda-biznes.info/czlonkowie
|
|
- Znajdowanie rozbieżności
|
|
- Export raportu
|
|
|
|
## Funkcje Pomocnicze (w każdym skrypcie importu)
|
|
|
|
### create_slug(name: str) -> str
|
|
```python
|
|
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
|
|
```python
|
|
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
|
|
```bash
|
|
python3 <script_name>.py
|
|
```
|
|
|
|
### Z output redirection
|
|
```bash
|
|
python3 <script_name>.py > output.log 2>&1
|
|
```
|
|
|
|
### Sprawdzenie przed uruchomieniem (DEV via Docker)
|
|
```bash
|
|
docker exec nordabiz-postgres psql -U nordabiz_app -d nordabiz -c "SELECT COUNT(*) FROM companies;"
|
|
```
|
|
|
|
### Backup przed uruchomieniem (DEV via Docker)
|
|
```bash
|
|
docker exec nordabiz-postgres pg_dump -U nordabiz_app nordabiz > nordabiz_backup_before_<operation>.sql
|
|
```
|
|
|
|
## 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`.
|