nordabiz/docs/notes/2026-01-29.md
Maciej Pienczyn 13dd85142f docs: Notatki z prac 2026-01-29
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 15:26:56 +01:00

3.9 KiB

Notatki z prac nad NordaBiz - 2026-01-29

Wykonane zadania

1. Naprawa błędów 500 w blueprintach

  • Problem: url_for('classifieds_index') bez prefixu blueprintu powodował 500
  • Rozwiązanie: Zmiana na url_for('.classifieds_index') (kropka = aktualny blueprint)
  • Pliki: blueprints/community/classifieds/routes.py, calendar/routes.py, contacts/routes.py

2. Aktualizacja ikony NordaGPT na stronie głównej

  • Problem: Stara ikona robota zamiast nowej ikony NordaGPT
  • Rozwiązanie: Podmiana na SVG z /static/img/nordagpt-icon.svg
  • Plik: templates/index.html

3. Integracja wideo z portalem

  • Dodano: Modal player z wideo w sekcji Edukacja
  • Pliki:
    • blueprints/education/routes.py - lista materiałów z URL wideo
    • templates/education/index.html - player, thumbnails, badge "Nowe"
  • Wideo: static/videos/nordabiz-zajawka-final.mp4

4. Poprawki wideo zajawka (Remotion)

  • Zmiana: Ostatnia scena - logo Norda Biznes zamiast ikony NordaGPT
  • Poprawka: Polskie znaki ("Twoja sieć kontaktów", "Izba Przedsiębiorców NORDA")
  • Plik: remotion/my-video/src/NordaBizZajawka.tsx

5. Ukrycie strony /aktualnosci

  • Strona pozostaje w kodzie, ale nie jest linkowana
  • Zostanie udostępniona w przyszłości na decyzję użytkownika

6. Reorganizacja kategorii ogłoszeń

Nowe kategorie:

Kod Etykieta
internal Wewnętrzne
external Zewnętrzne
event Wydarzenie
opportunity Okazja biznesowa
partnership Partnerstwo
  • Plik: database.py - CATEGORIES i CATEGORY_LABELS

7. Usunięcie "Nowi członkowie" z footera

  • Plik: templates/base.html

8. Obsługa wielu kategorii dla ogłoszeń (GŁÓWNA FUNKCJONALNOŚĆ)

Zmiany w bazie danych:

  • Nowa kolumna: categories TEXT[] (tablica PostgreSQL)
  • Migracja: database/migrations/029_add_categories_array.sql
  • Indeks GIN dla szybkiego wyszukiwania

Zmiany w backendzie:

  • Formularz admin: checkboxy zamiast select (wiele kategorii)
  • Filtrowanie: operator PostgreSQL @> dla tablic
  • Zachowanie kompatybilności wstecznej (pole category)

Pliki:

  • app.py - routes admin_announcements_new, admin_announcements_edit, announcements_list
  • database.py - model Announcement z nowymi metodami
  • templates/admin/announcements_form.html - checkboxy kategorii
  • templates/announcements/list.html, detail.html - wyświetlanie wielu badge'ów

Składnia SQLAlchemy dla ARRAY:

# BŁĘDNE (generuje LIKE):
Announcement.categories.contains([category])

# POPRAWNE (operator @>):
from sqlalchemy.dialects.postgresql import array as pg_array
query.filter(Announcement.categories.op('@>')(pg_array([category])))

9. Aktualizacja istniejących ogłoszeń

  • ID 11 (Baza zakwaterowania): {external, opportunity}
  • ID 12 (Tytani Przedsiębiorczości): {external, event}

Błędy naprawione podczas sesji

Błąd Przyczyna Rozwiązanie
500 na /tablica/nowe Brak prefixu . w url_for Dodanie kropki
500 na /ogloszenia?category=X .any() nie istnieje dla ARRAY Użycie .op('@>')
500 (malformed array literal) .contains() generuje LIKE Użycie pg_array()

Commity

  1. feat(announcements): Obsługa wielu kategorii dla ogłoszeń
  2. fix: Poprawka składni SQLAlchemy dla ARRAY contains
  3. fix: Użycie operatora @> dla PostgreSQL ARRAY contains

Do zrobienia (następna sesja)

  • Nagranie tutorialu NordaGPT (30s) z użyciem GIFów z portalu
  • Integracja z NotebookLM (podcast o portalu)
  • Widget wideo na dashboardzie dla zalogowanych użytkowników

Uwagi techniczne

  • PostgreSQL ARRAY wymaga operatora @> do sprawdzania zawierania
  • SQLAlchemy .contains() dla TEXT[] generuje błędne zapytanie LIKE
  • Metoda .any() nie istnieje dla kolumn ARRAY w SQLAlchemy 2.0
  • Prawidłowa składnia: column.op('@>')(pg_array([value]))