Commit Graph

438 Commits

Author SHA1 Message Date
394e51b3ba feat(chat): Dodaj przycisk pomocy wideo w NordaGPT
- Przycisk ▶️ w headerze chatu obok badge'a modelu
- Modal z 40-sekundowym tutorialem wideo z polskim narratorem
- Poster (miniaturka) wideo
- Sekcja "Szybkie wskazówki" pod odtwarzaczem
- Responsywny design dla mobile

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 11:50:04 +01:00
daf24256fc fix(health): Dodaj trailing slash do /raporty w health check
Naprawia ostrzeżenie HTTP 308 w Health Check Dashboard.
Flask blueprint z url_prefix='/raporty' wymaga trailing slash.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 10:50:30 +01:00
049b54f467 feat(nav): Add Aktualności to main navigation bar
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 10:41:41 +01:00
5ff86d06a8 feat(nav): Reorganize navigation based on Jacek's feedback
New structure:
- Firmy | NordaGPT | Kalendarz | B2B | Forum | Więcej ▾

"Więcej" dropdown contains:
- Aktualności
- ZOP Kaszubia
- Kontakty zewnętrzne
- Raporty
- Mapa Powiązań

Most used features now directly visible in main nav.

Ref: forum post /forum/18 by Jacek Pomieczyński

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 10:36:59 +01:00
b89ff11c36 docs: Add refactoring status and deployment plan
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 10:11:25 +01:00
66856a697d refactor(phase1): Extract blueprints for reports, contacts, classifieds, calendar
Phase 1 of app.py refactoring - reducing from ~14,455 to ~13,699 lines.

