Zmieniono admin_dashboard i admin_zopk_dashboard na admin_zopk Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
8.5 KiB
Plan rozwoju bazy wiedzy ZOPK
Data utworzenia: 2026-01-17 Status: W trakcie realizacji
Stan obecny (przed rozpoczęciem)
| Komponent | Status | Wartość |
|---|---|---|
| Artykuły scraped | ✅ | 132/163 (81%) |
| Artykuły extracted | ✅ | 120/132 (91%) |
| Chunks | ✅ | 412 |
| Fakty | ✅ | 3,414 |
| Encje | ✅ | 1,309 |
| Embeddings | ✅ | 412/412 (100%) |
| Integracja NordaGPT | ✅ | Semantic search działa |
| Automatyczny pipeline | ✅ | Cron co 1h |
Priorytet 1: Panel admina bazy wiedzy
Status: 🔄 W trakcie Szacowany czas: 1-2 dni
Cel
Dashboard w /admin/zopk/knowledge z podglądem i zarządzaniem bazą wiedzy.
Wymagane funkcje
-
Dashboard główny (
/admin/zopk/knowledge)- Statystyki: chunks, fakty, encje, embeddings
- Wykresy: ekstrakcje w czasie, top encje
- Przyciski szybkich akcji (scraping, ekstrakcja, embeddings)
-
Lista chunks (
/admin/zopk/knowledge/chunks)- Tabela z paginacją
- Filtrowanie po artykule źródłowym
- Podgląd treści chunk
- Edycja/usunięcie chunk
- Status embeddingu (✓/✗)
-
Lista faktów (
/admin/zopk/knowledge/facts)- Tabela z paginacją
- Filtrowanie po typie faktu (financial, date, decision, etc.)
- Weryfikacja faktu (✓ zweryfikowany / ✗ błędny)
- Edycja faktu
- Link do źródłowego artykułu
-
Lista encji (
/admin/zopk/knowledge/entities)- Tabela z paginacją
- Filtrowanie po typie (company, person, place, project)
- Liczba wzmianek
- Możliwość łączenia duplikatów (Priorytet 4)
- Edycja opisu encji
-
Szczegóły artykułu (
/admin/zopk/knowledge/article/<id>)- Pełna treść scraped
- Lista wyekstraktowanych chunks
- Lista wyekstraktowanych faktów
- Lista encji
- Możliwość re-ekstrakcji
Pliki do utworzenia
templates/admin/zopk_knowledge_dashboard.htmltemplates/admin/zopk_knowledge_chunks.htmltemplates/admin/zopk_knowledge_facts.htmltemplates/admin/zopk_knowledge_entities.html
Pliki do modyfikacji
app.py- nowe endpointyzopk_knowledge_service.py- metody CRUD
Priorytet 2: Poprawa jakości odpowiedzi
Status: ⏳ Oczekuje Szacowany czas: 1 dzień
Cel
Lepsze formatowanie odpowiedzi NordaGPT z linkami do źródeł.
Wymagane zmiany
-
Linki do źródeł
- Zamiast: "Według Google News z 31 grudnia 2025..."
- Ma być: "Według trojmiasto.pl z 31 grudnia 2025..."
-
Formatowanie odpowiedzi
- Nagłówki dla sekcji
- Listy wypunktowane dla wielu faktów
- Wyróżnienie kluczowych danych (pogrubienie)
-
Pewność odpowiedzi
- Gdy brak danych w bazie: "Nie mam informacji na ten temat w bazie wiedzy ZOPK"
- Gdy dane niepewne: "Według dostępnych informacji (pewność: średnia)..."
-
Źródła na końcu odpowiedzi
📚 Źródła: - [trojmiasto.pl] Kongsberg zainwestuje na Pomorzu (2025-11-23) - [defence24.pl] Norweska fabryka w Rumi (2025-11-25)
Pliki do modyfikacji
nordabiz_chat.py- metoda_get_zopk_knowledge_context()nordabiz_chat.py- system prompt dla ZOPK
Priorytet 3: Timeline ZOPK na stronie /zopk
Status: ⏳ Oczekuje Szacowany czas: 2-3 dni
Cel
Wizualna oś czasu projektu ZOPK pokazująca kamienie milowe.
Wymagane funkcje
-
Tabela
zopk_milestonesCREATE TABLE zopk_milestones ( id SERIAL PRIMARY KEY, title VARCHAR(255) NOT NULL, description TEXT, milestone_type VARCHAR(50), -- announcement, decision, construction, completion target_date DATE, actual_date DATE, status VARCHAR(20), -- planned, in_progress, completed, delayed source_news_id INTEGER REFERENCES zopk_news(id), source_fact_id INTEGER REFERENCES zopk_knowledge_facts(id), icon VARCHAR(50), color VARCHAR(7), is_featured BOOLEAN DEFAULT FALSE, display_order INTEGER, created_at TIMESTAMP DEFAULT NOW() ); -
Automatyczne tworzenie milestones
- Ekstrakcja dat z faktów (np. "budowa rozpocznie się w 2027")
- Kategoryzacja: announcement, decision, construction_start, completion
- Przypisanie do projektów (Kongsberg, PEJ, Baltic Power, Via Pomerania)
-
UI Timeline na /zopk
- Pionowa oś czasu (scrollowalna)
- Kamienie milowe z ikonami
- Kolory: zielony (completed), niebieski (in_progress), szary (planned)
- Kliknięcie → szczegóły z linkiem do źródła
-
Panel admina dla milestones
/admin/zopk/milestones- Dodawanie/edycja/usuwanie
- Zmiana kolejności (drag & drop)
Pliki do utworzenia
database/migrations/016_zopk_milestones.sqltemplates/admin/zopk_milestones.html
Pliki do modyfikacji
database.py- model ZOPKMilestoneapp.py- endpointytemplates/zopk.html- sekcja timeline
Priorytet 4: Łączenie duplikatów encji
Status: ⏳ Oczekuje Szacowany czas: 1 dzień
Cel
Automatyczne i ręczne łączenie zduplikowanych encji.
Znane duplikaty do połączenia
| Encja główna | Duplikaty | Łączna liczba wzmianek |
|---|---|---|
| Morze Bałtyckie | Bałtyk | 58 + 53 = 111 |
| Polskie Elektrownie Jądrowe | PEJ | ? |
| Władysław Kosiniak-Kamysz | Kosiniak-Kamysz, Wicepremier | ? |
| Kongsberg Defence & Aerospace | Kongsberg | ? |
Wymagane funkcje
-
Automatyczne wykrywanie duplikatów
- Fuzzy matching nazw (pg_trgm similarity > 0.7)
- Porównanie typów encji
- Sugestie do zatwierdzenia przez admina
-
Panel łączenia (
/admin/zopk/knowledge/entities/merge)- Lista sugerowanych duplikatów
- Wybór encji głównej
- Przycisk "Połącz" → aktualizacja wszystkich referencji
-
Aliasy encji
- Tabela
zopk_entity_aliases - Encja "Polskie Elektrownie Jądrowe" ma alias "PEJ"
- Wyszukiwanie uwzględnia aliasy
- Tabela
Pliki do utworzenia
database/migrations/017_zopk_entity_aliases.sql
Pliki do modyfikacji
database.py- model ZOPKEntityAliaszopk_knowledge_service.py- metody merge_entities(), get_entity_duplicates()app.py- endpointy
Priorytet 5: Graf relacji encji
Status: ⏳ Oczekuje Szacowany czas: 2-3 dni
Cel
Wizualizacja powiązań między encjami (podobna do Mapy Powiązań firm).
Typy relacji do ekstrakcji
| Relacja | Przykład |
|---|---|
invests_in |
Kongsberg → Rumia Invest Park |
manages |
MON → ZOPK |
builds |
PEJ → Elektrownia Lubiatowo |
located_in |
Baltic Power → Morze Bałtyckie |
partners_with |
Westinghouse → Bechtel |
employs |
Kongsberg → 500 osób |
Wymagane funkcje
-
Ekstrakcja relacji z faktów
- Analiza AI faktów typu: "Kongsberg zainwestuje w Rumi"
- Prompt: "Wyodrębnij relacje: subject → predicate → object"
-
Wypełnienie tabeli
zopk_knowledge_relations- Tabela już istnieje (obecnie pusta)
- Kolumny: source_entity_id, target_entity_id, relation_type, confidence_score
-
Wizualizacja grafu (
/zopk/graphlub modal na /zopk)- Użycie D3.js lub vis.js (jak Mapa Powiązań)
- Węzły = encje (kolorowane po typie)
- Krawędzie = relacje (etykiety)
- Filtrowanie po typie relacji
-
Panel admina (
/admin/zopk/knowledge/relations)- Lista relacji z paginacją
- Dodawanie/edycja/usuwanie
- Weryfikacja (✓/✗)
Pliki do modyfikacji
zopk_knowledge_service.py- metoda extract_relations()app.py- endpointytemplates/zopk.html- sekcja graf lub modal
Harmonogram realizacji
| Priorytet | Zadanie | Szacowany czas | Status |
|---|---|---|---|
| 1 | Panel admina bazy wiedzy | 1-2 dni | 🔄 W trakcie |
| 2 | Poprawa jakości odpowiedzi | 1 dzień | ⏳ Oczekuje |
| 3 | Timeline ZOPK | 2-3 dni | ⏳ Oczekuje |
| 4 | Łączenie duplikatów encji | 1 dzień | ⏳ Oczekuje |
| 5 | Graf relacji encji | 2-3 dni | ⏳ Oczekuje |
Łączny szacowany czas: 7-10 dni
Notatki techniczne
Istniejące tabele bazy wiedzy
zopk_knowledge_chunks- fragmenty tekstu z embeddingamizopk_knowledge_facts- wyekstraktowane faktyzopk_knowledge_entities- rozpoznane encjezopk_knowledge_relations- relacje między encjami (pusta)
Istniejące serwisy
zopk_knowledge_service.py- ekstrakcja i wyszukiwaniezopk_content_scraper.py- scraping treści artykułów
Istniejący pipeline (cron)
scripts/zopk_knowledge_pipeline.py- uruchamiany co godzinę- Logi:
/var/log/nordabiznes/knowledge_pipeline.log