Adds Jobs API types, fetchers, and new API methods without breaking existing code. This is the foundation for migrating from legacy /history and /queue endpoints to the unified /jobs endpoint. New files: - src/platform/remote/comfyui/jobs/types/jobTypes.ts - Zod schemas for Jobs API - src/platform/remote/comfyui/jobs/fetchers/fetchJobs.ts - Fetchers for /jobs endpoint - src/platform/remote/comfyui/jobs/index.ts - Barrel exports - tests-ui/tests/platform/remote/comfyui/jobs/fetchers/fetchJobs.test.ts API additions (non-breaking): - api.getQueueFromJobsApi() - Queue from /jobs endpoint - api.getHistoryFromJobsApi() - History from /jobs endpoint - api.getJobDetail() - Full job details including workflow and outputs Part of Jobs API migration. See docs/JOBS_API_MIGRATION_PLAN.md for details. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
6.4 KiB
Jobs API Migration Plan
Overview
This document outlines the strategy for breaking up the Jobs API migration PR (#7125) into smaller, reviewable chunks.
Current State
The PR migrates the frontend from legacy /history and /queue endpoints to the unified /jobs API. This involves:
- 24 source files changed
- 16 test files changed
- Core changes to
TaskItemImplinqueueStore.ts
Dependency Analysis
jobTypes.ts (types)
↓
fetchJobs.ts (fetchers)
↓
api.ts (API layer)
↓
queueStore.ts (TaskItemImpl rewrite)
↓
┌───────────────────────────────────────┐
│ All consumers must update together: │
│ - useJobList.ts │
│ - useJobMenu.ts │
│ - useResultGallery.ts │
│ - useJobErrorReporting.ts │
│ - JobGroupsList.vue │
│ - assetsStore.ts │
│ - reconciliation.ts │
└───────────────────────────────────────┘
Proposed PR Split
PR 1: Jobs API Infrastructure (Foundation)
Status: Can merge independently Risk: Low - purely additive
Files:
src/platform/remote/comfyui/jobs/types/jobTypes.ts (new)
src/platform/remote/comfyui/jobs/fetchers/fetchJobs.ts (new)
src/platform/remote/comfyui/jobs/index.ts (new)
src/scripts/api.ts (add new methods)
Changes:
- Add Zod schemas for Jobs API response types
- Add
fetchQueue()andfetchHistory()functions using/jobsendpoint - Add
getQueue()andgetHistory()methods to ComfyApi class - Export types from barrel file
Tests:
- Unit tests for fetchers
- Integration tests for API methods
Why separate? This is purely additive. The new code exists alongside the old code without breaking anything. Can be reviewed and merged first.
PR 2: Core Migration (TaskItemImpl + Consumers)
Status: Requires PR 1 Risk: Medium - breaking changes to core data model
Files:
src/stores/queueStore.ts (rewrite TaskItemImpl)
src/schemas/apiSchema.ts (type updates)
src/composables/queue/useJobList.ts (use new TaskItemImpl)
src/composables/queue/useJobMenu.ts (use new TaskItemImpl)
src/composables/queue/useResultGallery.ts (use new TaskItemImpl)
src/components/queue/job/useJobErrorReporting.ts (use new TaskItemImpl)
src/components/queue/job/JobGroupsList.vue (fix workflowId access)
src/components/queue/QueueProgressOverlay.vue (if needed)
src/stores/assetsStore.ts (use JobListItem)
src/platform/remote/comfyui/history/reconciliation.ts (work with JobListItem)
src/platform/workflow/cloud/getWorkflowFromHistory.ts (use fetchJobDetail)
src/scripts/ui.ts (type fix)
Changes:
- Rewrite
TaskItemImplto wrapJobListIteminstead of legacy tuple format - Update all getters to derive from job properties
- Update all consumers to use new property names
- Update reconciliation to work with
JobListItem[]
Tests:
- All queue-related tests
- queueStore tests
- Integration tests
Why together? These changes are tightly coupled. TaskItemImpl API changes break all consumers, so they must be updated atomically.
PR 3: Cleanup Legacy Code
Status: Requires PR 2 Risk: Low - removing unused code
Files to DELETE:
src/platform/remote/comfyui/history/adapters/v2ToV1Adapter.ts
src/platform/remote/comfyui/history/fetchers/fetchHistoryV1.ts
src/platform/remote/comfyui/history/fetchers/fetchHistoryV2.ts
src/platform/remote/comfyui/history/types/historyV1Types.ts
src/platform/remote/comfyui/history/types/historyV2Types.ts
tests-ui/fixtures/historyFixtures.ts
tests-ui/fixtures/historySortingFixtures.ts
+ related test files
Files to MODIFY:
src/platform/remote/comfyui/history/index.ts (remove old exports)
src/platform/remote/comfyui/history/types/index.ts (remove old exports)
Why separate? Deletion is low-risk but should be done after confirming the new code works in production. Allows rollback if issues are found.
Alternative: Feature Flag Approach
If the above split is still too risky, consider:
- Add feature flag
useJobsApi(default: false) - Keep both code paths in TaskItemImpl
- Gradually roll out via feature flag
- Remove old code path after validation
This is more complex but allows incremental rollout.
Recommended Order
- PR 1 → Merge first (no risk)
- PR 2 → Merge after PR 1 (main migration)
- PR 3 → Merge after validating PR 2 in production
Current PR Status
The current PR (#7125) contains PR 1 + PR 2 combined. To split:
- Create new branch from main
- Cherry-pick only the Jobs API infrastructure commits
- Open PR 1
- Rebase current branch on PR 1 after merge
- Current branch becomes PR 2
Files by PR
PR 1 Files (8 files)
src/platform/remote/comfyui/jobs/types/jobTypes.ts
src/platform/remote/comfyui/jobs/fetchers/fetchJobs.ts
src/platform/remote/comfyui/jobs/index.ts
src/scripts/api.ts
+ 4 test files
PR 2 Files (~28 files)
src/stores/queueStore.ts
src/stores/assetsStore.ts
src/schemas/apiSchema.ts
src/scripts/ui.ts
src/composables/queue/useJobList.ts
src/composables/queue/useJobMenu.ts
src/composables/queue/useResultGallery.ts
src/components/queue/job/useJobErrorReporting.ts
src/components/queue/job/JobGroupsList.vue
src/components/queue/job/JobDetailsPopover.stories.ts
src/components/queue/QueueProgressOverlay.vue
src/platform/remote/comfyui/history/reconciliation.ts
src/platform/remote/comfyui/history/index.ts
src/platform/workflow/cloud/getWorkflowFromHistory.ts
src/platform/workflow/cloud/index.ts
browser_tests/fixtures/ComfyPage.ts
browser_tests/fixtures/utils/taskHistory.ts
+ ~12 test files
PR 3 Files (~12 files to delete)
DELETE: src/platform/remote/comfyui/history/adapters/*
DELETE: src/platform/remote/comfyui/history/fetchers/fetchHistoryV1.ts
DELETE: src/platform/remote/comfyui/history/fetchers/fetchHistoryV2.ts
DELETE: src/platform/remote/comfyui/history/types/historyV1Types.ts
DELETE: src/platform/remote/comfyui/history/types/historyV2Types.ts
DELETE: tests-ui/fixtures/history*.ts
DELETE: related test files
MODIFY: index.ts files to remove exports