Przejdź do treści

Phase 3 — akceptacja

Dokument akceptacyjny dla Phase 3 refaktora strukturalnego TASK-262 (migracje automations/ + marketplace/), pakietu napraw owner-flagged (Phase 3a) oraz pozostałych prac operacyjno-dokumentacyjnych (Phase 3c).

Metadane

Pole Wartość
Identyfikator fazy Phase 3 — automations/ + marketplace/ migration + Phase 3a/3c
Zadania Backlog (refaktor) TASK-262.26 (Phase 3 automations/), TASK-262.27 (Phase 4 marketplace/), TASK-262.33 (cutover playbook)
Zadania Backlog (Phase 3a) TASK-267, TASK-268, TASK-269, TASK-270, TASK-290 (cennik2 wiring × 6 MP), TASK-148, TASK-160
Zadania Backlog (Phase 3c) TASK-149–158 (sekcje docs), TASK-159 (ten dokument), TASK-326 (docs refresh), TASK-248 (Temu re-auth monitoring), TASK-194.05/06, TASK-189, TASK-163
Data wdrożenia (dev) 2026-04-26 (refaktor) / 2026-04-27 (Phase 3a)
Data wdrożenia (prod) 2026-04-27 (jedno okno cutoveru)
Klasa ryzyka 🟡 średnia (Phase 3 automations/ — drain Pupprint) + 🔴 wysoka (Phase 4 marketplace/ — 10 schedules + OAuth)
Plan referencyjny backlog/docs/doc-083 (sekcje "Phase 3a / Phase 3b / Phase 3c"); backlog/docs/doc-086 (Sprint 1 owner-visible bugs verification log)

Zakres

Phase 3 — refaktor strukturalny

automations/ (TASK-262.26) — flowy, które nie należą do support/, infra/ ani marketplace/:

  • f/pupprint/f/automations/pupprint/
  • f/textiles/f/automations/textiles/
  • f/articles/f/automations/articles/
  • f/mail-campaign/f/automations/mail-campaign/ (Listmonk integration)

