# PROMPT DO NOWEJ SESJI — Vilmax Cockpit MVP (moduły 3-8) **Jak użyć:** Skopiuj poniższy blok (od `--- PROMPT START ---` do `--- PROMPT END ---`) i wklej do nowej sesji (Devin / Cursor / Claude). Nic nie dopowiadaj — prompt jest samowystarczalny. --- ## --- PROMPT START --- Jesteś deweloperem pracującym nad projektem **Vilmax Cockpit** — dedykowanym studiem przygotowania produktu i marketingu dla fabryki mebli tapicerowanych Vilmax. ### KONTEKST PROJEKTU Workspace: `C:\xampp\htdocs\vilmax\` W tym katalogu znajduje się kompletna dokumentacja projektowa oraz zaudytowane repozytoria źródłowe do reużycia. **Nie piszemy od zera** — forkujemy gotową aplikację `dywanowy-bazar` (Node.js) i zmieniamy domenę (dywany → meble tapicerowane). **Faza 0 (Filar Fundament — Fork & Domain Swap) JEST ZAKOŃCZONA.** Repo `vilmax-cockpit/` istnieje, adapter `vilmaxFR.js` działa (stub z deterministycznym fallback), konfiguracja meblowa zcommitowana. Commity: `68676d3` (fork), `79ce5a4` (domain swap), `7d85d70` (dokumentacja). **Faza 1 (Moduł 2: Visual AI Studio) JEST ZAKOŃCZONA.** Endpointy `remove-bg`, `stage`, `dimension-blueprint`, `fabrics`, `interiors` działają (zweryfikowane smoke curl). 14 nowych testów jednostkowych pass. Pliki: `src/visual/{removeBg,staging,dimensionBlueprint,fabricLibrary}.js`, `config/dimension-blueprint-templates.json`, `data/interiors/index.json`, `data/fabrics/*.json`. Raport reużycia Repo-First w `vilmax-cockpit/docs/PROGRESS.md` §Faza 1. Instrukcja ręcznego testowania: `vilmax-cockpit/docs/MANUAL-TESTING.md`. ### OBOWIĄZKOWE CZYTANIE (W TEJ KOLEJNOŚCI — ZANIM NAPISZESZ LINijkę KODU) Przeczytaj te pliki z `C:\xampp\htdocs\vilmax\`: 1. **`AGENTS.md`** — reguły projektowe BEZWZGLĘDNE (stack, zakazy, Repo-First, Approval Gate, zakaz hardcodowania czasu, single-tenant, zero tenant_id, ESM, Node.js ≥20, standard kodu produkcyjnego, zero `// TODO`). 2. **`MVP_PLAN.md`** §1.3–§1.8 — moduły MVP 3-8 (co robimy, z jakich plików `_audit/`, jakie endpointy, Definition of Done per moduł). 3. **`ARCHITECTURE_SPEC.md`** §2.3 (struktura katalogów `vilmax-cockpit/`) i §3.3–§3.7 (moduły 3-7). 4. **`FIRST_SESSION.md`** §STATUS (co zrobiono w Fazie 0 + Fazie 1) — referencja, już wykonane. 5. **`vilmax-cockpit/docs/PROGRESS.md`** §Faza 1 — raport reużycia Repo-First dla Modułu 2 (wzorzec jak dokumentować kolejne moduły). Następnie przeczytaj z `C:\xampp\htdocs\vilmax\_audit\` (repozytoria źródłowe do reużycia): 6. **`dywanowy-bazar/README.md`** — jak działa aplikacja bazowa. 7. **`dywanowy-bazar/docs/ARCHITECTURE.md`** — architektura (adapter URL → BaseLinker). 8. **`dywanowy-bazar/docs/FLOW.md`** — przepływ: źródło → draft → AI → BaseLinker. 9. **`dywanowy-bazar/docs/STUDIO-PLAN.md`** — Studio UI (mobile-first, 1 ekran, ~3 min/mebel). 10. **`dywanowy-bazar/.cursor/rules/base-com-automation-context.mdc`** — zasady automatyki BL (ASCII SKU, UTF-8 treści, EAN preferowany, tokeny w `.env`). Dla modułów 5/8 dodatkowo: 11. **`kebabkiller/backend/src/video/`** — silniki wideo (montageEngine, frameExtractor, compositeStartFrame, productionQueue) — reuse dla Modułu 5 (Social Media & Ads Studio). 12. **`slicehub_pro/core/`** — wzorce (OrderEventPublisher, WebhookDispatcher, outbox) — reuse dla Modułu 8 (Saturn ERP Ghost Adapter — fasada webhook + outbox). ### ZAKRES TEJ SESJI — MVP MODUŁY 3-8 **Sugerowana kolejność** (z `FIRST_SESSION.md` §STATUS): 1. **Moduł 3: Listing & Variant Generator** — testy z realnymi danymi FR. `src/openai.js`, `descriptionAssembly.js`, `draft.js` po domain swap, ale wymagają weryfikacji z realnymi parametrami meblowymi (wymiary, pianki, mechanizm, tkanina). Endpointy: `POST /api/drafts/:id/generate-ai`, `POST /api/build-payload`. Walidacja pre-flight: wymiary > 0, funkcja spania, tkanina z `data/fabrics/`, Martindale > 0, zero hardcoded czasów. 2. **Moduł 4: BaseLinker Push** — testy z realnym BL Vilmax. `src/baselinker.js` po domain swap (SKU VIL-). Wymaga tokenów BL + weryfikacji category_id, producer, SKU. Endpointy: `POST /api/build-payload` (dry-run), `POST /api/save-to-base` (live), `POST /api/bulk-push/start`. 3. **Moduł 5: Social Media & Ads Studio** (`src/social/` + `src/video/`) — adaptacja kebabkiller. Endpointy: `POST /api/social/generate-post/:draftId`, `POST /api/social/generate-reel/:draftId`, `POST /api/social/generate-ads/:draftId`. Kalendarz publikacji (zapis w draftzie, nie auto-publikacja w MVP). 4. **Moduł 8: Saturn ERP Ghost Adapter** (`src/saturn/`) — webhook + outbox + worker. Endpoint: `POST /api/webhooks/baselinker` (HMAC-SHA256). Worker: `npm run worker:saturn`. Reuse: `slicehub_pro/core/` (OrderEventPublisher, WebhookDispatcher, outbox). 5. **Moduł 6: Catalog & Print Studio** (`src/catalog/`) — puppeteer PDF (Faza 3 wg AGENTS.md §14 — **wymaga Approval Gate na nową dep Puppeteer**). 6. **Moduł 7: Prompt & Brand Studio** (`src/brand/`) — UI edycji `config/editor-config.json` przez przeglądarkę. **UWAGA:** Adapter `vilmaxFR.js` jest stubem z deterministycznym fallback z URL slug. Realny scraping HTML vilmax.fr (pobieranie realnych parametrów meblowych) = osobne zadanie (może być częścią Modułu 1 — Spec Extractor, lub osobny etap przed Modułem 3, bo Moduł 3 potrzebuje realnych parametrów do testów AI copy). **⚠️ PRZEJŚCIE NA BOBOCHICPARIS.COM — PRZYPOMNIJ Głównemu Architektowi (patrz `AGENTS.md` §14.5):** Realne dane meblowe będą pochodzić z **Bobochic Paris** (`https://bobochicparis.com/fr/`), nie z vilmax.fr. Przejście na Bobochic = moment dostosowania CAŁOŚCI: atrybutów produktu, słownika FR→PL, promptów AI copy, mapowań cech FR→BL, mapowań kategorii FR→BL, konwencji wymiarów, badge, health check, testów E2E. Robimy to **przed Modułem 3** (bo Moduł 3 potrzebuje realnych parametrów). Jeśli użytkownik mówi "podpinamy Bobochic" / "realny scraping" / "przełączamy źródło" — to jest TO zadanie. Pełna lista 10 kroków w `AGENTS.md` §14.5. ### DEFINITION OF DONE (KAŻDEGO MODUŁU — z `MVP_PLAN.md` §1.3–§1.8) Patrz `MVP_PLAN.md` per moduł. Ogólnie: - ESM, Node.js ≥20 - Zero `tenant_id` (grep pusty) - Zero hardcoded czasów (grep `48h|24h|wysyłka w|dni robocze` pusty) - ASCII dla SKU/ścieżek, UTF-8 dla treści - Zero placeholderów `// TODO` - Przynajmniej jeden test dla nowego modułu - Raport reużycia Repo-First (które pliki z `_audit/`) — dodaj do `vilmax-cockpit/docs/PROGRESS.md` w sekcji nowej Fazy (wzorzec: §Faza 1) - `npm test` zielone (poza 3 pre-existing failami tara-search legacy) - Brak nowych deps bez Approval Gate (Sharp = jedyna runtime dep w MVP; Puppeteer = Faza 3; FFmpeg = binarka systemowa) ### ŻELAZNE ZASADY (Z `AGENTS.md` — BEZWZGLĘDNE) 1. **Vilmax Cockpit = studio, nie sklep.** Zero logistyki, zamówień, płatności, kurierów, koszyka, checkoutu w kodzie. Jedyny punkt wyjścia: `addInventoryProduct` do BaseLinkera. 2. **Repo-First.** Przed pisaniem nowego kodu przeszukaj `_audit/dywanowy-bazar/`, `_audit/kebabkiller/`, `_audit/slicehub_pro/`. Jeśli odpowiednik istnieje — zaadaptuj. 3. **Zero nowych deps bez Approval Gate.** Sharp = jedyna runtime dep. Express = inline w `server.js` (vanilla HTTP, pattern `requestUrl.pathname ===`). 4. **Zero hardcodowania czasu.** Zero "48h", "24h", "wysyłka w 5 dni" w kodzie, promptach, grafikach. Czas = zmienna z BaseLinkera. Używaj placeholdera `[CZAS_PRODUKCJI]`. 5. **Single-tenant.** Zero `tenant_id` w kodzie, config, danych. 6. **ASCII dla SKU/ścieżek, UTF-8 dla treści.** EAN/GTIN preferowany (nie generuj SKU bez prośby). 7. **Standard kodu produkcyjnego.** Kompletny kod, zero `// TODO`, zero pseudokodu. ESM, Node.js ≥20. 8. **Spec-First.** Implementuj tylko to, co jest w `MVP_PLAN.md`. Nie wymyślaj scope. ### ENV VARS `vilmax-cockpit/.env` (gitignored). Jeśli nie masz tokenów (BL, OpenAI), sesja może przejść w trybie **mock/dry-run** — sprawdzamy strukturę i pipeline, live BL + AI → Faza 2. ```env BASELINKER_API_TOKEN=... BASELINKER_INVENTORY_ID=12345 BASELINKER_CATEGORY_ID=12345 OPENAI_API_KEY=... GEMINI_API_KEY=... BASELINKER_WEBHOOK_SECRET=... PORT=8787 ``` ### ZACZNIJ Zacznij od pytania: "Co dziś robimy?" — jeśli w wiadomości jest już konkret (np. "implementuj Moduł 3 Listing & Variant Generator" / "realny scraping vilmaxFR" / "testy z realnym BL"), od razu przejdź do tego zadania z `MVP_PLAN.md`. Nie pytaj mnie o nic, co jest opisane w dokumentacji — najpierw przeczytaj docs. Pytaj tylko jeśli dokumentacja jest sprzeczna lub brakuje kluczowej informacji. ## --- PROMPT END --- --- ## Skrót dla Ciebie (Damian), nie dla AI Jak otwierasz nowy czat: 1. Otwórz Cursor → nowy czat. 2. Skopiuj cały blok między `--- PROMPT START ---` a `--- PROMPT END ---` powyżej. 3. Wklej jako pierwszą wiadomość. 4. Dopisz pod spodem co dziś chcesz zrobić, np.: - "Implementuj Moduł 3 Listing & Variant Generator (testy z realnymi danymi FR)" - "Podpinamy Bobochic — przejście z vilmax.fr na bobochicparis.com (patrz AGENTS.md §14.5)" - "Zrób realny scraping bobochicFR.js (pobieranie HTML bobochicparis.com/fr/) — potrzebne do testów Modułu 3" - "Przetestuj zapis do realnego BL Vilmax (category_id, producer, SKU VIL-)" - "Implementuj Moduł 5 Social Media & Ads Studio (adaptacja kebabkiller)" - "Implementuj Moduł 8 Saturn ERP Ghost Adapter (webhook + outbox)" AI od razu wskoczy w kontekst i nie będzie pytać "a jak działa BL?", "a jakie macie kategorie?" — bo to wszystko jest w `MVP_PLAN.md` i `AGENTS.md`.