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_tokenf/tokens/refresh_all→f/lib/marketplaces/refresh_allf/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ółczynnikw 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.mddeploy (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/windmillhelpers. - 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¶
- 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.
- 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). - Schedules reconcile out-of-band —
wmill.yamlmaincludeSchedules: false; 10 starych harmonogramów usuniętych przezcurl DELETE, 14 nowych utworzonych przezcurl POST(skrypt w cutover playbook TASK-262.33). - TASK-148 / TASK-160 zamknięte jako out-of-scope (UI add/edit dla roadmap nie potrzebny — roadmap to artefakt transparentny).
- TASK-292 — bug eBay/Amazon fetcher Windmill bundling: 4 harmonogramy sfetchowane wyłączone post-cutover; awaiting import-style refactor.
- 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.pyrewrite), TASK-276 (f/support/imap_fetcher.pyimport 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:
- Wszystkie kryteria akceptacji części A (refaktor
automations/+marketplace/) zostały spełnione. - 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.
- 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.
- 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).
- 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):