marketplace/ (TASK-262.27) — najszersza zmiana w epiku:

  • f/<mp>/ (allegro/amazon/ebay/erli/joom/temu/woocommerce) → f/marketplace/<mp>/
  • f/baselinker/f/marketplace/baselinker/
  • f/tokens/refresh_*f/marketplace/<mp>/refresh_token
  • f/tokens/refresh_allf/lib/marketplaces/refresh_all
  • f/customer_service/fetch_<mp>_* (per-MP fetchery z poprzedniej fazy) → f/marketplace/<mp>/fetchers/<typ>
  • Usunięcie martwego kodu: f/nexo/* (defunct), f/marketplace/woocommerce/sync_products_v2.ts (orphan, 688 LOC).

Phase 3a — naprawy owner-flagged przed cutoverem

Pakiet pięciu napraw zgłoszonych przez właściciela na Forgejo (#5/#6/#8/#9/#10/#28) plus rozszerzenie pricing module:

  • TASK-267 — CS bug pack (sent messages / attachments / per-operator filter) — Forgejo #5/#6/#9/#10.
  • TASK-268 — SMTP password validation przy dodawaniu skrzynki email — Forgejo #7.
  • TASK-269 — pricing rule (cennik1 + cennik2) × współczynnik w canonical pricing module + UI we wszystkich 7 marketplace'ach — Forgejo #8.
  • TASK-270 — filter "Wszystkie wystawione" bez wymuszania pre-pick rodziny — Forgejo #28.
  • TASK-290 + 6 podzadań — wiring cennik2 we wszystkich 6 nie-Allegro flow Windmill (eBay/Amazon/Erli/Joom/Temu/Woo).

Phase 3c — pozostałe prace ops/docs (post-cutover, parallel)

Operacyjne:

  • TASK-326 — docs refresh: FAQ status sync + services.md deploy (2026-05-01).
  • TASK-248 — Temu 90-day expiry monitoring + re-auth nudge (deadline 2026-07-23).
  • TASK-194.05/06 — BuySpace backup restore drill + HTTP health probe.
  • TASK-189 — migracja 6 hardcoded /api/w/dev/ callsites do $lib/windmill helpers.
  • TASK-163 AC#3 — single-tenant trust-boundary statement w deployment README (decision-025).

Dokumentacja (pod TASK-271 umbrella):

  • TASK-149 — Roadmap docs section.
  • TASK-150 — Customer-service docs section.
  • TASK-151 — Operations docs section.
  • TASK-152 — Shop section (folds in TASK-144 audit).
  • TASK-154 — Getting-started.
  • TASK-155 — Service inventory (uslugi.md, zamyka 9 zgłoszeń "what was this?").
  • TASK-156 — Support / SLA.
  • TASK-158 — Listings per-marketplace (8 plików).
  • TASK-160 — Roadmap reality update.
  • TASK-159 — Phase 1/2/3 sign-off captures (ten dokument).

Decyzje zamknięte

  1. Sekwencja: Phase 3a → Phase 3b → Phase 3c równolegle z dokumentacją — pierwotnie zaplanowano cutover natychmiast po Phase 1+2; sekwencja zrewidowana 2026-04-27 (doc-083), aby naprawy owner-flagged zostały wdrożone PRZED cutoverem. Rezultat: właściciel od dnia 1. testów własnych ma stabilną prod bez "find bug → wait for deploy → retest" cykli.
  2. Cutover w jednym oknie — Phase 1, 2, 3 wszystkie wdrożone produkcyjnie 2026-04-27 jednym wmill sync push --workspace prod + npx convex deploy --env-file .env.prod. 901 zmian Windmill, schemat Convex bez diffu (tylko ścieżki).
  3. Schedules reconcile out-of-bandwmill.yaml ma includeSchedules: false; 10 starych harmonogramów usuniętych przez curl DELETE, 14 nowych utworzonych przez curl POST (skrypt w cutover playbook TASK-262.33).
  4. TASK-148 / TASK-160 zamknięte jako out-of-scope (UI add/edit dla roadmap nie potrzebny — roadmap to artefakt transparentny).
  5. TASK-292 — bug eBay/Amazon fetcher Windmill bundling: 4 harmonogramy sfetchowane wyłączone post-cutover; awaiting import-style refactor.
  6. Owner verifies listings in prod from now on — sandbox testing po stronie wykonawcy zakończony; właściciel weryfikuje listingi w produkcji (cytat oferty: "marketplace listing testing excluded").

Zależności

  • Phase 1 (TASK-262.24) + Phase 2 (TASK-262.25) muszą być na master (były od 2026-04-26).
  • Pre-flight przed Phase 3b: TASK-262.34 (scripts/seed-prod.py rewrite), TASK-276 (f/support/imap_fetcher.py import cleanup).
  • doc-084 audit fixes (TASK-291) — wykryte podczas Phase 3a, 4 znaleziska, 3 wdrożone pre-cutover.

Kryteria akceptacji

Część A — refaktor automations/ + marketplace/

# Kryterium Status Dowód
A1 Migracja f/automations/* zakończona TASK-262.26 — commit 98ff1fd
A2 Migracja f/marketplace/* zakończona (7 MP + baselinker) TASK-262.27 — commit cf83429
A3 f/lib/marketplaces/refresh_all utworzone TASK-262.27 — commit cf83429
A4 f/nexo/* (defunct) + sync_products_v2.ts (orphan, 688 LOC) usunięte TASK-262.27; doc-084 audit fix #4 (commit a3cff77)
A5 Phase 5 lib/ extractions + Phase 6 per-MP listing flow decomposition + Phase 7 listing observability TASK-262.28 (ebf18c7), TASK-262.29.* (Phase 6, 7 commits), TASK-262.30 (455da6f)
A6 Phase 8 scenario builder Test-this-node preview TASK-262.31 — commit c95db17
A7 Phase 9 ARCHITECTURE.md rewrite TASK-262.22 — commit c80a250
A8 Phase 10 CS scenario builder docs TASK-262.16 — commit 8cb657f
A9 Cutover prod 2026-04-27 — 901 zmian Windmill, 10 schedules deleted / 14 created TASK-262.33 final summary
A10 Wszystkie 13 włączonych harmonogramów firing po cutoverze (potwierdzone via /jobs/list) TASK-262.33 — "multiple success=true runs across dispatcher, imap_fetcher, pupprint flush, token refreshes"

Część B — Phase 3a (owner-visible bug fixes)

# Kryterium Forgejo Status Dowód
B1 TASK-267 — sent messages widoczne, attachments, per-operator filter #5/#6/#9/#10 commit 7020b61; weryfikacja prod doc-086
B2 TASK-268 — SMTP password validation na dodawaniu skrzynki #7 commit 1f35abe; verify_smtp_credentials.py deployed
B3 TASK-269 — (cennik1 + cennik2) × współczynnik reguła w canonical UniversalPricingModule + 7 ofert UI #8 commit 1c6d809; doc-084 fix #2 (2350dd5/b1d61d1/ed2ae8c/a3cff77)
B4 TASK-270 — "Wszystkie wystawione" filter bez family pre-pick #28 commit 1c6d809; ALL_LISTINGS_FAMILY_KEY + FamilySinglePicker.allowAllListings
B5 TASK-290 — cennik2 wired w 6 nie-Allegro flow Windmill #8 (ogon) commits df280cb, a4f033e, 8a7c78b, 51ba352, 03e11d4, bf17f03, c9eba3c
B6 doc-084 audit #1 (HIGH) — customer_contact persisted obok customer_name commit 2350dd5 (pre-cutover hotfix)
B7 TASK-148 / TASK-160 zamknięte jako out-of-scope (roadmap = transparent artifact) TASK-279 implementation notes
B8 Sprint 1 hotfixy (Sent folder PL locale TASK-316.03, account_id auto-assign TASK-316.04, pagination TASK-316.01, last-reply visibility TASK-316.02, scenario-flow appendMessage TASK-289) #6/#9/#32/#33 + (gap) doc-086 build log

Część C — Phase 3c (residual ops + docs)

# Kryterium Status Dowód
C1 TASK-326 — docs refresh (FAQ status sync, services.md) wdrożone TASK-326 (2026-05-01)
C2 TASK-149 — Roadmap docs section (docs/handoff/roadmap.md) docs site live
C3 TASK-150 — Customer-service docs section (customer-service/) docs site live
C4 TASK-151 — Operations docs section (operations/) docs site live
C5 TASK-152 — Shop section (shop/) docs site live
C6 TASK-154 — Getting-started (getting-started.md) docs site live
C7 TASK-155 — Service inventory (uslugi.md) TASK-326
C8 TASK-156 — Support / SLA section docs site live
C9 TASK-158 — Listings per-marketplace (8 plików: allegro/amazon/ebay/erli/joom/temu/woocommerce/index) docs site live
C10 TASK-159 — Phase 1/2/3 sign-off captures (ten dokument) docs/handoff/signoff/ (2026-05-02)
C11 TASK-160 — Roadmap reality update TASK-279 — closed as out-of-scope (delivered transparency artifact)
C12 TASK-248 — Temu 90-day expiry monitoring 🟠 owner action — re-auth deadline 2026-07-23 TASK-248 plan
C13 TASK-194.05/06 — BuySpace backup restore drill + HTTP health probe 🟠 in flight doc-083 Phase 3c list
C14 TASK-189 — 6 hardcoded /api/w/dev/ callsites migrated do $lib/windmill 🟠 in flight doc-083 Phase 3c list
C15 TASK-163 AC#3 — single-tenant trust-boundary w deployment README 🟠 in flight decision-025

Smoke-test produkcyjny — okno cutoveru 2026-04-27

Wszystkie smoke-testy zaplanowane w playbook'u TASK-262.33 wykonane post-deploy. Wynik: wszystkie zielone poza 4 nowymi fetcherami eBay/Amazon (TASK-292 — wyłączone, ich brak nie zaburza istniejących integracji bo nigdy wcześniej nie istniały na produkcji).

Test Wynik Dowód
f/automations/pupprint/flush_expired_batches — runs cleanly, czeka na working hours TASK-262.33 final summary
f/support/imap_fetcher (gmail + mailcow) — 6 kont przetworzonych ✅ 0 błędów TASK-262.33 final summary
f/support/dispatcher — drained 6 stale events post-flow-sync ✅ 0 błędów after TASK-262.33 final summary
f/marketplace/allegro/refresh_token — Allegro BuySpace refreshed expires_in: 43198 TASK-262.33 final summary
f/lib/marketplaces/refresh_all — runs poprawnie ✅ no fetch-URL error after passing $var: args TASK-262.33 final summary
Wszystkie 13 włączonych harmonogramów firing ✅ multiple success=true runs TASK-262.33 final summary
Dashboard https://panel.aiofactory.pl ✅ — /login 200; protected routes 303 → /login TASK-262.33 final summary
Convex queries: automations/pupprint/*, support/email_accounts:list, infra/roadmap:listTasks ✅ wszystkie odpowiadają TASK-262.33 final summary
Dashboard /marketplace/{catalog,offers,history,config} dla 8 MP ✅ — brak 404, brak convex.*function not found TASK-262.33 — verified per playbook step 12
f/marketplace/{ebay,amazon}/fetchers/* — 4 nowe schedules wyłączone 🟠 disabled (TASK-292) TASK-262.33 final summary

Stan post-cutover (2026-05-01): 1046 zgłoszeń CS / 2327 wiadomości / 12 reguł / 12 kont — moduł obsługi klienta operacyjny. Marketplace flowy zweryfikowane przez właściciela w ramach jego własnych testów listingowych (Phase 3 zgodnie z umową: testy listingów po stronie właściciela).

Pozycje wymagające działania właściciela

Następujące elementy Phase 3c są w fazie wykończenia w bieżącym Epic H i nie blokują akceptacji Phase 3:

  • 🟠 TASK-248 — Temu 90-day re-auth — deadline 2026-07-23. Wykonawca dostarcza monitoring + nudge w panelu; OAuth re-auth wykonuje właściciel jednym kliknięciem przez UI Konfiguracja Temu.
  • 🟠 TASK-194.05/06 — BuySpace backup restore drill + HTTP health probe. Operacyjny element bezpieczeństwa; nie blokuje produkcji.
  • 🟠 TASK-189 — migracja 6 hardcoded callsites do $lib/windmill. Hygiena kodu; bez wpływu funkcjonalnego na operatora.
  • 🟠 TASK-163 AC#3 — single-tenant trust-boundary statement; element dokumentacji deploymentu.
  • 🟠 TASK-292 — bug fetcherów eBay/Amazon: 4 harmonogramy wyłączone, awaiting import-style refactor; brak regresji (wcześniej nie istniały na produkcji).

Każda z powyższych pozycji ma osobne zadanie w Backlog z wpisanym deadlinem i właścicielem. Phase 3 uznaje się za dostarczoną w zakresie objętym ofertą; pozycje 🟠 są elementem fazy utrzymania (maj–sierpień 2026, 50% stawki).


Blok podpisu

Akceptuję wykonanie Phase 3 — automations/ + marketplace/ migration + Phase 3a (owner-visible fixes) + Phase 3c (residual ops/docs).

Niżej podpisany potwierdza, że:

  1. Wszystkie kryteria akceptacji części A (refaktor automations/ + marketplace/) zostały spełnione.
  2. Wszystkie kryteria akceptacji części B (Phase 3a — naprawy zgłoszone na Forgejo #5/#6/#7/#8/#9/#10/#28 + Sprint 1 hotfixy) zostały spełnione.
  3. Kryteria akceptacji części C (Phase 3c — sekcje dokumentacji + docs site + docs refresh) zostały spełnione w zakresie objętym ofertą; pozostałe pozycje 🟠 (TASK-248, TASK-194.05/06, TASK-189, TASK-163 AC#3, TASK-292) są elementem fazy utrzymania.
  4. Smoke-testy produkcyjne wykonane w oknie cutoveru 2026-04-27 zakończyły się powodzeniem (wszystkie 13 harmonogramów firing, dashboard online, Convex queries operacyjne).
  5. Marketplace flowy zostały zweryfikowane w produkcji przez właściciela w ramach jego własnych testów listingowych (zgodnie z umową).

Imię i nazwisko właściciela: ___________

Data: ________

Podpis: ___________

Uwagi (opcjonalnie):