docs: Reorganizacja release notes - sortowanie i wytłuszczanie

- Wszystkie release notes od v1.0.0 do v1.20.0 posortowane od najważniejszych
- Mega ważne funkcje wytłuszczone <strong>
- Dodano sekcję security w szablonie
- Stworzono przewodnik RELEASE_NOTES_GUIDE.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Maciej Pienczyn 2026-01-29 15:36:11 +01:00
parent 74995f9b3e
commit e92b237fa4
3 changed files with 218 additions and 170 deletions

260
app.py
View File

@ -10254,33 +10254,31 @@ def release_notes():
'date': '29 stycznia 2026',
'badges': ['new', 'improve', 'fix'],
'new': [
# AI
'NordaGPT: Upgrade silnika AI do Gemini 3 Flash Preview (najnowszy model Google)',
# MEGA WAŻNE - AI
'<strong>NordaGPT: Upgrade do Gemini 3 Flash Preview</strong> - najnowszy model Google AI',
'<strong>NordaGPT: Dwa modele do wyboru</strong> - Flash (darmowy) i Pro (płatny, lepszy)',
'NordaGPT: 7x lepsze rozumowanie, thinking mode, 78% na SWE-bench',
'NordaGPT: Dwa modele do wyboru - Flash (darmowy) i Pro (płatny, lepszy)',
'NordaGPT: Osobne klucze API dla Free tier i Paid tier',
'NordaGPT: Wyświetlanie szacowanego kosztu miesięcznego w panelu modelu',
# PWA
'PWA: Aplikacja mobilna - możliwość instalacji na telefonie (iOS/Android)',
'NordaGPT: Wyświetlanie szacowanego kosztu miesięcznego',
# MEGA WAŻNE - PWA
'<strong>PWA: Aplikacja mobilna</strong> - możliwość instalacji na telefonie (iOS/Android)',
'PWA: Web Manifest z ikonami 192px i 512px',
'PWA: Apple Touch Icon dla urządzeń iOS',
# Aktualności
'Aktualności: Obsługa wielu kategorii dla jednego ogłoszenia',
'Aktualności: Nowe kategorie - Wewnętrzne, Zewnętrzne, Wydarzenie, Okazja biznesowa, Partnerstwo',
'Aktualności: Formularz z checkboxami do wyboru wielu kategorii',
# Edukacja
'Edukacja: Integracja wideo z portalem (modal player)',
'Edukacja: Wideo "Wprowadzenie do Norda Biznes Partner" (30s zajawka)',
'Edukacja: Wideo "Wprowadzenie do Norda Biznes Partner"',
],
'improve': [
'Strona główna: Nowa ikona NordaGPT w sekcji asystenta AI',
'Stopka: Usunięcie nieaktywnego linku "Nowi członkowie"',
'Strona główna: Nowa ikona NordaGPT',
'Stopka: Usunięcie nieaktywnych linków',
],
'fix': [
'Tablica B2B: Naprawiono błąd 500 przy dodawaniu nowych ogłoszeń',
'Tablica B2B: Naprawiono błąd 500 przy dodawaniu ogłoszeń',
'Kalendarz: Naprawiono błąd 500 przy dodawaniu wydarzeń',
'Kontakty: Naprawiono nawigację w module kontaktów',
'Aktualności: Naprawiono filtrowanie po kategorii (PostgreSQL ARRAY)',
'Kontakty: Naprawiono nawigację w module',
],
},
{
@ -10288,41 +10286,28 @@ def release_notes():
'date': '28 stycznia 2026',
'badges': ['new', 'improve', 'security'],
'new': [
# Prywatność i Blokowanie
'Prywatność: Ukrywanie telefonu i emaila w profilu (Ustawienia → Prywatność)',
# MEGA WAŻNE - Prywatność
'<strong>Prywatność: Ukrywanie telefonu i emaila</strong> w profilu (Ustawienia → Prywatność)',
'<strong>Blokowanie użytkowników</strong> - możliwość blokowania kontaktów (Ustawienia → Blokady)',
'Prywatność: Preferencje kanałów kontaktu (email, telefon, portal)',
'Prywatność: Dodatkowa notatka o preferencjach (np. godziny kontaktu)',
'Blokowanie: Możliwość blokowania kontaktów (Ustawienia → Blokady)',
'Blokowanie: Bidirectional - zablokowany użytkownik nie może wysłać wiadomości',
'Blokowanie: Domena emaila w nawiasie przy duplikatach nazw (np. "Jan Kowalski (gmail)")',
# Kategorie
'Kategorie: Hierarchiczna struktura (4 główne grupy: Usługi, Budownictwo, Handel, Produkcja)',
'Kategorie: Nowa podkategoria "Budownictwo ogólne" (9 firm)',
'Kategorie: Nowa podkategoria "Produkcja ogólna" (13 firm)',
'Kategorie: Nowa podkategoria "Usługi finansowe" (banki, kantory, ubezpieczenia)',
'Kategorie: Rozdzielenie "Księgowość" od "Usługi finansowe"',
'Katalog: Żółta kategoria "Do uzupełnienia" dla firm wymagających uzupełnienia danych (27 firm)',
'Katalog: Sortowanie kategorii i podkategorii malejąco po liczbie firm',
'Blokowanie: Bidirectional - zablokowany nie może wysłać wiadomości',
# MEGA WAŻNE - Kategorie
'<strong>Kategorie: Hierarchiczna struktura</strong> - 4 główne grupy branżowe',
'Katalog: Żółta kategoria "Do uzupełnienia" dla 27 firm',
'Kategorie: Nowe podkategorie (Budownictwo ogólne, Produkcja ogólna, Usługi finansowe)',
# Nowe sekcje
'Edukacja: Nowa sekcja Platforma Edukacyjna w menu',
'Insights: Panel dla adminów do zbierania feedbacku z forum i czata',
'Insights: Kategoryzacja: propozycje funkcji, błędy, wyszukiwania firm',
'Insights: Workflow statusów: nowy → przejrzany → zaplanowany → zrealizowany',
# Monitoring
'Health: Dodano monitorowanie nowych endpointów (ustawienia, wiadomości, edukacja, insights)',
'<strong>Edukacja: Nowa sekcja</strong> Platforma Edukacyjna w menu',
'Insights: Panel dla adminów do zbierania feedbacku',
'Health: Monitorowanie nowych endpointów',
],
'improve': [
'Katalog: Tylko aktywna kategoria jest podświetlona (nieaktywne mają neutralny styl)',
'Kategorie: Przeniesienie INPI i SEO PARTNER do "IT i Technologie"',
'Kategorie: Spójność sum - główne kategorie pokazują prawidłowe sumy podkategorii',
'Katalog: Tylko aktywna kategoria podświetlona',
'Kategorie: Sortowanie malejąco po liczbie firm',
],
'security': [
'RODO: Automatyczne wykrywanie i maskowanie danych wrażliwych w czacie',
'RODO: Wykrywane typy: PESEL, karty kredytowe, IBAN, hasła, dowody, paszporty',
'RODO: NIP i email NIE są maskowane (dane biznesowe)',
'Chat: Izolacja sesji - użytkownicy nie widzą pytań innych użytkowników',
'Chat: Defense-in-depth - walidacja właściciela na poziomie silnika',
'Admin: Anonimizacja zapytań w panelu analityki (tylko statystyki, nie treść)',
'<strong>RODO: Automatyczne maskowanie danych wrażliwych</strong> w czacie (PESEL, karty, IBAN)',
'<strong>Chat: Izolacja sesji</strong> - użytkownicy nie widzą pytań innych',
'Admin: Anonimizacja zapytań w panelu analityki',
],
},
{
@ -10330,13 +10315,10 @@ def release_notes():
'date': '26 stycznia 2026',
'badges': ['new'],
'new': [
'Aktualności: Nowa sekcja dla członków (Społeczność → Aktualności)',
'<strong>Aktualności: Nowa sekcja</strong> dla członków (Społeczność → Aktualności)',
'Aktualności: Panel administracyjny do zarządzania ogłoszeniami',
'Aktualności: Kategorie - ogólne, wydarzenia, okazje biznesowe, od członków, partnerstwa',
'Aktualności: Statusy publikacji (szkic, opublikowane, zarchiwizowane)',
'Aktualności: Przypinanie ważnych ogłoszeń na górze listy',
'Aktualności: Kategorie, statusy publikacji, przypinanie',
'Aktualności: Linki zewnętrzne i załączniki PDF',
'Aktualności: Licznik wyświetleń i informacja o autorze',
'Pierwsze ogłoszenia: Baza noclegowa ARP, Konkurs Tytani Przedsiębiorczości',
],
},
@ -10345,28 +10327,21 @@ def release_notes():
'date': '14 stycznia 2026',
'badges': ['new', 'improve', 'fix'],
'new': [
'Raporty: Nowa sekcja dostępna z menu głównego dla zalogowanych',
'Raporty: Staż członkostwa w Izbie NORDA (sortowanie od najstarszego)',
'Raporty: Pokrycie Social Media (analiza 6 platform)',
'Raporty: Struktura branżowa (rozkład firm wg kategorii)',
'Email: Konfiguracja DKIM, SPF i DMARC dla nordabiznes.pl',
'Email: Wysyłka z noreply@nordabiznes.pl (Microsoft 365)',
'Profil firmy: Data przystąpienia do Izby NORDA',
'Profil firmy: Karta "Członek Izby NORDA od" z datą i stażem',
# MEGA WAŻNE - Bezpieczeństwo
'<strong>GeoIP Blocking</strong> - blokowanie krajów wysokiego ryzyka (RU, CN, KP, IR, BY)',
'<strong>Email: Własna domena</strong> - wysyłka z noreply@nordabiznes.pl (DKIM, SPF, DMARC)',
# Raporty
'<strong>Raporty: Nowa sekcja</strong> - staż członkostwa, Social Media, struktura branżowa',
'Profil firmy: Data przystąpienia do Izby NORDA z kartą stażu',
'Integracja: API CEIDG do pobierania danych JDG',
'Bezpieczeństwo: GeoIP blocking - blokowanie krajów wysokiego ryzyka (RU, CN, KP, IR, BY, SY, VE, CU)',
'Bezpieczeństwo: Panel z listą wszystkich mechanizmów ochrony (oceny gwiazdkowe)',
'Bezpieczeństwo: Statystyki GeoIP (dzienne, miesięczne, roczne, breakdown per kraj)',
'Bezpieczeństwo: Panel z oceną wszystkich mechanizmów ochrony',
],
'improve': [
'Dane firm: Rok założenia uzupełniony dla 71 z 111 firm (64%)',
'Dane firm: Automatyczne uzupełnianie z KRS i CEIDG',
'Import dat przystąpienia: 57 firm z historią od 1997 roku',
],
'fix': [
'Analityka: Polskie znaki w interfejsie',
'Analityka: Pełne nazwy użytkowników',
'Analityka: Obsługa wartości NULL przy obliczaniu czasu',
'Analityka: Polskie znaki i pełne nazwy użytkowników',
],
},
{
@ -10374,39 +10349,27 @@ def release_notes():
'date': '13 stycznia 2026',
'badges': ['new', 'improve', 'fix'],
'new': [
'NordaGPT: Rozszerzony kontekst AI o rekomendacje, aktualności, kalendarz, B2B i forum',
'NordaGPT: Kontekst AI zawiera teraz dane KRS (osoby), social media, audyty GBP i SEO',
'NordaGPT: Klikalne linki URL i adresy email w odpowiedziach AI',
'NordaGPT: Banner na stronie głównej z szybkim dostępem do chatu',
'Kalendarz: Widok siatki miesięcznej z wydarzeniami',
'Kalendarz: Banner wydarzenia na stronie głównej z listą uczestników',
'Kalendarz: Quick RSVP - szybkie potwierdzenie udziału ze strony głównej',
'Kalendarz: Klikalne badge uczestników (linki do profili firm)',
'KRS Audit: Nowy panel /admin/krs-audit z parsowaniem dokumentów PDF',
'KRS Audit: Progress bar dla audytu pojedynczego i wsadowego',
'KRS Audit: Sortowalne kolumny i wyświetlanie wszystkich kodów PKD',
'AI Enrichment: Przycisk wzbogacania danych AI na profilu firmy',
'AI Enrichment: Web search do automatycznego zbierania informacji o firmie',
'Analityka: Panel /admin/analytics ze śledzeniem sesji użytkowników',
'Analityka: Ranking użytkowników wg aktywności (sesje, strony, kliknięcia)',
'Analityka: Edycja danych użytkowników w panelu admina',
'Profil firmy: Wszystkie kody PKD wyświetlane na stronie firmy',
'Profil firmy: Dane właściciela CEIDG dla jednoosobowych działalności',
'Profil firmy: Powiązanie kont użytkowników z osobami z KRS',
# MEGA WAŻNE - NordaGPT
'<strong>NordaGPT: Rozszerzony kontekst AI</strong> - rekomendacje, kalendarz, B2B, forum, KRS',
'<strong>NordaGPT: Klikalne linki</strong> URL i email w odpowiedziach AI',
'<strong>NordaGPT: Banner na stronie głównej</strong> z szybkim dostępem do chatu',
# Kalendarz
'<strong>Kalendarz: Widok siatki miesięcznej</strong> z Quick RSVP',
'Kalendarz: Banner wydarzenia na stronie głównej z uczestnikami',
# AI i Audyty
'<strong>AI Enrichment</strong> - wzbogacanie danych firm przez AI z web search',
'<strong>KRS Audit</strong> - parsowanie dokumentów PDF, progress bar',
'<strong>Analityka: Panel /admin/analytics</strong> - śledzenie sesji użytkowników',
# Profile
'Profil firmy: Wszystkie kody PKD, dane właściciela CEIDG',
'Profil firmy: Zielone badge dla osób zweryfikowanych w KRS',
'Forum/B2B: Kategoria "test" do oznaczania testowych treści',
'Forum/B2B: Przycisk toggle do ukrywania/pokazywania testów',
],
'improve': [
'Uczestnicy wydarzeń wyświetlani pionowo, alfabetycznie, z nazwami firm',
'Lepsze formatowanie odpowiedzi AI (listy, linki, Markdown)',
'Reorganizacja sekcji na profilu firmy',
'Lepsze formatowanie odpowiedzi AI (Markdown)',
'Banner NordaGPT minimalizowalny',
],
'fix': [
'Rate limit logowania zwiększony z 5/h do 30/min',
'Rate limit audytu SEO zwiększony z 10/h do 200/h',
'AI Chat: Poprawna obsługa składni linków Markdown',
'Rate limit logowania i audytu SEO zwiększony',
],
},
{
@ -10414,23 +10377,16 @@ def release_notes():
'date': '12 stycznia 2026',
'badges': ['new', 'improve', 'fix'],
'new': [
'Audyt GBP: Sekcja edukacyjna "Jak działa wizytówka Google?" z trzema kartami',
'Audyt GBP: Przycisk "Zobacz wizytówkę Google" prowadzący do profilu w Maps',
'Audyt GBP: Pełny audyt z Google Places API dla wszystkich 111 firm',
'Audyty: Klikalne banery wyników prowadzą do szczegółowych stron audytu',
'Audyty: Sekcje audytów inline na profilu firmy (SEO, GBP, Social Media, IT)',
'<strong>Audyt GBP: Pełny audyt</strong> z Google Places API dla wszystkich firm',
'Audyt GBP: Sekcja edukacyjna "Jak działa wizytówka Google?"',
'Audyty: Sekcje inline na profilu firmy (SEO, GBP, Social Media, IT)',
],
'improve': [
'Ujednolicona 5-poziomowa skala kolorów dla wszystkich audytów',
'Social Media: Wynik jako procent (np. 16%) zamiast liczby platform',
'Normalizacja URL stron WWW firm (usunięcie duplikatów)',
'Spójność kolorów między profilem firmy a szczegółami audytu',
'Ujednolicona 5-poziomowa skala kolorów dla audytów',
'Social Media: Wynik jako procent zamiast liczby platform',
],
'fix': [
'Audyt GBP: Kategorie Google wyświetlane po polsku (np. "Warsztat samochodowy" zamiast "Car Repair")',
'ZOPK: Usunięcie duplikatów interesariuszy i naprawa polskich znaków',
'ZOPK: Unique constraint na nazwę interesariusza (zapobiega duplikatom)',
'SEO: Spójność wyników między profilem firmy a szczegółami audytu',
'Audyt GBP: Kategorie Google po polsku',
],
},
{
@ -10438,30 +10394,18 @@ def release_notes():
'date': '11 stycznia 2026',
'badges': ['new', 'improve'],
'new': [
'Mapa Powiązań - interaktywna wizualizacja powiązań firm i osób (D3.js)',
'Filtry mapy: węzły (firmy/osoby), powiązania (zarząd/wspólnicy/prokurenci/JDG)',
'Liczniki przy filtrach aktualizowane na bieżąco',
'Profile osób (/osoba) - dane z KRS/CEIDG i portalu',
'Wyszukiwarka osób - częściowe dopasowanie imienia/nazwiska',
'Klikalne osoby w sekcji Zarząd i Wspólnicy na profilu firmy',
'Logo firm w wynikach wyszukiwania (klikalne)',
'AI Learning: System uczenia chatbota z feedbacku użytkowników',
'AI Learning: Few-shot learning z pozytywnych odpowiedzi',
'AI Learning: Przykłady startowe (seed) dla zimnego startu',
'Panel AI Usage: Szczegółowy widok użycia AI per użytkownik',
'Panel AI Usage: Klikalne nazwy użytkowników w rankingu',
'Panel Analytics: Sekcja statusu uczenia AI',
# MEGA WAŻNE
'<strong>Mapa Powiązań</strong> - interaktywna wizualizacja firm i osób (D3.js)',
'<strong>Profile osób</strong> (/osoba) - dane z KRS/CEIDG i portalu',
'<strong>AI Learning</strong> - uczenie chatbota z feedbacku użytkowników',
# Inne
'Wyszukiwarka osób z częściowym dopasowaniem',
'Logo firm w wynikach wyszukiwania',
'Panel AI Usage: szczegółowy widok per użytkownik',
],
'improve': [
'Mapa: fullscreen modal zamiast osobnej strony',
'Mapa: etykiety ukryte domyślnie, widoczne przy hover',
'Poprawka liczenia firm vs ról (6 firm z 9 rolami)',
'Tooltip pokazuje wszystkie powiązania bez limitu',
'Ukrycie sekcji Aktualności na profilach firm (tymczasowo)',
'Zmiana nazwy ZOPK na ZOP Kaszubia (Zielony Okręg Przemysłowy Kaszubia)',
'Stylizowane modale zamiast natywnych dialogów przeglądarki',
'System toastów do komunikatów sukcesu/błędu',
'Bezpieczeństwo: Usunięcie starych haseł z dokumentacji',
'Mapa: fullscreen modal, etykiety przy hover',
'System toastów zamiast natywnych dialogów',
],
},
{
@ -10469,27 +10413,17 @@ def release_notes():
'date': '10 stycznia 2026',
'badges': ['new', 'improve', 'security'],
'new': [
'Forum: Kategorie tematów (Propozycja funkcji, Błąd, Pytanie, Ogłoszenie)',
'Forum: Statusy zgłoszeń (Nowy, W realizacji, Rozwiązany, Odrzucony)',
'Forum: Załączniki obrazów do tematów i odpowiedzi (JPG, PNG, GIF)',
'Forum: Upload wielu plików jednocześnie (do 10 na odpowiedź)',
'Forum: Drag & drop i wklejanie ze schowka (Ctrl+V)',
'Panel admina: Statystyki i zmiana statusów tematów',
'Dokumentacja architektury systemu z diagramami Mermaid (19 plików)',
'Diagramy C4: System Context, Containers, Components, Deployment',
'Dokumentacja przepływów danych: Auth, Search, AI Chat, SEO Audit',
'Nowy README.md z kompletną dokumentacją projektu',
'Dokumentacja bezpieczeństwa (docs/SECURITY.md)',
# MEGA WAŻNE
'<strong>Forum: Załączniki obrazów</strong> - drag & drop, Ctrl+V, do 10 plików',
'<strong>Forum: Kategorie i statusy</strong> zgłoszeń (Propozycja, Błąd, Pytanie)',
'<strong>Dokumentacja architektury</strong> - 19 plików, diagramy C4, Mermaid',
],
'improve': [
'Bezpieczny upload z walidacją magic bytes i usuwaniem EXIF',
'Responsywna siatka podglądu załączników',
'Filtry kategorii i statusów na liście tematów',
'Bezpieczny upload z walidacją magic bytes',
],
'security': [
'Usunięcie hardcoded credentials z kodu źródłowego',
'<strong>Usunięcie hardcoded credentials</strong> z kodu źródłowego',
'Zmiana hasła PostgreSQL na produkcji',
'Konfiguracja zmiennych środowiskowych w .env',
],
},
{
@ -10497,36 +10431,30 @@ def release_notes():
'date': '9 stycznia 2026',
'badges': ['new', 'improve'],
'new': [
'Panel Audyt GBP - przegląd kompletności profili Google Business',
'Panel Audyt Social - przegląd pokrycia Social Media wszystkich firm',
'Dodawanie użytkowników bezpośrednio w panelu admina',
'Tworzenie użytkowników z AI - wklejanie tekstu lub screenshotów z dowolnego źródła',
'<strong>Panel Audyt GBP</strong> - przegląd profili Google Business',
'<strong>Panel Audyt Social</strong> - pokrycie Social Media',
'<strong>Tworzenie użytkowników z AI</strong> - wklejanie tekstu/screenshotów',
],
'improve': [
'Wyświetlanie przypisanych firm przy użytkownikach',
'Poprawki wyświetlania nazw użytkowników w panelu',
'Nowy pasek Admin z pogrupowanymi funkcjami (Zarządzanie, Audyty, Analityka)',
'Nowy pasek Admin z pogrupowanymi funkcjami',
],
},
{
'version': 'v1.8.0',
'date': '8 stycznia 2026',
'badges': ['new', 'improve'],
'badges': ['new'],
'new': [
'Panel Audyt IT - kompleksowy audyt infrastruktury IT firm',
'<strong>Panel Audyt IT</strong> - kompleksowy audyt infrastruktury IT firm',
'Eksport audytów IT do CSV',
],
'improve': [
'Poprawki w formularzach edycji audytu IT',
],
},
{
'version': 'v1.7.0',
'date': '6 stycznia 2026',
'badges': ['new'],
'new': [
'Panel Audyt SEO - analiza wydajności stron www firm',
'Integracja z Google PageSpeed Insights API',
'<strong>Panel Audyt SEO</strong> - analiza wydajności stron www firm',
'<strong>Integracja z Google PageSpeed Insights API</strong>',
],
},
{
@ -10534,9 +10462,9 @@ def release_notes():
'date': '29 grudnia 2025',
'badges': ['new'],
'new': [
'System newsów i wzmianek medialnych o firmach',
'<strong>System newsów</strong> i wzmianek medialnych o firmach',
'Panel moderacji newsów dla adminów',
'Integracja z Brave Search API',
'<strong>Integracja z Brave Search API</strong>',
],
},
{
@ -10544,7 +10472,7 @@ def release_notes():
'date': '15 grudnia 2025',
'badges': ['new', 'improve'],
'new': [
'Panel Social Media - zarządzanie profilami społecznościowymi',
'<strong>Panel Social Media</strong> - zarządzanie profilami społecznościowymi',
'Weryfikacja aktywności profili Social Media',
],
'improve': [
@ -10556,9 +10484,9 @@ def release_notes():
'date': '1 grudnia 2025',
'badges': ['new'],
'new': [
'System rekomendacji między firmami',
'Panel składek członkowskich',
'Kalendarz wydarzeń Norda Biznes',
'<strong>System rekomendacji</strong> między firmami',
'<strong>Panel składek członkowskich</strong>',
'<strong>Kalendarz wydarzeń</strong> Norda Biznes',
],
},
{
@ -10566,8 +10494,8 @@ def release_notes():
'date': '28 listopada 2025',
'badges': ['new', 'improve'],
'new': [
'Chatbot AI z wiedzą o wszystkich firmach',
'Wyszukiwarka firm z synonimami i fuzzy matching',
'<strong>Chatbot AI (NordaGPT)</strong> z wiedzą o wszystkich firmach',
'<strong>Wyszukiwarka firm</strong> z synonimami i fuzzy matching',
],
'improve': [
'Ulepszony SearchService z PostgreSQL FTS',
@ -10578,7 +10506,7 @@ def release_notes():
'date': '25 listopada 2025',
'badges': ['new'],
'new': [
'System wiadomości prywatnych między użytkownikami',
'<strong>System wiadomości prywatnych</strong> między użytkownikami',
'Powiadomienia o nowych wiadomościach',
],
},
@ -10587,7 +10515,7 @@ def release_notes():
'date': '24 listopada 2025',
'badges': ['new', 'improve'],
'new': [
'Rejestracja i logowanie użytkowników',
'<strong>Rejestracja i logowanie</strong> użytkowników',
'Profile użytkowników powiązane z firmami',
],
'improve': [
@ -10599,8 +10527,8 @@ def release_notes():
'date': '23 listopada 2025',
'badges': ['new'],
'new': [
'Oficjalny start platformy Norda Biznes Partner',
'Katalog 111 firm członkowskich',
'<strong>Oficjalny start platformy Norda Biznes Partner</strong>',
'<strong>Katalog 111 firm członkowskich</strong>',
'Wyszukiwarka firm po nazwie, kategorii, usługach',
'Profile firm z pełnymi danymi kontaktowymi',
],

108
docs/RELEASE_NOTES_GUIDE.md Normal file
View File

@ -0,0 +1,108 @@
# Przewodnik po Release Notes - NordaBiz
## Struktura Release Notes
Release notes są zdefiniowane w pliku `app.py` w funkcji `release_notes()` jako lista słowników.
```python
{
'version': 'v1.XX.0',
'date': 'DD miesiąca RRRR',
'badges': ['new', 'improve', 'fix', 'security'],
'new': [...], # Nowości
'improve': [...], # Ulepszenia
'fix': [...], # Naprawione błędy
'security': [...], # Bezpieczeństwo (opcjonalne)
}
```
## Zasady tworzenia wpisów
### 1. Sortowanie od najważniejszych
Wpisy w każdej sekcji (`new`, `improve`, `fix`, `security`) sortujemy:
- **Na górze:** Najważniejsze zmiany (mega ważne)
- **Na dole:** Mniej istotne szczegóły
### 2. Wytłuszczanie mega ważnych zmian
Używamy HTML `<strong>` dla najważniejszych funkcjonalności:
```python
'new': [
'<strong>NordaGPT: Upgrade do Gemini 3</strong> - najnowszy model AI',
'<strong>PWA: Aplikacja mobilna</strong> - instalacja na iOS/Android',
'Aktualności: Obsługa wielu kategorii', # mniej ważne - bez bold
]
```
### 3. Kategorie zmian
| Badge | Ikona | Opis |
|-------|-------|------|
| `new` | ✨ | Nowe funkcjonalności |
| `improve` | ⚡ | Ulepszenia istniejących funkcji |
| `fix` | 🔧 | Naprawione błędy |
| `security` | 🔒 | Zmiany bezpieczeństwa |
### 4. Format wpisu
```
'<strong>Moduł: Funkcja główna</strong> - krótki opis'
'Moduł: Funkcja drugorzędna - szczegóły'
```
## Przykład dobrze sformatowanego release
```python
{
'version': 'v1.20.0',
'date': '29 stycznia 2026',
'badges': ['new', 'improve', 'fix'],
'new': [
# MEGA WAŻNE - na górze, z <strong>
'<strong>NordaGPT: Upgrade do Gemini 3 Flash Preview</strong> - najnowszy model Google AI',
'<strong>NordaGPT: Dwa modele do wyboru</strong> - Flash (darmowy) i Pro (płatny)',
'<strong>PWA: Aplikacja mobilna</strong> - możliwość instalacji na telefonie',
# Mniej ważne - niżej, bez bold
'NordaGPT: Wyświetlanie szacowanego kosztu miesięcznego',
'Aktualności: Obsługa wielu kategorii',
],
'improve': [
'Strona główna: Nowa ikona NordaGPT',
],
'fix': [
'Tablica B2B: Naprawiono błąd 500',
],
},
```
## Checklist przed dodaniem release
- [ ] Wersja zwiększona (major.minor.patch)
- [ ] Data w formacie "DD miesiąca RRRR"
- [ ] Wpisy posortowane od najważniejszych
- [ ] Mega ważne zmiany wytłuszczone `<strong>`
- [ ] Odpowiednie badges (`new`, `improve`, `fix`, `security`)
- [ ] Składnia Python poprawna (`python3 -m py_compile app.py`)
## Lokalizacja plików
- **Release notes:** `app.py` → funkcja `release_notes()` (około linii 10250)
- **Szablon HTML:** `templates/release_notes.html`
- **Strona:** https://nordabiznes.pl/release-notes
## Deploy po zmianach
```bash
# 1. Weryfikacja składni
python3 -m py_compile app.py
# 2. Commit
git add app.py
git commit -m "docs: Release notes vX.XX.0"
# 3. Push i deploy
git push origin master && git push inpi master
ssh maciejpi@10.22.68.249 "cd /var/www/nordabiznes && sudo -u www-data git pull && sudo systemctl restart nordabiznes"
```

View File

@ -135,6 +135,7 @@
.change-category.new h4::before { content: '✨'; }
.change-category.fix h4::before { content: '🔧'; }
.change-category.improve h4::before { content: '⚡'; }
.change-category.security h4::before { content: '🔒'; }
.change-category.beta h4::before { content: '🧪'; }
.change-list {
@ -276,7 +277,7 @@
<h4>Nowości</h4>
<ul class="change-list">
{% for item in release.new %}
<li>{{ item }}</li>
<li>{{ item|safe }}</li>
{% endfor %}
</ul>
</div>
@ -287,7 +288,7 @@
<h4>Ulepszenia</h4>
<ul class="change-list">
{% for item in release.improve %}
<li>{{ item }}</li>
<li>{{ item|safe }}</li>
{% endfor %}
</ul>
</div>
@ -298,7 +299,18 @@
<h4>Naprawione</h4>
<ul class="change-list">
{% for item in release.fix %}
<li>{{ item }}</li>
<li>{{ item|safe }}</li>
{% endfor %}
</ul>
</div>
{% endif %}
{% if release.security %}
<div class="change-category security">
<h4>Bezpieczeństwo</h4>
<ul class="change-list">
{% for item in release.security %}
<li>{{ item|safe }}</li>
{% endfor %}
</ul>
</div>
@ -309,7 +321,7 @@
<h4>W fazie testów (BETA)</h4>
<ul class="change-list">
{% for item in release.beta %}
<li>{{ item }}</li>
<li>{{ item|safe }}</li>
{% endfor %}
</ul>
</div>