New structure:
- blueprints/reports/ - 4 routes (/raporty/*)
- blueprints/community/contacts/ - 6 routes (/kontakty/*)
- blueprints/community/classifieds/ - 4 routes (/tablica/*)
- blueprints/community/calendar/ - 3 routes (/kalendarz/*)
- utils/ - decorators, helpers, notifications, analytics
- extensions.py - Flask extensions (csrf, login_manager, limiter)
- config.py - environment configurations

Updated templates with blueprint-prefixed url_for() calls.

⚠️ DO NOT DEPLOY before presentation on 2026-01-30 19:00

Tested on DEV: all endpoints working correctly.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 10:10:45 +01:00
819b8d9c13 fix(contacts): Ukrywanie widoku kart przy przełączeniu na tabelę
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 08:59:57 +01:00
1fe927dc17 fix(contacts): Naprawa API ai-parse - kompatybilność pól z frontend
- Obsługa pola 'text' z frontendu (oprócz 'content')
- Zmiana nazw pól odpowiedzi: ai_response→analysis, proposed_contacts→contacts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 08:57:03 +01:00
ffc766d034 feat(contacts): Modal "Dodaj z AI" + widoki grupowanie/tabela
- Dodano modal "Dodaj z AI" z parsowaniem tekstu/obrazów przez Gemini
- API endpoints: /api/contacts/ai-parse, /api/contacts/bulk-create
- Nowy widok grupowania kontaktów po organizacji (domyślny)
- Widok tabeli dla kompaktowego przeglądu
- Przełącznik widoków z zapamiętywaniem preferencji
- Drag & drop dla zdjęć wizytówek
- Docker: PostgreSQL 16 (zgodność z produkcją)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 08:52:35 +01:00
9a36d1fb08 fix(contacts): Zmiana FTS 'polish' na 'simple' dla kompatybilności
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 08:35:46 +01:00
21a78befad feat(contacts): Baza kontaktów zewnętrznych dla członków Norda
- Nowy model ExternalContact z pełnymi danymi kontaktowymi, social media, related_links (JSONB)
- Migracja SQL 020_external_contacts.sql z full-text search
- Routes: /kontakty (lista), /kontakty/dodaj, /kontakty/<id>, /kontakty/<id>/edytuj
- Szablony: lista z filtrami, karta szczegółów, formularz CRUD
- Nawigacja: link "Kontakty zewnętrzne" w dropdown Społeczność
- Poprawka: aktualizacja liczby firm z 80 na 111

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 08:35:06 +01:00
a172f7af49 feat(announcements): Śledzenie odczytów ogłoszeń (seen by)
- Nowa tabela announcement_reads do śledzenia kto przeczytał
- Avatary użytkowników z inicjałami (tooltip z nazwiskiem)
- Statystyki: liczba i procent użytkowników którzy przeczytali
- Progress bar wizualizujący zasięg ogłoszenia
- Automatyczny zapis odczytu przy otwarciu ogłoszenia

Autor: Maciej Pienczyn
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 08:19:39 +01:00
d443fe312e docs: Release notes v1.17.0 - System ogłoszeń i aktualności
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 22:31:42 +01:00
da8eb48f2b ux(announcements): Dodanie autora ogłoszenia na stronie szczegółów
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 22:23:09 +01:00
505f40e1c1 nav: Dodanie linku Aktualności w menu Społeczność
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 22:16:06 +01:00
e14d95394d feat(announcements): System ogłoszeń i aktualności dla członków
- Model Announcement z kategoriami, statusami, slugami URL
- Panel admina /admin/announcements (CRUD, filtry, AJAX)
- Strona /ogloszenia tylko dla zalogowanych członków
- Szczegóły ogłoszenia /ogloszenia/<slug>
- Migracja SQL rozszerzająca istniejącą tabelę
- Testowe ogłoszenia: ARP baza noclegowa, Tytani Przedsiębiorczości
- Pliki PDF regulaminu i harmonogramu konkursu Tytani

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 22:10:54 +01:00
587d000b9b docs: Reorganizacja dokumentacji - wydzielenie DEVELOPMENT, ROADMAP, CREDENTIALS
- CLAUDE.md uproszczony - tylko kluczowe info dla Claude
- docs/DEVELOPMENT.md - szczegóły SearchService, Chatbot, Testy AI, SEO, News
- docs/ROADMAP.md - plan rozwoju, priorytety, strategia monetyzacji 3-tier
- docs/CREDENTIALS.md - zasady zarządzania hasłami i kluczami API

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 10:26:24 +01:00
9e82c00ca4 ux(landing): Przeniesiono "Jak to działa?" wyżej na stronie głównej
Feedback od testera: sekcja wyjaśniająca flow powinna być widoczna
wcześniej, przed szczegółowymi kartami funkcji.

Nowa kolejność:
1. Hero (nagłówek + statystyki + CTA)
2. "Jak to działa?" (1→2→3) ← przeniesione wyżej
3. Karty funkcji (Pełny katalog, AI Asystent, Filtry)
4. "Do czego użyjesz tego portalu?"
5. Bottom CTA

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 08:29:09 +01:00
ebbf75e7a0 fix(calendar): Poprawiono godzinę "Chwila dla Biznesu" z 18:00 na 19:00
Skrypt importu miał błędną godzinę 18:00. Faktyczne spotkania
"Chwila dla Biznesu" odbywają się o 19:00.

Zaktualizowano:
- Komentarz w linii 50
- Opis wydarzenia (description)
- time_start: time(19, 0)

Istniejące wydarzenia w bazie zostały zaktualizowane ręcznie (UPDATE SQL).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 21:56:55 +01:00
c1ab97e60a fix(chat): Naprawa z-index - dropdown navbar widoczny nad purpurowym paskiem
Dodano position: relative i z-index: 50 do .chat-header, aby elementy
dropdown menu użytkownika (z-index: 200) były wyświetlane nad paskiem NordaGPT.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 21:00:11 +01:00
4d67dfa079 feat(zopk): Frontend dla sugestii Timeline z bazy wiedzy
- Dodano przycisk 'Sugestie z bazy wiedzy' na stronie Timeline
- Modal z listą sugestii milestone z bazy wiedzy:
  - Statystyki (total facts, w timeline, do dodania)
  - Karty sugestii z edytowalnym tytułem i kategorią
  - Przyciski Dodaj/Pomiń dla każdej sugestii
- Toast notifications dla feedbacku
- Auto-refresh timeline po dodaniu sugestii

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 17:37:03 +01:00
7a6631881f fix: Naprawiono błąd składni f-string w _extract_date_from_text
- Przeniesiono logikę kwartału z inline dict do funkcji _quarter_to_date()
- f-string z dict literal nie jest wspierany w Python 3.11

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 17:34:44 +01:00
40116d3321 feat(zopk): Timeline auto-populate + fix /zopk 500 + rozszerzony health check
- Dodano funkcje automatycznego uzupełniania Timeline z bazy wiedzy:
  - get_timeline_suggestions() - pobiera milestone facts jako sugestie
  - create_milestone_from_suggestion() - tworzy milestone z faktu
  - categorize_milestones_with_ai() - kategoryzacja AI (nuclear/offshore/etc)
  - Auto-detekcja kategorii, dat i statusu z tekstu polskiego

- API endpoints:
  - GET /api/zopk/timeline/suggestions - lista sugestii z bazy wiedzy
  - POST /api/zopk/timeline/suggestions/approve - zatwierdź sugestię

- Fix: /zopk zwracał 500 (nieistniejąca kolumna is_verified)
  - Dodano kolumnę is_verified do modelu ZOPKMilestone
  - Usunięto filtr is_verified z query (do migracji)

- Health check rozszerzony z 15 do 55+ endpointów:
  - Public pages, Raporty, ZOPK, Chat, IT Audit
  - API publiczne, Admin Core, Admin Audits, Admin ZOPK

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 17:32:54 +01:00
6156277629 fix(chat): Dodanie słów kluczowych ZOPK dla NordaGPT
Dodano brakujące słowa kluczowe do _is_zopk_query():
- "kaszubia", "kaszub", "projekt kaszubia"
- "kamienie milowe", "roadmapa", "timeline", "harmonogram"
- "inwestycje pomorze", "inwestycje pomorskie", "rozwój pomorza"

Dzięki temu pytania takie jak "co wiesz o projekcie Kaszubia?"
będą rozpoznawane jako pytania ZOPK i chat będzie używał
bazy wiedzy.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 16:35:49 +01:00
43c22650f1 feat(zopk): Modal przeglądu wyników uczenia z weryfikacji
- Backend zwraca teraz pełne dane zweryfikowanych faktów (nie tylko count)
- Nowy modal pokazuje listę zweryfikowanych faktów z:
  - Tekstem faktu i typem
  - Procentem podobieństwa do wzorca
  - Fragmentem wzorca który dopasował
- Możliwość cofnięcia weryfikacji dla pojedynczych faktów
- Statystyki: zweryfikowane / wzorce użyte / cofnięte
- Stylizowane karty z animacjami

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 16:33:39 +01:00
f126341eed fix(zopk): Naprawka importu func + ładne toasty/modale w UI
Poprawki:
- Dodano brakujący import `func` w find_similar_to_verified_facts()
- Dodano brakujący import `func` w auto_verify_similar_to_verified()

UI/UX:
- Zamieniono brzydkie alert() na stylizowane toasty
- Zamieniono confirm() na ładne modale z ikonami
- Dodano animacje slideIn/slideOut dla toastów
- Dodano animacje fadeIn/scaleIn dla modali

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 16:29:20 +01:00
009cd09492 fix: Poprawka składni @limiter.request_filter dla Flask-Limiter 4.0 2026-01-17 16:24:28 +01:00
d785b5094f fix(security): Wyłączenie rate limiting dla adminów
Zalogowani użytkownicy z is_admin=True są teraz wyłączeni z limitów
requestów (request_filter=is_admin_exempt). Rozwiązuje problem
"Too Many Requests" w panelu admina ZOPK.

Limity dla zwykłych użytkowników pozostają bez zmian:
- 200/dzień
- 50/godzinę

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 16:23:05 +01:00
818ddd96eb feat(zopk-knowledge): Dodanie funkcji uczenia się z weryfikacji
- Nowa funkcja find_similar_to_verified_facts() w zopk_knowledge_service.py
  używa pg_trgm do wyszukiwania podobnych faktów
- Nowa funkcja auto_verify_similar_to_verified() automatycznie weryfikuje
  fakty podobne do już zweryfikowanych (próg 80% podobieństwa)
- Nowy endpoint POST /api/zopk/knowledge/auto-verify/similar
- Nowy endpoint GET /api/zopk/knowledge/suggest-similar-facts
- Przycisk "Ucz się z weryfikacji" na dashboardzie bazy wiedzy ZOPK

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 16:21:08 +01:00
121fb593db fix(zopk): Poprawka nazwy kolumny confidence_score w auto_verify_top_facts
- Funkcja używała nieistniejącej kolumny importance_score
- Zmieniono na confidence_score (rzeczywista nazwa w tabeli)
- Poprawka analogiczna do wcześniejszej w find_duplicate_facts
2026-01-17 11:31:35 +01:00
56bfbeed37 fix(zopk): Poprawka statystyk weryfikacji na dashboardzie
- Funkcja renderVerificationStats używała nieistniejącego klucza data.verification
- API zwraca dane w strukturze: data.entities, data.facts, data.chunks
- Naprawiono mapowanie danych do właściwej struktury
- Obliczanie 'oczekuje' jako total - verified
2026-01-17 11:27:01 +01:00
5d24aa30b0 fix(zopk): Poprawka wyświetlania confidence_score w deduplikacji faktów 2026-01-17 11:21:53 +01:00
0adb9bed0e fix(zopk): Poprawka nazwy kolumny confidence_score w deduplikacji faktów 2026-01-17 11:16:53 +01:00
b3249f5b22 fix(zopk): Użycie operatora % z indeksem GiST dla deduplikacji faktów
Zapytanie similarity() bez indeksu powodowało timeout przy 3414 faktach.
Teraz używamy SET pg_trgm.similarity_threshold + operator % który
wykorzystuje indeks GiST (idx_facts_fulltext_trgm).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 11:09:01 +01:00
96fa0058c2 feat(zopk): Rozbudowa bazy wiedzy ZOPK
- Dodano skrypt cron do automatycznej ekstrakcji wiedzy (scripts/cron_extract_knowledge.py)
- Dodano panel deduplikacji faktów (/admin/zopk/knowledge/fact-duplicates)
- Dodano API i funkcje auto-weryfikacji encji i faktów
- Dodano panel Timeline ZOPK (/admin/zopk/timeline) z CRUD
- Rozszerzono dashboard bazy wiedzy o statystyki weryfikacji i przyciski auto-weryfikacji
- Dodano migrację 016_zopk_milestones.sql dla tabeli kamieni milowych
- Naprawiono duplikat modelu ZOPKMilestone w database.py

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 10:57:11 +01:00
3b27dcaf0d fix(zopk): Naprawa NaN w podglądzie faktów przy łączeniu encji
Problem: JS oczekiwał facts_subject + facts_object, API zwraca facts
Rozwiązanie: Zmiana JS na ${p.transfers.facts || 0}

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 10:32:41 +01:00
51378176c9 fix(zopk): Prawidłowe nazwy kolumn w ZOPKKnowledgeRelation
Model używa entity_a_id/entity_b_id, nie source_entity_id/target_entity_id.

Naprawione miejsca:
- get_entity_merge_preview(): zliczanie relacji
- merge_entities(): przenoszenie relacji

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 10:29:57 +01:00
4dcfc1b8e8 fix(zopk): Naprawa błędu JSONB cast w SQLAlchemy
Problem: `:entity_json::jsonb` było interpretowane przez SQLAlchemy
jako parametr `:entity_json` z dodatkowym `:jsonb` (błąd składni SQL)

Rozwiązanie: Użycie CAST(:entity_json AS jsonb) zamiast ::jsonb

Naprawione miejsca:
- get_entity_merge_preview() - linia 1919
- merge_entities() - linia 1831

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 10:22:58 +01:00
8bdbd04c8c fix(zopk): Sortowanie duplikatów encji od największego podobieństwa
Zmiana kolejności ORDER BY w find_duplicate_entities():
- Teraz: sim DESC, entity_type, mentions DESC
- Wcześniej: entity_type, mentions DESC, sim DESC

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 10:19:16 +01:00
9ae72bb2fa fix(zopk): Naprawa łączenia encji - brak kolumn subject_entity_id/object_entity_id
Problem: ZOPKKnowledgeFact nie ma kolumn subject_entity_id i object_entity_id.
Zamiast tego używa entities_involved (JSONB array).

Zmiany:
- get_entity_merge_preview(): użycie JSONB @> query do liczenia faktów
- merge_entities(): użycie JSONB update do zamiany entity ID w facts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 09:57:30 +01:00
b69882bbb2 perf(zopk): Cache dla grafu relacji (TTL 5 min)
- Dodano in-memory cache dla API /api/zopk/knowledge/graph/data
- Cache key oparty o parametry: entity_type, min_cooccurrence, limit
- TTL = 300 sekund (5 minut)
- Flaga 'cached' w odpowiedzi informuje czy dane z cache

Korzyść: Drugie i kolejne ładowania grafu są natychmiastowe.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 09:34:52 +01:00
36d24d1735 fix(zopk): Naprawa inicjalizacji grafu relacji
Problem: D3.js ładowane przez base.html PO bloku extra_js,
więc initGraph() była wywoływana gdy D3 jeszcze nie istniało.

Rozwiązanie: użycie window.addEventListener('load', ...)
zamiast natychmiastowego sprawdzenia typeof d3.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 09:24:33 +01:00
85c3f75e9b feat(zopk): Graf relacji encji (Priorytet 5)
- Dodano endpoint /admin/zopk/knowledge/graph z wizualizacją D3.js
- Dodano API endpoint /api/zopk/knowledge/graph/data
- Graf współwystępowania encji z kolorami według typu
- Rozmiar węzłów proporcjonalny do liczby wzmianek
- Filtry: typ encji, minimalna liczba współwystąpień
- Tooltips z informacjami o encjach
- Zoom i drag-and-drop interakcje

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 09:14:30 +01:00
143f5c674a feat(zopk): Implementacja łączenia duplikatów encji (Priorytet 4)
Nowe funkcje w zopk_knowledge_service.py:
- find_duplicate_entities() - wyszukiwanie podobnych encji (pg_trgm)
- merge_entities() - łączenie encji z transferem relacji
- get_entity_merge_preview() - podgląd przed połączeniem

Nowe endpointy w app.py:
- GET /admin/zopk/knowledge/duplicates - panel zarządzania duplikatami
- POST /api/zopk/knowledge/duplicates/preview - podgląd merge
- POST /api/zopk/knowledge/duplicates/merge - wykonanie merge

Nowy szablon:
- templates/admin/zopk_knowledge_duplicates.html - UI z kartami encji

Dodatkowo:
- Aktualizacja CLAUDE.md z procedurą wdrażania
- Skrypt scripts/run_migration.py do uruchamiania migracji SQL

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 09:09:22 +01:00
6d1f75bce5 fix(admin): Naprawiono błędne nazwy endpointów w breadcrumbs
Zmieniono admin_dashboard i admin_zopk_dashboard na admin_zopk

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 09:03:01 +01:00
d0dda10bd7 feat(zopk): Panel admina bazy wiedzy, poprawa odpowiedzi AI, timeline
Priorytet 1 - Panel admina bazy wiedzy ZOPK:
- /admin/zopk/knowledge - dashboard ze statystykami
- /admin/zopk/knowledge/chunks - lista chunks z filtrowaniem
- /admin/zopk/knowledge/facts - lista faktów z typami
- /admin/zopk/knowledge/entities - lista encji z mentions
- CRUD operacje: weryfikacja, usuwanie

Priorytet 2 - Poprawa jakości odpowiedzi NordaGPT:
- Linki markdown do źródeł w kontekście ZOPK
- Ulepszone formatowanie (bold, listy, nagłówki)
- Sekcja "Źródła" na końcu odpowiedzi
- Instrukcje w system prompt dla lepszej prezentacji

Priorytet 3 - Timeline ZOPK:
- Model ZOPKMilestone w database.py
- Migracja 016_zopk_milestones.sql z sample data
- Sekcja "Roadmapa ZOPK" na stronie /zopk
- Pionowa oś czasu z markerami lat
- Statusy: completed, in_progress, planned, delayed

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 08:56:55 +01:00
7cc5f033fe fix: Poprawiono nazwy kluczy w pipeline skrypcie
Zmieniono 'processed' -> 'success' i 'generated' -> 'success' aby
pasowały do wartości zwracanych przez batch_extract() i
generate_chunk_embeddings().

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 00:27:08 +01:00
cbd9c5cc4d feat(zopk): Skrypt pipeline do automatycznej ekstrakcji wiedzy
Uruchamia po kolei: scraping treści, ekstrakcję AI, generowanie embeddingów.
Do użycia w cron job co godzinę.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 23:39:49 +01:00
081c0d7ec5 fix: Naprawiono dekodowanie URL-i Google News
Zmieniono kolejność metod dekodowania - googlenewsdecoder jest teraz
używany jako pierwsza metoda zamiast ostatniej. Poprzednia kolejność
powodowała wpadanie w pętlę z consent.google.com i wyczerpanie max_depth
przed wywołaniem działającej biblioteki.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 23:34:40 +01:00
900a3b4ed9 fix(admin): Naprawiono błąd importu w SSE scraping endpoint
Problem: Podwójny import ZOPKContentScraper powodował błąd 'cannot access local variable'
Rozwiązanie: Przeniesiono import na początek funkcji generate()

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 23:28:16 +01:00