1. Wymagania
- dostęp do katalogu projektu
api_bol, - uzupełniony plik
.env, - Docker Desktop albo Python zgodny z projektem,
- dostęp do kluczy Retailer API i Advertising API danego klienta.
Najprostsza opcja dla zespołu to Docker Compose. Uruchamia frontend, backend, worker i PostgreSQL jednym poleceniem.
2. Konfiguracja .env
Skopiuj plik przykładowy i uzupełnij wartości klienta:
copy .env.example .env
Wymagane zmienne dla jednego klienta:
BOL_CLIENT_ID=...
BOL_CLIENT_SECRET=...
BOL_ADVERTISING_CLIENT_ID=...
BOL_ADVERTISING_CLIENT_SECRET=...
.env
nie powinien trafić do repozytorium.
3. Uruchomienie przez Docker Compose
Otwórz terminal w katalogu projektu i uruchom:
docker compose up --build
Po uruchomieniu:
- GUI:
http://127.0.0.1:8501 - Backend:
http://127.0.0.1:8000
Zatrzymanie aplikacji:
docker compose down
4. Uruchomienie lokalne bez Dockera
W PowerShell uruchom kolejno:
python -m pip install -r requirements.txt
alembic upgrade head
python cli.py gui:import-latest-results --client STAMAR
python -m uvicorn web.backend.main:app --host 127.0.0.1 --port 8000
W drugim oknie terminala:
streamlit run web/frontend/app.py --server.address=127.0.0.1 --server.port=8501
Jeżeli worker nie jest uruchamiany razem z aplikacją w trybie lokalnym, uruchom go w osobnym terminalu zgodnie z aktualnym README projektu.
5. Pierwszy import danych
Przed wejściem do dashboardu zaimportuj najnowszy eksport struktury i ostatni wynik optymalizatora:
python cli.py gui:import-latest-results --client STAMAR
Import nie kopiuje całych plików XLSX do bazy. Zapisuje dane znormalizowane i ścieżki do artefaktów.
6. Role testowe
| Użytkownik | Rola | Uprawnienia |
|---|---|---|
viewer@example.local | VIEWER | tylko podgląd |
analyst@example.local | ANALYST | uruchamianie analiz, REVIEWED |
approver@example.local | APPROVER | zatwierdzanie i odrzucanie |
admin@example.local | ADMIN | konfiguracja i pełny dostęp do MVP |
Są to konta developerskie. Przy wdrożeniu zespołowym należy podłączyć firmowe logowanie OIDC.
7. Codzienny workflow
- Wybierz klienta Sprawdź, czy pracujesz na właściwym koncie i rynku.
- Odśwież dane W Jobs uruchom incremental performance refresh.
- Uruchom optimizer Worker pobierze job i zapisze wynik jako COMPLETED albo FAILED.
- Sprawdź Keyword Decisions Analyst oznacza sprawdzone rekordy jako REVIEWED.
- Sprawdź Search Terms Oddziel frazy chronione i niejednoznaczne od realnych kandydatów do negatywów.
- Zatwierdź rekomendacje Approver może zatwierdzić albo odrzucić rekord. Nadal nie powoduje to zmiany live.
8. Bezpieczeństwo
- frontend nie ma dostępu do credentials,
- brak endpointu live apply,
- każda zmiana statusu trafia do audit log,
- role są weryfikowane po stronie backendu,
- worker wykonuje zadania z kolejki pojedynczo,
MUTATION_REQUESTS_SENTmusi pozostać równe 0.
9. Typowe problemy
GUI nie otwiera się pod 127.0.0.1:8501
Sprawdź, czy proces Streamlit działa i czy port 8501 nie jest zajęty.
Backend zwraca błąd połączenia
Sprawdź proces Uvicorn, adres 127.0.0.1:8000 oraz ustawienia backend URL w frontendzie.
Brak danych po wejściu do GUI
Uruchom import najnowszych wyników i sprawdź, czy w katalogu output istnieje aktualny plan optymalizacji.
Job pozostaje w statusie PENDING
Najczęściej oznacza to, że worker nie działa albo nie ma połączenia z bazą.
Błąd 401 albo 403 z bol API
Sprawdź właściwy profil credentials i uprawnienia danego klienta. Nie próbuj obchodzić ograniczeń API.