|
Some checks are pending
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
Rozszerzenie powiadomień o kolejne typy zdarzeń, z symetrycznymi togglami e-mail i push w /konto/prywatnosc. Migracje 103 + 104 — 6 nowych kolumn preferencji e-mail + NordaEvent.reminder_24h_sent_at. Triggery: - Forum odpowiedź → push do autora wątku (notify_push_forum_reply) - Forum cytat (> **Imię** napisał(a):) → push + email do cytowanego (notify_push/email_forum_quote) - Admin publikuje aktualność → broadcast push (ON) + email (OFF) do aktywnych członków (notify_push/email_announcements) - Board: utworzenie / publikacja programu / publikacja protokołu → broadcast push + opt-in email (notify_push/email_board_meetings) - Nowe wydarzenie w kalendarzu → broadcast push + email (oba ON) (notify_push/email_event_invites) - Cron scripts/event_reminders_cron.py co godzinę — wydarzenia za 23-25h, dla zapisanych (EventAttendee.status != 'declined') push + email, znacznik NordaEvent.reminder_24h_sent_at żeby nie dublować. Email defaults dobrane, by nie zalać inbox: broadcast OFF (announcements, board, forum_reply), personalne/actionable ON (forum_quote, event_invites, event_reminders). Wszystkie nowe e-maile mają jednym-kliknięciem unsubscribe (RFC 8058 + link w stopce) — unsubscribe_tokens.py rozszerzony o nowe typy. Cron entry do dodania na prod (osobny krok, bo to edycja crontaba): 0 * * * * cd /var/www/nordabiznes && venv/bin/python3 scripts/event_reminders_cron.py Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| .ovh_vps_monitor_state.json | ||
| add_grill_event.py | ||
| arm_company.py | ||
| assign_category_parents.py | ||
| audit_company_data.py | ||
| backfill_data_quality_scores.py | ||
| backfill_zopk_images.py | ||
| check_websites.py | ||
| classified_expiry_notifier.py | ||
| CLAUDE.md | ||
| company-data-collector.js | ||
| competitor_monitor_cron.py | ||
| create_presentation.js | ||
| cron_extract_knowledge.py | ||
| debug_fb_token.py | ||
| download_ceidg_data.py | ||
| download_krs_pdf.py | ||
| dr-restore.sh | ||
| event_reminders_cron.py | ||
| extract_event_from_url.py | ||
| fetch_ceidg_api.py | ||
| fetch_financial_reports.py | ||
| fetch_news_images.py | ||
| fix_google_news_images.py | ||
| fix_google_news_sources.py | ||
| fix_pptx_gemini.py | ||
| fix_waterm_duplicates.py | ||
| fix_year_established.py | ||
| generate_audit_report.py | ||
| import_board_documents_2_2026.py | ||
| import_board_meeting_2_2026.py | ||
| import_calendar_2026.py | ||
| import_ceidg_to_db.py | ||
| import_excel_members_2026_01_13.py | ||
| import_iss_rfid.py | ||
| import_kaszubia_2030.py | ||
| import_krs_people.py | ||
| import_member_since.py | ||
| import_membership_fees.py | ||
| import_norda_tools.py | ||
| import_pej_contacts.py | ||
| import_whatsapp_feb2026.py | ||
| internal_health_logger.py | ||
| link_users_to_persons.py | ||
| list_forum_topics.py | ||
| mark_test_classifieds.py | ||
| mark_test_topics.py | ||
| match_companies_zopk.py | ||
| migrate_messages.py | ||
| migrate_rada_data.py | ||
| ovh_vps_monitor.py | ||
| pagespeed_client.py | ||
| parse_krs_pdf.py | ||
| README.md | ||
| register_whatsapp_attendees.py | ||
| run_migration.py | ||
| scan_websites_for_nip.py | ||
| search_ceidg_by_name.py | ||
| send_batch_password_resets.py | ||
| send_portal_message.py | ||
| send_welcome_activation.py | ||
| seo_analyzer.py | ||
| seo_audit.py | ||
| seo_report_generator.py | ||
| simulate_model_comparison.py | ||
| social_media_audit.py | ||
| sync_staging_db.sh | ||
| tag_nuclear_news.py | ||
| test_ai_proposal.py | ||
| test_collaboration_matching.py | ||
| test_email_send.py | ||
| update_pptx_diagrams.py | ||
| uptimerobot_sync.py | ||
| verify_google_places.py | ||
| website_content_updater.py | ||
| zopk_knowledge_pipeline.py | ||
Norda Biznes - Scripts
Automatyczne skrypty do zbierania i przetwarzania danych o firmach członkowskich.
📁 Pliki
company-data-collector.js
Główny agent zbierający dane o firmach z różnych źródeł.
Funkcje:
- 🔍 Wyszukiwanie firm w ALEO.com (NIP, REGON, KRS)
- 🌐 Znajdowanie stron WWW przez Google
- 📊 Ekstrakcja danych ze stron firmowych
- 💾 Automatyczny zapis do
data/companies-full.json - 📝 Generowanie logów i raportów
🚀 Użycie
Podstawowe uruchomienie
node scripts/company-data-collector.js
Przetworzy wszystkie 80 firm z data/companies-basic.json.
Z limitowaniem
# Przetw
órz tylko 5 pierwszych firm (test)
node scripts/company-data-collector.js --limit 5
# Przetwórz 10 firm
node scripts/company-data-collector.js --limit 10
Pomijanie już przetworzonych
# Przetwórz tylko firmy, których nie ma w companies-full.json
node scripts/company-data-collector.js --skip-processed
# Kombinacja: pomiń przetworzone, limit 20
node scripts/company-data-collector.js --skip-processed --limit 20
Pomoc
node scripts/company-data-collector.js --help
📊 Output
Pliki wyjściowe:
-
data/companies-full.json- Pełne dane wszystkich przetworzonych firm
- Aktualizowany po każdej firmie
- Format JSON z metadanymi
-
data/collection-log.md- Szczegółowy log przetwarzania
- Dla każdej firmy: timestamp, kroki, błędy
- Markdown format
-
Konsola
- Real-time progress
- Raport końcowy ze statystykami
Przykładowy output konsoli:
🤖 Norda Biznes - Company Data Collector Agent
================================================
📊 Załadowano 80 firm do zbadania
[1/80] Przetwarzanie: PIXLAB
────────────────────────────────────────────────────────────
📡 KROK 1: Wyszukiwanie w ALEO.com...
✅ Znaleziono dane urzędowe
🔍 KROK 2: Szukanie strony WWW...
✅ Znaleziono stronę: https://pixlab.pl
🌐 KROK 3: Pobieranie danych ze strony...
✅ Pobrano dane ze strony
✅ Pełne dane zebrane
[2/80] Przetwarzanie: KORNIX
...
============================================================
📊 RAPORT KOŃCOWY
============================================================
Przetworzono: 80/80 firm
Pełne dane: 56 (70%)
Częściowe dane: 20 (25%)
Niepowodzenia: 4 (5%)
Czas działania: 16.5 minut
Średnio na firmę: 0.21 min
============================================================
⚙️ Konfiguracja
W pliku company-data-collector.js:
const CONFIG = {
delayBetweenRequests: 2000, // 2 sekundy między firmami
maxRetries: 3, // Maksymalna liczba ponownych prób
timeout: 30000 // Timeout 30 sekund
};
Źródła danych:
Agent próbuje pobrać dane z:
- ALEO.com - dane urzędowe (NIP, REGON, KRS)
- Google Search - URL strony WWW
- Strony firmowe - kontakt, usługi, kompetencje
🔧 Wymagania
Node.js packages:
# Podstawowe (built-in):
- fs
- path
# Opcjonalne (dla pełnej funkcjonalności):
npm install puppeteer # Web scraping
# lub
npm install playwright # Web scraping (zalecane)
# lub
npm install cheerio axios # Prosty scraping HTML
API Keys (opcjonalne):
- Google Custom Search API - dla automatycznego znajdowania stron WWW
📝 Status Implementacji
✅ Zaimplementowane:
- Struktura agenta
- CLI interface (argumenty, pomoc)
- Wczytywanie danych z companies-basic.json
- Zapis do companies-full.json
- Generowanie logów
- Raportowanie postępu
- Ocena jakości danych
- Statystyki i raporty
🔄 Do zaimplementowania:
-
Rzeczywiste wyszukiwanie w ALEO.com
- Wymaga: puppeteer/playwright
- Metoda:
searchAleo(companyName)
-
Rzeczywiste wyszukiwanie w Google
- Wymaga: Google Custom Search API
- Metoda:
findWebsite(companyName)
-
Rzeczywisty web scraping
- Wymaga: puppeteer/cheerio
- Metoda:
scrapeWebsite(url)
-
Automatyczna aktualizacja data-sources.md
- Metoda:
updateDataSources()
- Metoda:
🎯 Roadmap
Faza 1: Ręczne zbieranie danych (OBECNA)
- ✅ Struktura agenta gotowa
- ✅ Pliki JSON i MD przygotowane
- 🔄 Ręczne wypełnianie danych (copy-paste z researchu)
Faza 2: Semi-automatyczne zbieranie
- Implementacja scrapingu ALEO.com
- Znajdowanie stron WWW przez Google API
- Podstawowy scraping stron (kontakt)
Faza 3: Pełna automatyzacja
- AI-assisted data extraction
- Automatyczna walidacja danych
- Scheduled updates (cron)
- Email notifications
🐛 Troubleshooting
Agent się nie uruchamia
# Sprawdź czy Node.js jest zainstalowany:
node --version # Powinno pokazać v14+ lub nowsze
# Sprawdź uprawnienia:
chmod +x scripts/company-data-collector.js
# Uruchom z verbose:
node scripts/company-data-collector.js --limit 1
Brak danych w companies-full.json
# Sprawdź czy plik companies-basic.json istnieje:
ls -la data/companies-basic.json
# Sprawdź format JSON:
cat data/companies-basic.json | python -m json.tool
"Cannot find module"
# Zainstaluj zależności:
npm install
# Lub jeśli używasz yarn:
yarn install
📚 Dokumentacja
Struktura danych firmy:
Patrz: data/companies-full.json - przykłady z pełnymi danymi
Log format:
Patrz: data/collection-log.md - przykład po uruchomieniu agenta
Źródła danych:
Patrz: data/data-sources.md - lista wszystkich źródeł
👨💻 Development
Testowanie:
# Test na 1 firmie:
node scripts/company-data-collector.js --limit 1
# Test na 5 firmach:
node scripts/company-data-collector.js --limit 5
# Dry run (bez zapisu):
# TODO: Dodać flagę --dry-run
Debugowanie:
Odkomentuj linie z console.log w metodach:
searchAleo()findWebsite()scrapeWebsite()
📞 Support
Pytania lub problemy? Kontakt:
- Email: biuro@norda-biznes.info
- Issue: Utwórz issue w repo
Wersja: 1.0 Ostatnia aktualizacja: 2025-11-23 Autor: Norda Biznes Partner Development Team