Skip to content

feat(quick-start): add workflow-backed creation flow - #74

Draft
huyanxius wants to merge 33 commits into
1024XEngineer:mainfrom
huyanxius:feat/quick-start-flow
Draft

feat(quick-start): add workflow-backed creation flow#74
huyanxius wants to merge 33 commits into
1024XEngineer:mainfrom
huyanxius:feat/quick-start-flow

Conversation

@huyanxius

Copy link
Copy Markdown
Collaborator

Title: feat(quick-start): add workflow-backed creation flow

Dependency

Feature Description

  • Replace the Quick Start placeholder with a responsive natural-language creation surface.
  • Create and observe one WorkflowRun on /quick-start/:runId without redirecting to Workflow Editor.
  • Show real running, failure, interruption, and character-template candidate states from the shared WorkflowRun.

Implementation Approach

  • Prepare a real Project first, then delegate execution, recovery, subscriptions, and interruption to the existing WorkflowController.
  • Keep Project creation behind an injected page-level boundary; unconfigured production wiring fails explicitly and never invents a project ID or Mock success.
  • Reuse the LiveDemo input/progress/result rhythm without copying its fake timers, hardcoded outputs, routes, or runtime.

Testing

  • npm run format:check — passed (49 files)
  • npm run lint — passed
  • npm run typecheck — passed
  • npm run test -- --reporter=dot — passed (6 files, 37 tests)
  • npm run build — passed
  • git diff --check feat/workflow-run-core...HEAD — passed
  • Local browser — desktop/mobile render passed; explicit unavailable state and zero console errors confirmed

Follow-ups

  • Wire real ProjectApis, GenerationApis, and TaskApis after the backend address and DTO fixtures are confirmed.
  • Candidate selection and later workflow steps remain separate vertical slices.

[CX] Prompt & Review

  • Prompt summary: implement the next Quick Start slice on the current reduced architecture, reuse only safe LiveDemo presentation, and preserve the frontend-only WorkflowRun model.
  • AI review: layering, unnecessary complexity, hardcoding, async error boundaries, and test validity were checked; no blocker remained.
  • Human review: pending; keep this PR in Draft.

Refs #58

huyanxius added 30 commits July 30, 2026 15:33
The MS2 frontend needs a reproducible workspace before any module code can land.

Add the Vite entry, the pinned dependency manifest and lockfile, the three referenced TypeScript configs, and the ignore rules.

The workspace installs and builds from a clean checkout.
Style and lint rules should be fixed before contributors start writing modules.

Add the oxlint rule set and the oxfmt formatting profile for the frontend workspace.

Formatting and lint results are identical on every machine and in CI.
The skeleton carries no test suite yet, but the test runner has to be wired for later work.

Add the vitest config so it resolves the same path aliases as the application build.

Tests can be added to any module without further setup.
Every upper layer needs a place for cross-module primitives that belong to no single domain.

Add the shared layer with its pagination contract and a README stating what may live here.

Modules have one agreed home for shared primitives instead of duplicating them.
The frontend has to state which business objects it owns and how each one is reached.

Add one contract file per entity for character, project, task, generation, media, action template, playtest inspection and workflow run, plus the aggregate export.

Upper layers depend on declared entity interfaces rather than on transport details.
The workflow steps the mentor reviewed need an explicit home separate from both entities and pages.

Add contracts for character setup, generation, review, export and the workflow controller.

Each use case has a named boundary that pages call instead of reaching into entities.
Routing targets have to exist before the application shell can wire them together.

Add the home, projects, project detail, quick start, workflow editor, asset library, playtest and not found page modules.

Every route in the product design maps to exactly one page module.
The page modules need a composition root that owns routing and layout.

Add the app shell with its layout and route table, the browser entry point, and the base stylesheet.

The application runs end to end and every page is reachable.
Reviewers need the branch checked automatically and a running preview to look at.

Add the frontend workflow running lint, typecheck, test and build, and scope Vercel previews to frontend changes.

Every pull request reports its own build status and preview URL.
The module boundaries and the interfaces expected from the backend must be reviewable without reading the code.

Add the architecture document, the frontend README, and the API contract listing every endpoint the frontend calls.

Backend and frontend can align on one written list of interfaces.
A run reopened after a refresh could not tell that a generation was still running, so the page had to either resubmit it or stall.

Record the in-flight task id on WorkflowStep so it is saved with the run, and drop WorkflowTaskLink, which no structure ever held.

