ASM_PNS_C/Koncepcja 0.2 .md

714 lines
41 KiB
Markdown
Raw Normal View History

2026-06-25 13:49:57 +00:00
# AdReactions — Koncepcja platformy v0.2 (rozszerzona)
> **Status dokumentu:** rozszerzenie i ujednolicenie „Koncepcja 0.1 [KM]".
> Łączy w spójną całość źródła projektu i dokłada warstwy, których w wersji 0.1
> brakowało: model domenowy, mapowanie *cel biznesowy → metryki → usługi AI*,
> wymienialność modeli, propozycję modelu danych oraz jawne rozgraniczenie
> **zakresu MVP 1.0 od roadmapy**.
>
> Miejsca wymagające decyzji właściciela produktu oznaczono znacznikiem **[?]**
> i zebrano w osobnym pliku **`Pytania do koncepcji.md`**.
## Źródła zintegrowane w tym dokumencie
| Dokument | Co wnosi |
|---|---|
| `Koncepcja 0.1.md` | Produkt, role, moduły, UX, kreator eksperymentu, use case'y |
| `Opis celów analiz kognitywnych.md` | 15 celów biznesowych + mapowanie na metryki ET/FC |
| `Specyfikacja-procesu-AI.md` | Logika procesu AI: kontrakty usług, orkiestracja, model danych, roadmapa |
| `info.md` | Wymaganie: wymiana modelu AI na inny (np. Gemini, Opus) z poziomu panelu |
---
## Spis treści
1. [Streszczenie wykonawcze](#1-streszczenie-wykonawcze)
2. [Wizja produktu i propozycja wartości](#2-wizja-produktu-i-propozycja-wartości)
3. [Słownik pojęć (model domenowy)](#3-słownik-pojęć-model-domenowy)
4. [Architektura logiczna platformy](#4-architektura-logiczna-platformy)
5. [Organizacje, role i uprawnienia](#5-organizacje-role-i-uprawnienia)
6. [Moduły platformy](#6-moduły-platformy)
7. [Cykl życia eksperymentu (kreator 4 kroków)](#7-cykl-życia-eksperymentu-kreator-4-kroków)
8. [Katalog celów analiz kognitywnych](#8-katalog-celów-analiz-kognitywnych)
9. [Warstwa AI — proces analizy](#9-warstwa-ai--proces-analizy)
10. [Wymienialność modeli AI (Proces ↔ Model)](#10-wymienialność-modeli-ai-proces--model)
11. [Struktura i generowanie raportu](#11-struktura-i-generowanie-raportu)
12. [Propozycja modelu danych (Supabase)](#12-propozycja-modelu-danych-supabase)
13. [Kredyty, subskrypcje, przestrzeń dyskowa](#13-kredyty-subskrypcje-przestrzeń-dyskowa)
14. [Logi i audyt](#14-logi-i-audyt)
15. [Bezpieczeństwo, prywatność, zgodność](#15-bezpieczeństwo-prywatność-zgodność)
16. [Internacjonalizacja](#16-internacjonalizacja)
17. [Przepływy użytkownika (use case'y)](#17-przepływy-użytkownika-use-casey)
18. [Zakres MVP 1.0 vs roadmapa](#18-zakres-mvp-10-vs-roadmapa)
---
## 1. Streszczenie wykonawcze
**AdReactions** to aplikacja SaaS do **predykcyjnego badania percepcji i emocji** wobec
kreacji reklamowych - bez udziału realnych respondentów. Zamiast organizować kosztowne
badania eye-trackingowe na ludziach, użytkownik wgrywa kreację (reklamę, baner, opakowanie, ekran UI) i otrzymuje **syntetyczny eye-tracking** oraz **predykcję reakcji emocjonalnej** generowane przez modele AI, w tym autorski model **ASM PNS**.
Cechą wyróżniającą produkt jest **odwrócenie perspektywy**: użytkownik nie konfiguruje metryk, tylko wybiera **cel biznesowy** („Która kreacja lepiej sprzedaje?", „Czy CTA działa?"), a system samodzielnie dobiera technologię analizy (Eye Tracking / Facial Coding / ET+FC), zestaw metryk i sposób interpretacji wyniku. Raport nie podaje surowych liczb, lecz **rekomendację z uzasadnieniem** („Wariant B lepiej realizuje cel sprzedażowy, ponieważ…").
**Zakres MVP 1.0:** platforma SaaS (organizacje, projekty, eksperymenty, galeria kreacji, raporty), kreator eksperymentu, panel administracyjny z **wymienialnymi modelami AI**, oraz pipeline AI obejmujący detekcję obiektów i predykcję uwagi wzrokowej (trzy modele saliency z walidacją krzyżową). Facial Coding, wizualizacje czasowe i ścieżki fiksacji są zaplanowane jako kolejne, niezależne gałęzie pipeline'u (patrz §18).
---
## 2. Wizja produktu i propozycja wartości
### 2.1. Problem
Klasyczne badania eye-trackingu i kodowania mimiki (facial coding) są drogie, czasochłonne
i wymagają rekrutacji respondentów oraz sprzętu. Decyzje o wyborze wariantu kreacji
zapadają więc często „na wyczucie", już po poniesieniu kosztów produkcji.
### 2.2. Propozycja wartości
- **Szybkość i koszt:** predykcja w minutach zamiast tygodni, bez respondentów.
- **Decyzyjność:** wynik prowadzi do konkretnej rekomendacji („wybierz B"), a nie tabeli liczb.
- **Porównywalność:** test A / AB / ABC pozwala zestawić warianty na jednej osi metryk.
- **Segmentacja:** predykcje dla zdefiniowanej grupy docelowej (demografia, profile, neuroatypowość).
- **Powtarzalność:** eksperyment można sklonować i zmodyfikować jako bazę kolejnego.
### 2.3. Kluczowa innowacja: „cel zamiast metryk"
To centralny mechanizm produktu (rozwinięty w §8). Pięć warstw od wyboru celu do rekomendacji:
```
[1] Użytkownik wybiera CEL BIZNESOWY np. „Która kreacja lepiej sprzedaje?"
[2] System pokazuje OPIS POMOCNICZY „Sprawdź, który wariant prowadzi uwagę do CTA…"
[3] System rekomenduje TYP ANALIZY ET+FC (z możliwością zmiany przez użytkownika)
[4] System dobiera METRYKI „pod spodem" udział uwagi na CTA, Positive Valence, …
[5] Raport zwraca REKOMENDACJĘ Z UZASADNIENIEM „Wariant B…, ponieważ…"
```
### 2.4. Odbiorcy (persony)
- **Marketer / brand manager** — wybiera wariant kampanii, potrzebuje rekomendacji.
- **Agencja kreatywna** — testuje koncepty przed prezentacją klientowi (pitch).
- **Projektant UX / CRO** — sprawdza, czy ekran prowadzi użytkownika do celu.
- **Super administrator (operator platformy)** — zarządza organizacjami i modelami AI.
---
## 3. Słownik pojęć (model domenowy)
Ujednolicenie nazewnictwa używanego w dalszej części dokumentu.
| Pojęcie | Definicja |
|---|---|
| **Organizacja** | Najwyższy kontener klienta. Ma administratora, użytkowników, gości, projekty, pulę kredytów i przestrzeń dyskową. |
| **Użytkownik** | Niezależne konto osoby. Może należeć do wielu organizacji [?]. |
| **Projekt** | Kontener eksperymentów + galeria kreacji projektu. Typ pochodny: ET / FC / ET+FC. |
| **Eksperyment** | Pojedyncza analiza predykcyjna 13 kreacji wg zadanego celu, grupy, parametrów. |
| **Kreacja** | Materiał graficzny (PNG/JPEG) — reklama, baner, opakowanie, ekran. Jednostka wejściowa analizy. |
| **Galeria** | Zbiór kreacji: na poziomie **organizacji** (współdzielona) i **projektu** (podzbiór roboczy). |
| **Obiekt** | Rozpoznany element treści obrazu (osoba, butelka, logo…) z ramką (bbox). Źródło: AI lub użytkownik. |
| **AOI** (Area of Interest) | Obszar zainteresowania o znaczeniu marketingowym (CTA, Logo, Key Visual…). Źródło: AI lub użytkownik. |
| **Metryka** | Mierzalny wskaźnik percepcji/emocji (np. udział uwagi na AOI, Positive Valence). |
| **Cel** | Pytanie biznesowe wybrane przez użytkownika; mapuje się na typ analizy i zestaw metryk. |
| **Grupa docelowa** | Profil odbiorcy (wiek, płeć, miejsce, wykształcenie, dochód, neuroatypowość / preset). |
| **Raport** | Złożenie wizualizacji, metryk i interpretacji kognitywnej dla eksperymentu. |
| **Proces AI** | Pojedynczy krok analizy realizowany przez model (np. „detekcja obiektów", „predykcja saliency"). |
| **Model AI** | Konkretny silnik realizujący proces (LLaVA, ASM, DeepGaze…), wymienny na inny (§10). |
| **Kredyt / coin** | Wewnętrzna jednostka rozliczeniowa (eksperymenty, przestrzeń dyskowa). |
### Diagram relacji encji (uproszczony)
```
Organizacja 1───* Użytkownik Organizacja 1───* Projekt
│ │
│ 1 │ 1
* *
Galeria(org) *───* Kreacja Eksperyment
▲ │ * │ 1
│ │ ├──* Kreacja (13: A/B/C)
Galeria(projekt) *────┘ ├──* Obiekt
├──* AOI
├──1 Cel + Grupa docelowa + Parametry
└──1 Raport ──* WynikModelu / Metryka
```
---
## 4. Architektura logiczna platformy
### 4.1. Warstwy
```
┌──────────────────────────────────────────────────────────────────────┐
│ FRONTEND — React + shadcn/ui + Tailwind │
│ Panele: Administracyjny · Użytkownika · Organizacji │
│ Kreator eksperymentu (4 kroki) · Studio (obiekty/AOI) · Raport │
└───────────────────────────────┬──────────────────────────────────────┘
│ REST / RPC
┌───────────────────────────────▼───────────────────────────────────────┐
│ BACKEND — Node.js │
│ • API platformy (CRUD: org, projekty, eksperymenty, galeria) │
│ • Orkiestrator analizy AI (§9) — równoległe wywołania usług │
│ • Warstwa metryk (saliency ∩ AOI → wskaźniki) │
│ • Warstwa interpretacji kognitywnej (cel + metryki → rekomendacja) │
│ • Generator raportu (PDF/XLS/wizualizacje) │
│ • Rejestr modeli AI + router „Proces ↔ Model" (§10) │
└──────────────┬────────────────────────────────────┬───────────────────┘
│ │ HTTP POST (multipart)
┌──────────────▼──────────────────┐ ┌─────────────▼──────────────────────┐
│ SUPABASE │ │ WARSTWA MODELI AI (mikroserwisy) │
│ • PostgreSQL (model danych) │ │ LLaVA · Grounding DINO · DeepGaze │
│ • Storage (kreacje, artefakty) │ │ UNISAL · ASM (PNS) · [Gemini/Opus]│
│ • Auth (konta, sesje, role) │ │ Wymienne wg konfiguracji procesu │
└─────────────────────────────────┘ └────────────────────────────────────┘
```
### 4.2. Stack technologiczny (z Koncepcji 0.1)
- **Front-end:** React / shadcn/ui + Tailwind
- **Back-end:** Node.js
- **Baza, Storage, Auth:** Supabase
- **Warstwa AI:** mikroserwisy modelowe za REST API, orkiestrowane przez backend Node.js (§9).
### 4.3. Uwaga o orkiestracji
Logika procesu AI jest opisana **niezależnie od narzędzia orkiestrującego**
(`Specyfikacja-procesu-AI.md`) i przeznaczona do implementacji jako komponent backendu
Node.js: równoległe wywołania usług modelowych, agregacja wyników i obsługa błędów (§9).
Pojedyncze modele (detekcja, saliency) pozostają niezależnymi mikroserwisami za REST API.
---
## 5. Organizacje, role i uprawnienia
### 5.1. Hierarchia
- **Super administrator** — operator platformy. Dostęp do panelu administracyjnego;
zarządza organizacjami, użytkownikami i modelami AI. Może „wejść" w dowolną organizację
i poruszać się w niej jak administrator. Ma dostęp do logów systemowych i logów eksperymentu.
- **Administrator organizacji** — powstaje przy rejestracji organizacji; prawa zbywalne na
innego użytkownika. Pełny dostęp do projektów, rozliczeń, planów i ustawień organizacji.
- **Użytkownik** — niezależne konto; uprawnienia nadawane na poziomie organizacji i/lub projektu.
- **Gość** — wymieniony w strukturze organizacji; zakres uprawnień do doprecyzowania **[?]**
(proponowane: dostęp tylko do udostępnionych raportów, bez tworzenia treści).
### 5.2. Macierz uprawnień (propozycja ujednolicająca)
Uprawnienia działają na dwóch poziomach: **organizacji** i **konkretnego projektu**.
| Uprawnienie | Super Admin | Admin org. | Użytkownik (org.) | Użytkownik (projekt) | Gość |
|---|:--:|:--:|:--:|:--:|:--:|
| Panel administracyjny | ✓ | — | — | — | — |
| Zarządzanie modelami AI | ✓ | — | — | — | — |
| Tworzenie projektów | ✓ | ✓ | wg uprawnień | — | — |
| Przeglądanie wszystkich projektów | ✓ | ✓ | wg uprawnień | — | — |
| Edycja wszystkich projektów | ✓ | ✓ | wg uprawnień | — | — |
| Usuwanie projektów | ✓ | ✓ | wg uprawnień | — | — |
| Zapraszanie do projektów | ✓ | ✓ | wg uprawnień | wg roli projekt. | — |
| Rozliczenia / plany / kredyty | ✓ | ✓ | — | — | — |
| Tworzenie / konfiguracja eksperymentu | ✓ | ✓ | ✓ | Editor | — |
| Podgląd raportu | ✓ | ✓ | ✓ | Editor / Viewer | Viewer (udostępniony) |
**Role w obrębie projektu** (przy udostępnianiu): **Editor** (edycja + zapraszanie) /
**Viewer** (tylko podgląd). W Koncepcji 0.1 pojawia się też wariant „usuwanie, edycja i
zapraszanie" — ujednolicić do 23 ról projektowych **[?]**.
---
## 6. Moduły platformy
### 6.1. Panel administracyjny (tylko Super Administrator)
**Sitebar:** Dashboard · Organizacje · Użytkownicy · Proces i modele AI · Logi.
- **Dashboard** — KPI z dynamiką 30 dni (graficznie + liczbowo): liczba organizacji,
użytkowników, kreacji, przeprowadzonych eksperymentów.
- **Organizacje** — lista + wyszukiwarka; wejście w organizację pozwala zarządzać danymi,
użytkownikami, **kredytami** (globalnymi i miesięcznymi), aktywować / dezaktywować /
archiwizować organizację.
- **Użytkownicy** — lista + wyszukiwarka (dane podstawowe).
- **Proces i modele AI** — **zamknięta lista procesów** realizowanych w eksperymentach
oraz przypisany do każdego model AI. To miejsce wymiany modelu na inny (szczegóły §10).
- **Logi** — logi całego systemu z filtrowaniem (użytkownik, organizacja, zakres dat, typ operacji).
### 6.2. Panel użytkownika (po zalogowaniu)
Z tego miejsca użytkownik może: przejść do wybranej organizacji, dodać nową organizację
(limit: jedna nowa organizacja **[?]** — doprecyzować, czy dotyczy zakładania, czy członkostwa),
zmienić dane, e-mail, hasło.
### 6.3. Panel organizacji (Administrator + użytkownicy)
**Sitebar:** Dashboard · Projekty · Galeria.
**Topbar:** wybór organizacji · wyszukiwarka (projekty, kreacje, eksperymenty).
**Sitebar** chowa się na mobile; **Workspace** to obszar roboczy.
- **Dashboard** — KPI: liczba kreacji w Galerii, liczba projektów, liczba eksperymentów.
Przyciski szybkich akcji: *Dodaj kreację do Galerii* · *Utwórz nowy Projekt* ·
*Przejdź do ostatniego eksperymentu*. Poniżej: lista projektów z wejściem.
- **Galeria** — zarządzanie kreacjami organizacji: upload, kafelki ostatnio dodanych,
pełna galeria (slider). Klik w kreację → **drawer** po prawej: powiększenie + lista
eksperymentów/projektów, w których użyto kreacji (z przejściem do nich).
- **Projekty** — lista projektów (nazwa, typ ET/FC/ET+FC), przycisk *Nowy projekt*.
- **Panel projektu** — zarządzanie: przegląd, weryfikacja konfiguracji eksperymentów,
usuwanie projektu/eksperymentów, udostępnianie projektu.
- **Galeria projektu** — kreacje dodane do projektu (z Galerii organizacji lub własne projektu).
W jednym eksperymencie maks. **3 kreacje (A, B, C)**. Liczba materiałów ograniczona
przestrzenią dyskową subskrypcji (rozszerzalną za kredyty — §13).
- **Galeria eksperymentów** — wszystkie eksperymenty projektu z kluczowymi parametrami
(technologia ET/FC/ET+FC, typ testu, autor).
---
## 7. Cykl życia eksperymentu (kreator 4 kroków)
Każdy eksperyment przechodzi przez czterostopniowy kreator. Poniżej rozszerzenie z dopiętym
mapowaniem na warstwę AI (§9) i metryki (§8).
### 7.1. Krok 1 — Cel i grupa docelowa
- **Cel** — wybór ze słownika 15 celów (§8) lub opis własny. Cel determinuje rekomendowany
typ analizy i zestaw metryk.
- **Grupa docelowa** — cechy metryczkowe lub gotowe presety:
| Kategoria | Wartości |
|---|---|
| **Wiek** | Młodzież (do 25) · Dorośli (2664) · Seniorzy (65+) *(ujednolicić próg — patrz [?])* |
| **Płeć** | Kobieta · Mężczyzna |
| **Miejsce zamieszkania** | do 19 tys. · 2050 tys. · 50100 tys. · 100500 tys. · >500 tys. |
| **Wykształcenie** | Podstawowe · Zasadnicze zawodowe · Średnie · Wyższe · Wyższe / tytuł naukowy |
| **Dochód** | Niski (≤MK) · Średni (MKŚK) · Wysoki (>ŚK) |
| **Neuroatypowość** | Brak / Neurotypowy · ASD · ADHD · Zaburzenia depresyjne |
| **Profile opisowe (presety)** | NT (Neurotypowy) · DE (Wykluczony cyfrowo) · SE (Silver Economy) · GZ (Gen-Z / Digital Native) |
> **Powiązanie z AI — kluczowa uwaga:** obecny pipeline (§9) **nie przyjmuje** parametrów
> demograficznych na wejściu. Model ASM PNS ma docelowo generować predykcje różnicowane
> dla grup, jednak mechanizm warunkowania (np. przez `prompt` ASM lub osobne wagi modelu)
> wymaga decyzji. **[?]** — patrz §9.5 i `Pytania do koncepcji.md`.
### 7.2. Krok 2 — Parametry
- **Rodzaj analizy:** Eye Tracking · Facial Coding · ET+FC *(rekomendowany przez cel,
edytowalny przez użytkownika)*.
- **Rodzaj testu:** A (1 kreacja) · AB / AC / BC (2 kreacje) · ABC (3 kreacje).
*Uwaga: Koncepcja 0.1 w jednym miejscu podaje A/AB/ABC, a w innym A/AB/AC/BC/ABC —
ujednolicić.* **[?]**
- **Czas obserwacji:** 1s · 3s · 5s · 10s · 15s · 20s.
> Parametr nabiera pełnego znaczenia dopiero z **mapami czasowymi** (roadmapa). Przy
> obecnej, statycznej saliency służy do wyboru klatek wizualizacji statycznej. **[?]**
- **Zakres raportu:** wybór komponentów raportu (lista w §11).
### 7.3. Krok 3 — Studio
Edycja warstwy semantycznej obrazu przed analizą:
- **Obiekty** — użytkownik zaznacza obszary i nazywa je **lub** korzysta z **identyfikacji
AI** (LLaVA → Grounding DINO), a następnie koryguje/usuwa. Słownik kategorii: Architektura,
Celebryci, Chemia, Edukacja, Elektronika, Finanse, Handel, Kosmetyki, Logistyka, Militaria,
Motoryzacja, Osoby, Przemysł, Przyroda, Sport, Ubrania, Zwierzęta, Żywność, Inne…
- **AOI** — analogicznie: ręcznie lub AI, z korektą. Słownik AOI: CTA, Dowód społeczny,
Key Visual, Kod QR, Kolorystyka, Kontakt, Korzyści, Kupon, Layout, Logo, Mapa, Nagłówek,
Narracja, Numer katalogowy, Regulaminy, Slogan, Ton komunikacji, Treść, Typografia, Tło…
> **Obiekt vs AOI:** obiekty to *co jest na obrazie* (detekcja treści), AOI to *obszary o
> znaczeniu marketingowym* (jednostka analizy uwagi). Pipeline pewnie wykrywa **obiekty**;
> **AOI semantyczne** wymagają albo wskazania przez użytkownika, albo dodatkowego mapowania
> obiekt→AOI. **[?]**
### 7.4. Krok 4 — Raport
Generowanie i prezentacja wyników — szczegóły w §11.
### 7.5. Logi eksperymentu
Super administrator po wejściu w eksperyment widzi pełne logi: wszystkie działania i
ustawienia użytkownika oraz **wszystkie dane wysłane do i odebrane z modeli AI** (audyt
predykcji — istotne przy wymianie modeli, §10).
---
## 8. Katalog celów analiz kognitywnych
Mechanizm „cel zamiast metryk" (§2.3). Pełne opisy 15 celów znajdują się w
`Opis celów analiz kognitywnych.md`; poniżej **tabela zbiorcza** jako referencja
konfiguracyjna (źródło prawdy dla domyślnego doboru typu analizy i metryk).
| # | Cel (nazwa UI) | Rekom. analiza | Sygnał kluczowy |
|---|---|:--:|---|
| 1 | Która kreacja lepiej sprzedaje? | ET+FC | uwaga na produkt/benefit/CTA + niskie napięcie |
| 2 | Czy odbiorca widzi najważniejszy przekaz? | ET (opc. ET+FC) | zauważalność i czas dotarcia do komunikatu |
| 3 | Czy CTA działa? | ET+FC | widoczność CTA + brak oporu emocjonalnego |
| 4 | Która kreacja zostaje w pamięci? | ET+FC | uwaga + pobudzenie (High Arousal) |
| 5 | Która kreacja najlepiej buduje markę? | ET+FC | uwaga na logo + pozytywna walencja |
| 6 | Czy kreacja budzi negatywne reakcje? | FC (opc. ET+FC) | Negative Valence + High Arousal na elemencie |
| 7 | Czy przekaz jest zrozumiały? | ET (opc. ET+FC) | logiczna ścieżka, brak chaosu/powrotów |
| 8 | Czy kreacja działa od pierwszych sekund? | ET+FC | pierwsza fiksacja + impuls emocjonalny 13s |
| 9 | Czy kreacja angażuje, czy jest obojętna? | FC (opc. ET+FC) | aktywacja vs Low Arousal / Neutral |
| 10 | Który styl komunikacji działa lepiej? | ET+FC | rozkład uwagi tekst/obraz + profil emocji |
| 11 | Które opakowanie lepiej przyciąga klienta? | ET+FC | marka/wariant/benefit + atrakcyjność |
| 12 | Czy ekran prowadzi użytkownika do celu? | ET+FC | ścieżka do akcji + komfort/frustracja |
| 13 | Która kreacja najlepiej pasuje do grupy docelowej? | ET+FC | różnice między segmentami |
| 14 | Która kreacja jest najbezpieczniejsza? | ET+FC | niska negatywność/ambiwalencja, czytelność |
| 15 | Która kreacja najbardziej się wyróżnia? | ET+FC | siła pierwszej fiksacji + aktywacja |
**Zasada interpretacji wspólna dla wszystkich celów:** raport rozróżnia warianty
**pozytywne / neutralne / ryzykowne** (np. „wyróżnialność pozytywna" vs „ryzykowna"),
a rekomendacja zależy od **kontekstu kampanii** (performance vs wizerunek) i **grupy docelowej**.
---
## 9. Warstwa AI — proces analizy
Sekcja opiera się na `Specyfikacja-procesu-AI.md` — opisie logiki procesu niezależnym od
narzędzia orkiestrującego. Proces jest **bezstanowy**: jedno wejście (obraz) → jeden komplet wyników.
### 9.1. Pipeline i usługi
```
Wejście: obraz (PNG/JPEG)
│ preprocessing → bytes + base64 + mime + (w,h)
┌──────────────┼───────────────┬───────────────┬───────────────┐
▼ (łańcuch A, sekwencyjny) ▼ (B) ▼ (C) ▼ (D)
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐
│ LLaVA │ etykiety │ DeepGaze │ │ UNISAL │ │ ASM (PNS) │
│ (VLM) │───┐ │(saliency)│ │(saliency)│ │ 2× saliency │
└──────────┘ ▼ └────┬─────┘ └────┬─────┘ └──────┬───────┘
┌─────────────┐ │ │ │
│ Grounding │ └──────────────┴────────────────┘
│ DINO (boxy) │ │ agregacja saliency
└─────┬───────┘ ▼
▼ ┌─────────────────────────────┐
detekcja obiektów │ Artefakty: overlay boxów · │
│ nakładka heatmapy (suwak) · │
│ porównanie 2×2 (walid. krzyż)│
└─────────────────────────────┘
```
**Pięć modeli / procesów (wg specyfikacji procesu AI):**
| # | Model | Proces | Endpoint (wzorzec) | Auth |
|---|---|---|---|---|
| 1 | **LLaVA** | ekstrakcja typów obiektów (open-vocabulary) | `/llava-api/v1/get-object-types` | Bearer |
| 2 | **Grounding DINO** | detekcja / bounding boxy | `/grounding-dino-api/v1/get-objects-bboxes` | Bearer |
| 3 | **DeepGaze** | predykcja saliency | `/v1/predict-heatmap` | Bearer |
| 4 | **UNISAL** | predykcja saliency (porównawcza) | `/unisal/process-image?as_base64=true` | X-API-Key |
| 5 | **ASM (PNS)** | 2× saliency, warunkowane promptem marketingowym | `/asmModel/process-image?prompt=…` | X-API-Key |
**Zależności i równoległość:**
- Łańcuch A jest **sekwencyjny** (Grounding DINO potrzebuje etykiet z LLaVA).
- Gałęzie A, B, C, D są **niezależne** → wykonywane **równolegle**; czas ≈ najwolniejsza gałąź.
- **Odporność:** awaria jednej gałęzi nie przerywa całości — degradacja stopniowa
(`return_exceptions` / per-task `try/except`); pozostałe artefakty powstają normalnie.
### 9.2. Model danych wyników (z §4 specyfikacji)
```
AnalysisResult {
image : ImageInput { bytes, base64, mime, width, height }
detection : DetectionResult { objects: [{ object_type, bbox_xyxy, score }] }
saliency : SaliencyMap[] // deepgaze, unisal, asm_detailed, asm_general
}
```
### 9.3. Artefakty wizualizacyjne (warstwa prezentacji)
1. **Overlay detekcji** — ramki per obiekt, kolor per typ, podpis `typ + score%`,
pozycje w procentach wymiarów (responsywność).
2. **Nakładka heatmapy** — pojedyncza mapa uwagi + suwak przezroczystości 0100%.
3. **Porównanie 2×2** — DeepGaze / UNISAL / ASM detailed / ASM general; wspólny suwak,
technika „inwersji" (blend luminancji: biel = wysoka uwaga → efekt reflektora).
### 9.4. Mapowanie: technologie badawcze (produkt) ↔ usługi AI (pipeline)
| Warstwa produktu | Realizacja w AI | Status |
|---|---|:--:|
| **Eye Tracking** — mapy uwagi, udział uwagi na AOI | DeepGaze · UNISAL · ASM (saliency statyczna) | ✅ jest |
| Rozumienie treści — obiekty, opis | LLaVA + Grounding DINO | ✅ jest |
| **ET czasowy** — mapy dynamiczne 120s | saliency w interwałach czasu | 🟡 roadmapa |
| **ET** — ścieżki fiksacji (scanpath) | model scanpath | 🟡 roadmapa |
| **Facial Coding** — walencja, pobudzenie, frustracja… | mapa emocji | 🟡 roadmapa |
| **Analiza kognitywna** — rekomendacja z uzasadnieniem | warstwa interpretacji (LLM nad metrykami) | 🔵 do zbudowania |
| **Predykcje per grupa docelowa** | warunkowanie modelu demografią | 🟡 do zaprojektowania |
> Legenda: ✅ objęte specyfikacją procesu (modele dostępne) · 🟡 roadmapa (§11 specyfikacji) · 🔵 nowy komponent.
### 9.5. Macierz wykonalności metryk w MVP (najważniejsza sekcja inżynierska)
Większość metryk z `Opis celów…` wymaga komponentów, których **nie ma** w obecnym
pipeline. To rozgraniczenie jest krytyczne dla zakresu MVP.
| Metryka (z celów) | Czego wymaga | Wykonalne w MVP? |
|---|---|:--:|
| Udział uwagi na AOI (%) | saliency statyczna ∩ AOI | ✅ tak |
| Ranking AOI wg uwagi | saliency ∩ AOI | ✅ tak |
| Mapa cieplna statyczna | saliency | ✅ tak |
| Porównanie kreacji wg uwagi | saliency × N kreacji | ✅ tak |
| Czas do pierwszej fiksacji | scanpath (wymiar czasu) | ❌ roadmapa |
| Kolejność kontaktu z AOI / „ścieżka AOI" | scanpath | ❌ roadmapa* |
| Liczba powrotów wzroku | scanpath | ❌ roadmapa |
| Mapy dynamiczne 120s | saliency czasowa | ❌ roadmapa |
| Ścieżki fiksacji | model scanpath | ❌ roadmapa |
| Positive/Negative Valence, Arousal, Frustration, Ambivalence, Comfort… | model emocji (FC) | ❌ roadmapa |
| Różnice metryk między segmentami | warunkowanie demografią | ❌ do zaprojektowania |
\* „Ścieżkę AOI" można w MVP **przybliżyć** rankingiem AOI wg intensywności saliency
(kolejność „od najsilniejszego"), zaznaczając, że to heurystyka, a nie prawdziwa sekwencja
fiksacji. **[?]**
**Wniosek:** w MVP z obecnym pipeline'em wiarygodnie policzymy metryki **udziału uwagi na
AOI** i ich **porównanie między wariantami** (cele silnie ET, np. #2, #7, częściowo #1, #3).
Cele oparte na **emocjach** (#6, #9) i **wymiarze czasu** (#8) wymagają roadmapowych modeli
FC / saliency czasowej, albo świadomego **ograniczenia zakresu MVP**. → decyzja właściciela
produktu (`Pytania do koncepcji.md`).
---
## 10. Wymienialność modeli AI (Proces ↔ Model)
Wymaganie z `info.md`: w MVP 1.0 musi istnieć możliwość **zmiany modelu realizującego dany
proces** na inny (np. publiczny **Gemini**, **Opus**), z poziomu panelu administracyjnego.
### 10.1. Zasada: rozdzielenie procesu od modelu
```
PROCES (stały, zamknięta lista) MODEL (wymienny) USŁUGA (endpoint)
───────────────────────────── ───────────────── ─────────────────
Ekstrakcja typów obiektów ──► LLaVA ──► http://{LLaVA}/llava-api/...
╲─► [Gemini Vision] ──► adapter → API Gemini
Detekcja obiektów (boxy) ──► Grounding DINO ──► .../get-objects-bboxes
Predykcja saliency #1 ──► DeepGaze ──► /v1/predict-heatmap
Predykcja saliency #2 ──► UNISAL ──► /unisal/process-image
Predykcja saliency (centralna) ──► ASM (PNS) ──► /asmModel/process-image
[Mapa emocji — roadmapa] ──► [FC model] ──► …
```
Każdy **proces** ma zdefiniowany **kontrakt** (wejście: obraz [+ parametry]; wyjście:
ustandaryzowany typ — `labels[]`, `bboxes[]`, `SaliencyMap`). Model jest podpięty przez
**adapter** tłumaczący kontrakt procesu na konkretne API. Dzięki temu podmiana
LLaVA→Gemini nie zmienia reszty pipeline'u.
### 10.2. Wzorzec adaptera
Aby podpiąć nowy model (np. Gemini/Opus) trzeba dostarczyć **adapter** = kod realizujący:
1. **mapowanie wejścia** procesu → format żądania modelu (multipart / JSON, prompt, parametry),
2. **wywołanie** (URL, schemat auth: Bearer vs X-API-Key vs klucz dostawcy),
3. **mapowanie wyjścia** modelu → ustandaryzowany typ procesu (np. `labels[]`).
To realizuje zdanie z `info.md`: „powinien być dodany kod, który realizuje usługę".
Każdy proces = interfejs; każdy model = jego implementacja (adapter).
### 10.3. Panel „Proces i modele AI" (rozszerzenie)
Ekran administracyjny prezentuje **zamkniętą listę procesów** i pozwala dla każdego:
- wybrać **aktywny model** (z listy zarejestrowanych adapterów),
- skonfigurować **endpoint / klucze / parametry** (host, token, prompt ASM, `max_objects`,
`temperature`…) — przechowywane jako sekrety (Supabase / vault), nie w kodzie,
- wykonać **test połączenia** (health-check) i podgląd przykładowego wyniku,
- (zalecane) **wersjonować** przypisanie model↔proces, aby logi eksperymentu wskazywały,
którym modelem policzono dany raport (powtarzalność, audyt — §7.5).
> W MVP konfiguracja modeli (adresy URL, token/klucz, parametry) jest zarządzana z panelu
> administracyjnego i przechowywana w magazynie sekretów (Supabase / vault), nie w kodzie.
### 10.4. Modele własne vs publiczne
- **Własne (mikroserwisy):** LLaVA, Grounding DINO, DeepGaze, UNISAL, ASM (PNS) — pełna
kontrola, model ASM jest rdzeniem przewagi produktu.
- **Publiczne (API dostawców):** Gemini, Opus (Anthropic) i inne — przydatne dla procesów
„rozumienia treści" (opis kreacji, lista obiektów) jako alternatywa/fallback dla LLaVA.
**Uwaga:** modele saliency (predykcja uwagi) i FC są wyspecjalizowane — publiczne LLM-y
ogólnego przeznaczenia ich **nie zastąpią 1:1**; wymienialność ma największy sens dla
procesów językowo-wizualnych (etykiety, opis), a nie dla rdzennej predykcji uwagi. **[?]**
---
## 11. Struktura i generowanie raportu
### 11.1. Komponenty raportu i ich źródła (macierz śledzenia)
| Komponent raportu | Źródło danych (proces/model) | Status MVP |
|---|---|:--:|
| Opis ogólny kreacji | LLaVA / opis (ew. ASM prompt) | ✅ |
| Lista obiektów | LLaVA + Grounding DINO | ✅ |
| Lista i opis AOI | użytkownik (Studio) ± mapowanie z obiektów | 🟡 częściowo |
| Mapy cieplne — statyczne (1/3/5/10/15/20s) | DeepGaze/UNISAL/ASM (1 mapa = 1 klatka) | ✅ (jedna klatka)* |
| Mapy cieplne — dynamiczne 120s | saliency czasowa | 🟡 roadmapa |
| Ścieżki fiksacji — statyczne/dynamiczne | model scanpath | 🟡 roadmapa |
| Ścieżka AOI | scanpath (lub przybliżenie rankingiem) | 🟡 / heurystyka |
| Analiza kognitywna (rekomendacja) | warstwa interpretacji (cel + metryki → tekst) | 🔵 do zbudowania |
| Tabela porównawcza z metrykami | warstwa metryk (saliency ∩ AOI) | ✅ (zakres ET-static) |
\* obecne modele zwracają **jedną** mapę saliency; „statyczne 1/3/5/10/15/20s" są realne
dopiero z saliency czasową — w MVP można pokazać jedną mapę zagregowaną. **[?]**
### 11.2. Warianty A / AB / ABC
- Komponenty raportu powielają się per kreacja: **AB** → 2 kreacje, **ABC** → 3 kreacje.
- Sednem jest **zestawienie porównawcze** i rekomendacja „który wariant wygrywa i dlaczego",
z rozbiciem na zwycięzcę ogólnego i zwycięzcę dla grupy docelowej (cel #13).
### 11.3. Eksport i udostępnianie
- **Eksport:** PDF (raport). Use case 2 dodaje **XLS** (tabele metryk) i **AVI** (dynamiczne
mapy/ścieżki) — zależne od roadmapy czasowej. **[?]**
- **Udostępnianie:** wg uprawnień projektu; **link do eksperymentu** (Editor / Viewer).
Doprecyzować: link publiczny czy wymaga konta. **[?]**
- **Klonowanie:** „Zmień ten eksperyment" / „Edytuj" → prośba o nową nazwę → przekierowanie
do Kroku 1 z prekonfiguracją z eksperymentu bazowego (wersjonowanie — §12, [?]).
---
## 12. Propozycja modelu danych (Supabase)
Szkic encji do walidacji (nazwy robocze). Klucze obce uproszczone.
```
organizations(id, name, status[active|inactive|archived], credits_balance,
storage_quota_mb, created_at)
users(id, email, display_name, locale, created_at)
memberships(id, org_id, user_id, role[admin|member|guest]) // M:N user↔org
projects(id, org_id, name, type[ET|FC|ET_FC], created_by, created_at)
project_permissions(id, project_id, user_id, role[editor|viewer])
creatives(id, org_id, project_id?, storage_path, mime, width, height, created_by)
experiments(id, project_id, name, goal_id, test_type[A|AB|AC|BC|ABC],
analysis_type[ET|FC|ET_FC], observation_time_s, report_scope jsonb,
target_group jsonb, base_experiment_id?, status, created_by, created_at)
experiment_creatives(id, experiment_id, creative_id, slot[A|B|C])
aois(id, experiment_id, creative_id, name, category, polygon jsonb, source[ai|user])
objects(id, experiment_id, creative_id, object_type, bbox_xyxy jsonb, score, source)
ai_runs(id, experiment_id, process_key, model_key, request jsonb, response_ref,
status, duration_ms, created_at) // audyt: który model, jaki wynik
saliency_maps(id, ai_run_id, source[deepgaze|unisal|asm_detailed|asm_general],
storage_path, mime)
metrics(id, experiment_id, creative_id, aoi_id?, key, value) // policzone wskaźniki
reports(id, experiment_id, pdf_path?, xls_path?, generated_at)
ai_processes(key, name, contract) // zamknięta lista procesów
ai_models(key, name, kind[own|public], adapter, config_ref) // rejestr modeli
process_model_binding(process_key, model_key, active, version) // Proces ↔ Model (§10)
audit_logs(id, org_id?, user_id?, action, target, payload jsonb, created_at)
```
Kluczowe dla wymagań:
- `ai_runs` + `process_model_binding` → realizują **wymienialność modeli** i **audyt
predykcji** (logi eksperymentu, §7.5).
- `base_experiment_id` → realizuje **klonowanie** eksperymentu.
- `target_group jsonb` → przechowuje profil grupy (wejście dla przyszłego warunkowania).
---
## 13. Kredyty, subskrypcje, przestrzeń dyskowa
Z Koncepcji 0.1 wynika istnienie **kredytów/coinów** (globalnych i miesięcznych) oraz
**przestrzeni dyskowej** zależnej od subskrypcji i rozszerzalnej za punkty. Wymaga to
doprecyzowania modelu rozliczeń — propozycja ramowa (do potwierdzenia, **[?]**):
| Element | Propozycja |
|---|---|
| Naliczanie za eksperyment | koszt zależny od typu analizy (ET < FC < ET+FC) i liczby kreacji (A/AB/ABC) |
| Kredyty miesięczne | pula odnawialna w cyklu rozliczeniowym (zarządzana przez Super Admina) |
| Kredyty globalne | pula dokupiona, nieodnawialna |
| Przestrzeń dyskowa | limit z planu; rozszerzenie za kredyty wg cennika przestrzeni |
| Plany subskrypcji | **niezdefiniowane w źródłach** — wymagają osobnej specyfikacji |
Decyzje otwarte: cennik (ile kredytów za co), polityka wygasania kredytów, obsługa
przekroczenia limitów, fakturowanie. → `Pytania do koncepcji.md`.
---
## 14. Logi i audyt
Dwa poziomy:
- **Logi systemowe** (panel administracyjny) — filtrowanie po użytkowniku, organizacji,
zakresie dat, typie operacji.
- **Logi eksperymentu** (Super Admin) — pełen ślad: działania i ustawienia użytkownika +
**wszystkie dane wysłane/odebrane z modeli AI**. Powiązane z `ai_runs` (§12): każda
predykcja zapisuje proces, model, żądanie i referencję odpowiedzi → audyt i powtarzalność,
szczególnie po podmianie modelu (§10).
---
## 15. Bezpieczeństwo, prywatność, zgodność
- **Brak danych respondentów:** produkt generuje **predykcje AI**, nie zbiera danych od
realnych osób — to istotnie obniża ryzyko RODO względem klasycznego eye-trackingu.
Dane osobowe ograniczają się do **kont użytkowników** (auth Supabase).
- **Własność treści:** kreacje klientów to materiały chronione — kontrola dostępu na poziomie
organizacji/projektu; izolacja danych między organizacjami (RLS w Supabase — zalecane).
- **Sekrety:** klucze i hosty modeli poza kodem (vault / zmienne środowiskowe), nie w repo.
- **Dane wysyłane do modeli publicznych:** przy podmianie na Gemini/Opus kreacje opuszczają
infrastrukturę własną → wymagana zgoda klienta i zapis w politykach. **[?]**
- **Profile wrażliwe:** kategoria **neuroatypowość** (ASD/ADHD/depresja) to dane wrażliwe
w warstwie *konfiguracji predykcji* (nie dotyczą realnych osób), ale komunikacja wyników
powinna unikać sugestii diagnostycznych. **[?]**
---
## 16. Internacjonalizacja
- **Języki UI w MVP 1.0:** polski, angielski (kolejne w następnych wersjach).
- **Język raportu / interpretacji kognitywnej:** powinien podążać za locale użytkownika —
warstwa interpretacji (LLM) generuje tekst w wybranym języku. **[?]**
- **Prompt ASM:** obecnie po angielsku (`"Describe the image in the style of a polished
marketing ad."`) — traktowany jako **parametr konfigurowalny** (nie stała), niezależny od
języka UI.
---
## 17. Przepływy użytkownika (use case'y)
### UC1 — Eksperyment ABC bez zmian w Studio (obiekty/AOI z AI)
1. Rejestracja → 2. Logowanie → 3. Utworzenie organizacji → 4. Dodanie kreacji do Galerii →
5. Nowy projekt → eksperyment: cel + grupa docelowa, typ **ABC** + 3 kreacje, parametry,
**bez** zmian w Studio → 6. Generowanie raportu → 7. Eksport **PDF** → 8. Udostępnienie
(Editor/Viewer) → 9. „Zmień ten eksperyment" → nowa nazwa → Krok 1 z prekonfiguracją.
### UC2 — Eksperyment ABC ze zmianami w Studio + segment
Jak UC1, z konkretną grupą docelową (np. Młodzież / Kobieta / miasto do 19 tys. / wyższe /
dochód średni / neurotypowy), celem „Która kreacja lepiej sprzedaje?", **ET+FC**, 3 kreacje,
obiekty/AOI wskazane przez AI (z możliwą korektą), eksport **PDF + XLS + AVI**, udostępnienie
1× Editor i 1× Viewer, oraz „Edytuj" jako baza kolejnego eksperymentu.
> UC2 uruchamia komponenty roadmapowe (FC, XLS metryk, AVI dynamiczne) — w MVP zrealizowany
> w zakresie dostępnych metryk ET-static, z resztą oznaczoną jako „wkrótce". **[?]**
---
## 18. Zakres MVP 1.0 vs roadmapa
### ✅ W zakresie MVP 1.0
- Platforma SaaS: organizacje, role/uprawnienia, projekty, galeria (org + projekt), eksperymenty.
- Kreator eksperymentu (4 kroki), słowniki celów / obiektów / AOI / grup docelowych.
- Studio: ręczne i AI-wspomagane obiekty/AOI (LLaVA + Grounding DINO).
- Pipeline AI: detekcja obiektów + **saliency statyczna z 3 modeli** (DeepGaze, UNISAL, ASM)
z walidacją krzyżową i wizualizacjami (overlay, nakładka, porównanie 2×2).
- Metryki **udziału uwagi na AOI** i porównanie wariantów; raport + eksport PDF.
- Panel administracyjny: organizacje, użytkownicy, **wymiana modeli AI (Proces ↔ Model)**, logi.
- Warstwa interpretacji kognitywnej (rekomendacja z uzasadnieniem) — **do zbudowania**, ale
należy do rdzenia wartości MVP (bez niej raport jest zbiorem liczb). **[?] priorytet.**
### 🟡 Roadmapa (kolejne wersje — §11 specyfikacji procesu AI)
- **Facial Coding / mapa emocji** (walencja, pobudzenie, frustracja, ambiwalencja, komfort…).
- **Mapy cieplne dynamiczne 120s** (saliency w interwałach czasu).
- **Ścieżki fiksacji (scanpath)** i pełna **„ścieżka AOI"** z sekwencją czasową.
- **Predykcje różnicowane per grupa docelowa** (warunkowanie modelu demografią).
- Eksporty **XLS / AVI**, kolejne języki UI.
### 🔑 Rekomendacja zakresowa
MVP powinno **dowieźć pętlę wartości** dla podzbioru celów silnie ET (np. #2 „Czy odbiorca
widzi przekaz?", #7 „Czy przekaz jest zrozumiały?", częściowo #1/#3) — tam obecny pipeline
daje wiarygodne metryki. Cele zależne od emocji i czasu zaprezentować jako „wkrótce", aby nie
obiecywać wyników, których pipeline jeszcze nie liczy. Ostateczna lista celów MVP →
decyzja właściciela produktu.
---
*Dokument roboczy v0.2. Miejsca [?] wymagają decyzji — zebrane w `Pytania do koncepcji.md`.*