- Move IT audit dashboard route to blueprints/admin/routes_audits.py
- Add ITAudit, ITCollaborationMatch imports
- Update base.html template to use full blueprint name
- Add endpoint alias for backward compatibility
Phase 6.2f continued
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move routes from app.py to blueprints/admin/routes_audits.py
- Add endpoint aliases for backward compatibility
- Update base.html template to use full blueprint names
- Comment old routes in app.py with _old_ prefix
Phase 6.2f of blueprint migration
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Przeniesiono 2 trasy do blueprints/admin/routes_social.py:
- admin_social_media (analytics dashboard)
- admin_social_audit (audit dashboard)
Zaktualizowano szablony:
- base.html, dashboard.html, social_audit_dashboard.html
Dodano aliasy dla kompatybilności wstecznej.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Przeniesiono 9 tras do blueprints/admin/routes_status.py:
- admin_status, api_admin_status
- admin_health, api_admin_health
- debug_panel
- api_get_logs, api_logs_stream, api_clear_logs, api_test_log
Zaktualizowano szablony na pełne nazwy blueprintów:
- base.html: admin.admin_status, admin.admin_health
- health_dashboard.html: admin.admin_status
Dodano aliasy dla kompatybilności wstecznej.
Stare trasy w app.py oznaczone jako _old_* (do usunięcia po weryfikacji).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Created blueprints/admin/routes_audits.py (2 routes)
- admin_seo, admin_gbp_audit moved from app.py
- Aliases created for backward compatibility
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New user account management section with:
- /konto - Edit personal data (name, phone)
- /konto/prywatnosc - Privacy settings
- /konto/bezpieczenstwo - Security settings (2FA, password)
- /konto/blokady - User blocks management
Features:
- Consistent sidebar navigation across all pages
- Responsive layout (mobile-friendly)
- Polish UI with clear section names
Replaces scattered /settings/* routes with unified /konto/* structure.
Menu link updated from "Ustawienia" to "Moje konto".
Fixes user feedback issue #6: "Brak edycji profilu"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When user resets password, they've proven inbox access by clicking
the reset link. This change auto-verifies their email address,
eliminating the need to separately verify email after reset.
Fixes user feedback issue #2: "Reset hasła nie weryfikuje emaila"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Problem: get_or_create_analytics_session() aktualizowało last_activity_at
ale nie duration_seconds, co powodowało że czas sesji zawsze wynosił 0 min.
Rozwiązanie: Dodano obliczanie duration_seconds przy każdym page view.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Dodano send_registration_notification() analogicznie do send_error_notification()
- Mail wysyłany na ERROR_NOTIFY_EMAIL przy każdej nowej rejestracji
- Zawiera: imię, email, NIP, nazwa firmy, status członkostwa NORDA
- Link do panelu /admin/users
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 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>
- Zmiana formularza z select na checkboxy (wiele kategorii)
- Aktualizacja filtrowania: PostgreSQL ANY() dla tablicy categories
- Zachowanie kompatybilności wstecznej (pole category)
- Aktualizacja szablonów list.html i detail.html dla wielu badge'ów
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Zmiana nazwy: "Norda Biznes Hub" → "Norda Biznes Partner"
- Aktualizacja modelu AI: Gemini 2.0 Flash → Gemini 3 Flash
- Zachowano historyczne odniesienia w timeline i dokumentacji
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Changed from AIApiCost to AIAPICostLog (actual model in database.py)
- Changed total_cost_usd to total_cost (actual field name)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- GOOGLE_GEMINI_API_KEY_FREE: klucz Free tier dla Flash (darmowy)
- GOOGLE_GEMINI_API_KEY: klucz Paid tier dla Pro (płatny)
- GeminiService automatycznie wybiera klucz na podstawie modelu
- Flash pricing ustawiony na $0.00 (Free tier)
- UI pokazuje Flash jako "Darmowy"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
UI:
- Dropdown wyboru modelu: Flash (szybki, $0.05) vs Pro (analiza, $0.20)
- Wyświetlanie kosztu miesięcznego w headerze
- Badge odpowiedzi pokazuje: model, czas, koszt
Backend:
- Endpoint /api/chat/settings obsługuje model i monthly_cost
- NordaBizChatEngine przyjmuje parametr model
- Koszt zapisywany w tech_info odpowiedzi
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Dodano:
- Audyty GBP (Google Business Profile) - oceny, recenzje
- Audyty SEO (PageSpeed) - wyniki dla stron WWW
- Baza wiedzy ZOPK - elektrownia jądrowa, offshore wind, infrastruktura
- Zasada prywatności - nie podawać ukrytych danych kontaktowych
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Wszystkie firmy z pełnymi danymi (nie tylko 50)
- Osoby w firmach (zarząd, wspólnicy, udziały)
- Tematy forum
- Wydarzenia
- Ogłoszenia B2B
- Rekomendacje
- Aktualności ZOPK
- Social media
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- New admin page /admin/model-comparison for comparing AI responses
- Side-by-side comparison: old model (2.5 Flash-Lite) vs new (3 Flash)
- Questions from real conversations (Artur Wiertel, Maciej Pienczyn)
- Run simulation button to generate new responses
- Added link in admin menu under "Porównanie modeli"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Changed AI model from Gemini 2.5 Flash-Lite to Gemini 3 Flash Preview
- Added Gemini 3 models (3-flash, 3-pro) to GEMINI_MODELS config
- Updated GEMINI_PRICING with current 2026 prices
- Updated chat UI: badge, model info modal, specs, timeline
- Benefits: 7x better reasoning, thinking mode, 78% SWE-bench
Cost estimate: ~$40/month at 1000x current usage (Tier 1)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Dodano stałą globalną COMPANY_COUNT_MARKETING w app.py
- Dodano do context_processor jako COMPANY_COUNT
- Zaktualizowano szablony: index.html, chat.html, landing.html, release_notes
- Jedno miejsce do zmiany gdy Izba zaktualizuje cel
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Health monitoring:
- Dodano: /settings/privacy, /settings/blocks, /settings/2fa
- Dodano: /wiadomosci, /wiadomosci/wyslane, /wiadomosci/nowa
- Dodano: /edukacja, /admin/insights
Release notes:
- Połączono v1.18.0 i v1.19.0 w jeden wpis (28 stycznia 2026)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Zmiany w kategoriach:
- Utworzono "Budownictwo ogólne" (9 firm) i "Produkcja ogólna" (13 firm)
- Utworzono "Usługi finansowe" (banki, kantory, ubezpieczenia)
- Rozdzielono "Księgowość" od "Usługi finansowe"
- Przeniesiono INPI i SEO PARTNER do "IT i Technologie"
- Dodano kategorię "Do uzupełnienia" (żółta, 27 firm bez opisu)
Zmiany UI:
- Sortowanie podkategorii malejąco po liczbie firm
- Poprawka podświetlania aktywnej kategorii
- Dropdown blokowania: domena emaila przy duplikatach nazw
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Nowe funkcje w v1.18.0 (28 stycznia 2026):
- Prywatność: ukrywanie telefonu/emaila, preferencje kontaktu
- Blokowanie kontaktów (bidirectional)
- Hierarchiczne kategorie firm
- Platforma Edukacyjna
- Panel Insights dla adminów
- RODO: sanityzacja danych wrażliwych w czacie
- Security: izolacja sesji czata
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Automatyczne wykrywanie i maskowanie danych wrażliwych w czacie:
- PESEL (walidacja sumy kontrolnej)
- Numery kart kredytowych (algorytm Luhn)
- IBAN (konta bankowe)
- Hasła (detekcja kontekstowa)
- Dowody osobiste i paszporty
NIE wykrywa (zgodnie z wymogami):
- NIP (publiczne dane biznesowe)
- Adresy email (celowo podawane)
API dla adminów: POST /api/admin/test-sanitization
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
ZMIANY BEZPIECZEŃSTWA:
1. Defense in depth w NordaBizChatEngine:
- send_message() - wymaga user_id i weryfikuje właściciela rozmowy
- get_conversation_history() - opcjonalna walidacja user_id
- Logowanie prób nieautoryzowanego dostępu
2. Anonimizacja w panelu admina:
- Usunięto wyświetlanie treści zapytań użytkowników
- Zastąpiono statystykami: długość, kategoria tematyczna
- Zachowano AI responses (publiczne dane firm)
3. Ochrona prywatności:
- Użytkownicy NIE mogą zobaczyć zapytań innych użytkowników
- Admini widzą tylko zanonimizowane statystyki
- Audit logging dla prób nieautoryzowanego dostępu
Odblokowuje zadanie #10 (Baza wiedzy Norda GPT).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>