Reopening a run recovers the pending task from its step instead of starting a second generation.
The vitest config sat outside every tsconfig include, so a type error in it would only surface when the runner started.

Add it to the node project alongside the vite config.

Both build-side configs are now covered by tsc -b.
A character is written when the user exports to the asset library, so it cannot hold work-in-progress state; the backend also returns no QC verdict and the product has no per-frame reject.

Drop the action generation status, the frame qc and rejected fields, and the standalone playtest inspection entity; review now only reads frames.

The asset tree describes confirmed assets only, and review results no longer need a second home.
Three structures carried assumptions a reader could not distinguish from settled decisions.

State that multi-direction frame storage is undefined, that the MVP runs a single revision, and that an action id is unique only inside its outfit.

Open questions are visible in the contracts instead of being rediscovered later.
The reduced module skeleton no longer includes playtest inspection or shared UI.

Remove obsolete API and entity references and align the layout comment with app ownership.

Documentation now matches the contracts and directories present in this branch.
The backend character contract has no standalone name field.

Remove name from Character and CreateCharacterInput.

The frontend now matches the confirmed character payload boundary.
The fixed workflow is not a backend resource.

Remove WorkflowRunApis and update the public and controller contracts.

Backend responsibilities now stop at generation and confirmed asset storage.
The API notes still described stale workflow and generation assumptions.

Document frontend-owned workflow state, generation mapping, and assigned follow-ups.

The architecture now reflects the latest backend reference and team decisions.
The backend scopes generation-task queries by both project and task identifiers.

Add projectId to generation reads and task reads and subscriptions.

Callers can now map directly to the documented task query endpoint.
Task lookup ownership is now confirmed against the backend API.

Mark projectId plus taskId as resolved and remove the stale mismatch and question.

Reviewers can see the current task query boundary without reopening the decision.
Workflow execution needs a stable boundary between generation records and backend tasks.

Parse character-template results and bind generation IDs to task IDs.

Require subscriptions to replay a current snapshot before later updates.
Workflow execution needs a frontend-owned snapshot that can survive page refreshes.

Add the fixed step model, versioned local storage, and runtime hydration validation.

Keep memory authoritative when persistence fails or stored data is invalid.
Quick Start and the editor need one frontend-owned progression boundary.

Add character setup updates, generation submission, task recovery, and interruption handling.

Advance valid results to candidate selection without exposing unfinished steps.
Workflow state and async recovery need regression coverage before page integration.

Test persistence, submission deduplication, task replay, and interruption races.

Verify the first generation slice through the real store and controller.
The skeleton documentation no longer reflects the implemented workflow slice.

Record controller scope, recovery behavior, task replay, and local persistence limits.

Keep editor, Quick Start automation, and later steps explicitly out of scope.
The workflow controller mixed process coordination, state transitions, and asynchronous task recovery in one file.

Extract pure WorkflowRun transitions and the character-template task lifecycle behind the existing controller facade.

Keep the public API and runtime behavior unchanged while making later workflow steps easier to add.
The new pure state boundary needs direct regression coverage alongside the existing controller tests.

Cover fixed workflow creation, character setup normalization, and activation of the character-template step.

Protect the extracted rules without changing production behavior.
The Character Setup feature exposed the asset creation DTO while the workflow controller expects step-local input.

Change the submit callback to accept CharacterSetupStepInput.

Allow Quick Start and Workflow Editor to connect without translating through an unrelated asset contract.
The Character Setup boundary previously drifted to an unrelated asset DTO.

Add a type assertion for the submit callback parameter.

Prevent the page-to-workflow contract from regressing.
Quick Start needs to drive the frontend WorkflowRun without entering the editor.

Add the page UI and an injectable service that prepares a project and delegates execution to WorkflowController.

Unconfigured production wiring now fails explicitly instead of falling back to fake data.
Quick Start needs regression coverage across its page and controller boundary.

Exercise the real WorkflowRun store and WorkflowController with only external ports substituted.

Lock same-page execution, failure persistence, unexpected errors, and candidate delivery.
@vercel

vercel Bot commented Jul 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
windup Ignored Ignored Preview Jul 31, 2026 3:08am

后端 1024XEngineer#64 合入 main 后根 .gitignore 出现 add/add 冲突。
根 .gitignore 取 main 版本(已含 .DS_Store),前端的依赖与构建产物由 frontend/.gitignore 负责。
…flow

经上游分支带入 main 的后端 1024XEngineer#64,根 .gitignore 冲突已在上游分支解决。
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