Three public feeds: /feed/events.xml (upcoming events), /feed/news.xml (announcements), /feed/pej.xml (nuclear news). RSS 2.0 format with KIG custom fields (thumbnail, datawydarzenia). RSS discovery links added to base.html head. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
6.7 KiB
Plan: Wydarzenia zewnętrzne w kalendarzu + AI matching
Status: KONCEPT (do zatwierdzenia) Data: 2026-03-19 Kontekst: Mail od ARP (Broker Eksportowy) z wydarzeniami dla MŚP, przekazany przez biuro Nordy (Magda Klóska). Współpraca z KIG (feedy RSS).
Problem
Biuro Nordy regularnie dostaje maile z wartościowymi wydarzeniami od partnerów (ARP, KIG, urzędy, inne izby). Targi, seminaria, szkolenia, webinary — treści istotne dla firm członkowskich. Dziś giną w skrzynkach mailowych.
Rozwiązanie
Jeden kalendarz z wyraźnym podziałem na wydarzenia Nordy i zewnętrzne, z filtrowaniem, systemem zainteresowań i AI-dopasowaniem.
Faza 1: Wydarzenia zewnętrzne w kalendarzu
Model danych
Rozszerzenie NordaEvent o 3 pola:
| Pole | Typ | Opis |
|---|---|---|
is_external |
Boolean (default False) | Czy wydarzenie pochodzi z zewnątrz |
external_url |
String(1000) | Link do rejestracji u organizatora |
external_source |
String(255) | Nazwa źródła (np. "Agencja Rozwoju Pomorza") |
Wyróżnienie wizualne
Widok siatki (grid):
- Nowy kolor dla zewnętrznych — szary lub jasnopomarańczowy, wyraźnie "cichszy" od kolorów wydarzeń Nordy
Widok listy:
- Badge "ZEWNĘTRZNE" (szary) przy tytule
- Nazwa źródła pod tytułem (np. "Źródło: Agencja Rozwoju Pomorza")
- Lekko wyciszona oprawa wizualna
Legenda kalendarza — rozszerzona o nowy typ
Filtrowanie
Toggle u góry strony kalendarza: "Pokaż wydarzenia zewnętrzne" (domyślnie włączony). Jedno kliknięcie — zewnętrzne znikają, zostają tylko wydarzenia Nordy. Ustawienie zapamiętywane w localStorage.
"Jestem zainteresowany" zamiast "Zapisz się"
| Aspekt | Wydarzenia Nordy | Wydarzenia zewnętrzne |
|---|---|---|
| Przycisk | "Zapisz się" (zielony) | "Jestem zainteresowany/a" (szary/niebieski) |
| Znaczenie | Deklaracja udziału | Wyrażenie zainteresowania, bez zobowiązań |
| Lista osób | "Uczestnicy (12)" | "Zainteresowani (3)" |
| Limit miejsc | Tak (max_attendees) | Nie |
| Rejestracja | Na portalu | Link zewnętrzny |
| Wartość | Wiem kto idze | Widzę kto się interesuje — mogę się dogadać |
Technicznie: ta sama tabela event_attendees. Dla zewnętrznych eventów status='confirmed' oznacza "zainteresowany". Rozróżnienie na poziomie UI.
Strona szczegółów wydarzenia zewnętrznego
Podobna do obecnej, z kluczowymi różnicami:
- Banner "Wydarzenie zewnętrzne" z nazwą źródła/organizatora
- Lokalizacja z linkiem do Google Maps — obecny kalendarz już to robi automatycznie (auto-link jeśli adres nie jest "Online" ani "do ustalenia"). Dla zewnętrznych wydarzeń to szczególnie ważne — użytkownik od razu widzi jak daleko to jest.
- Prominentny przycisk "Przejdź do rejestracji →" — link do strony organizatora, wyróżniony wizualnie (duży, kolorowy), widoczny bez scrollowania
- Dane kontaktowe organizatora — email, telefon (jeśli dostępne) — wyświetlane wprost na stronie wydarzenia, bez konieczności przechodzenia na zewnętrzną stronę
- Koszt uczestnictwa — jeśli znany (np. "bezpłatne", "35 000 PLN brutto z dofinansowaniem 85%")
- Sekcja "Zainteresowani" zamiast "Uczestnicy"
- Eksport ICS — opcjonalny (data i miejsce są znane)
Automatyczne wyciąganie danych ze stron zewnętrznych
Zweryfikowano (2026-03-19): Strony brokereksportowy.pl pozwalają na automatyczną ekstrakcję:
- Tytuł, data, godzina
- Pełny adres (np. "Olivia Centre, Al. Grunwaldzka 472D, 80-309 Gdańsk")
- Sposób rejestracji (formularz, email, telefon, deadline)
- Koszt / dofinansowanie
- Organizator
Możliwy workflow admina:
- Admin wkleja URL zewnętrznego wydarzenia
- System (AI) automatycznie wyciąga: tytuł, datę, lokalizację, opis, dane rejestracji, koszt
- Admin weryfikuje i zatwierdza — ewentualnie poprawia
- Oszczędność: z 5-10 minut ręcznego przepisywania → 30 sekund
Formularz admina
Rozszerzenie istniejącego formularza o:
- Checkbox "Wydarzenie zewnętrzne" — po zaznaczeniu:
- Pole "URL źródła" (link do strony wydarzenia) + przycisk "Pobierz dane" (AI)
- Pole "Link do rejestracji" (może być inny niż URL źródła)
- Pole "Źródło / Organizator zewnętrzny"
- Pole "Koszt uczestnictwa" (opcjonalne, tekst)
- Pole "Kontakt do organizatora" (email, telefon)
- Ukryty limit miejsc (nieistotny dla zewnętrznych)
Faza 2: AI matching wydarzeń do profili firm
Dane do matchingu (już w systemie)
| Dane w profilu firmy | Użycie |
|---|---|
| Kategoria (IT, Construction, Services...) | Główny filtr branżowy |
| Opis firmy | Szczegółowe dopasowanie tematyczne |
| Usługi | Dopasowanie do typu wydarzenia |
| Słowa kluczowe | Precyzyjny matching |
| Zainteresowania PEJ (widoczność ZOPK) | Dopasowanie do wydarzeń obronnych/energetycznych |
Mechanizm
- Przy dodaniu wydarzenia — Gemini generuje "profil wydarzenia": branże, słowa kluczowe, typ firmy docelowej
- Matching — porównanie profilu wydarzenia z profilami firm (kategoria + opis + usługi)
- Wynik — lista par (wydarzenie → firma, score) przechowywana w bazie
- Koszt — jedno wywołanie Gemini per wydarzenie (nie per logowanie)
Gdzie pokazywać sugestie
| Miejsce | Co widać |
|---|---|
| Kalendarz — sekcja "Sugerowane dla Ciebie" u góry | 2-3 najbardziej dopasowane wydarzenia |
| Profil firmy (widok właściciela) | "Nadchodzące wydarzenia powiązane z Twoją branżą" |
| Powiadomienie (bell icon) | "Nowe wydarzenie może Cię zainteresować" |
Wyjaśnienie dopasowania
Przy każdej sugestii krótki tekst: "Pasuje do: Construction, Local Content" — użytkownik rozumie logikę.
Faza 3: Sugestie i powiadomienia
- Powiadomienia przy nowych wydarzeniach dopasowanych do profilu
- "3 firmy z Twojej branży są zainteresowane tym wydarzeniem"
- Agregacja zainteresowań w profilu użytkownika/firmy
Powiązanie z KIG
Dwukierunkowy przepływ:
- Nordabiznes → KIG: Feedy RSS z wydarzeniami Nordy (Faza osobna, patrz PLAN_KIG_RSS)
- KIG → Nordabiznes: Gdy KIG i inne izby uruchomią RSS, możemy automatycznie importować ich wydarzenia jako zewnętrzne
Kolejność wdrożenia
- Faza 1 — wydarzenia zewnętrzne + filtr + "jestem zainteresowany" + auto-ekstrakcja z URL
- Faza 2 — AI matching do profili firm
- Faza 3 — powiadomienia i sugestie w UI
Każda faza jest niezależna i daje wartość sama w sobie.
Przykładowe źródła wydarzeń zewnętrznych
- Agencja Rozwoju Pomorza (brokereksportowy.pl)
- Krajowa Izba Gospodarcza (kig.pl)
- Urząd Miasta Wejherowo
- Inne izby gospodarcze (via RSS w przyszłości)
- PARP, NCBiR, inne agencje rządowe