Skip to content

JITSU-131: migration analyzer wizard — import from Segment/RudderStack - #1427

Draft
absorbb wants to merge 1 commit into
newjitsufrom
feat/jitsu-131-import-wizard
Draft

JITSU-131: migration analyzer wizard — import from Segment/RudderStack#1427
absorbb wants to merge 1 commit into
newjitsufrom
feat/jitsu-131-import-wizard

Conversation

@absorbb

@absorbb absorbb commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

JITSU-131 — console UI for the migration analyzer (JITSU-128).

Adds a workspace page /import with a 4-step wizard to analyze a Segment or RudderStack workspace and show a migration report. Cloud-only: everything is gated on appConfig.ee?.available; the backend endpoints (/api/migration/*) live in jitsucom/jitsu-cloud-billing#29.

What's in the box

  • components/ImportWizard/ImportWizard.tsx — Provider → Connect → Analysis → Report steps (antd Steps):
    • provider cards: Segment (Public API token, Workspace-Owner/Team+ caveats in the help copy), RudderStack Cloud (Service Access Token), RudderStack OSS (workspaceConfig.json upload — no API to read);
    • the token lives in component state only and is cleared the moment the analysis starts; it is sent to ee-api, which uses it in memory and never persists it;
    • analysis step polls migration/report every 2.5 s and renders per-entity progress; reportId/provider are kept in the query string so refresh/back resumes the run.
  • MigrationReportView — savings hero (suppressed when ≤ 0 per PRD), ✅ / 🟡 / 📞 verdict summary + destination/warehouse/source tables, partial-fetch gaps alert, book-a-call CTA (placeholder URL, TODO pending the Calendly answer on JITSU-128).
  • UsageEditor — invoice upload → ee-api LLM parse → user reviews/edits the extracted numbers → report-usage applies them. The raw parse is never auto-applied.
  • Top-nav Import item + overview teaser card, both ee-gated.
  • components/ImportWizard/types.ts — client mirror of the ee-api migration contract (kept in sync manually; ee-api is a separate repo).

Not testable end-to-end yet

Blocked on the billing side: migration_reports table (pnpm db:update-schema) and deploy of jitsucom/jitsu-cloud-billing#29. The UI degrades cleanly meanwhile (analysis start surfaces the API error).

🤖 Generated with Claude Code

New workspace page /import (Jitsu Cloud only, gated on appConfig.ee.available):

- components/ImportWizard/ImportWizard.tsx: 4-step wizard — provider pick
  (Segment / RudderStack Cloud / RudderStack OSS), token entry or
  workspaceConfig.json upload, live analysis progress (2.5s polling of
  ee-api migration/report), report view. reportId/provider kept in the
  query string so a refresh resumes the run; token is held in component
  state only and cleared the moment the analysis starts
- MigrationReportView: savings hero (suppressed per PRD when <= 0),
  verdict summary (auto-importable / small change / needs a call),
  destination+warehouse+source tables, gaps alert, book-a-call CTA
  (placeholder URL pending JITSU-128 Calendly answer)
- UsageEditor: invoice upload -> ee-api LLM parse -> user confirms
  numbers -> report-usage applies them (raw parse never auto-applied)
- top-nav 'Import' item + overview teaser card, both ee-gated

Backend endpoints live in jitsu-cloud-billing PR #29 (JITSU-128).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant