Summary
If multiple users create chats for the same docs URL and same mode at the same time, all should see shared progress from a single ingestion job.
Problem
Progress tracking is currently keyed per chat/job, so parallel requests for the same source can produce duplicate ingestion and inconsistent progress visibility.
Expected Solution
Introduce source-level ingestion lock and progress channel keyed by source identity (normalizedUrl + mode). First request starts ingestion; subsequent requests subscribe to the same in-flight progress and attach when complete.
Scope
backend/controllers/chat.controller.js
backend/chatWorker.js
- Redis key strategy and queue deduplication logic
src/pages/Dashboard.tsx polling/progress display behavior
Acceptance Criteria
Notes
Current status/progress keying can be redesigned around chatSource identity instead of chat id.
Summary
If multiple users create chats for the same docs URL and same mode at the same time, all should see shared progress from a single ingestion job.
Problem
Progress tracking is currently keyed per chat/job, so parallel requests for the same source can produce duplicate ingestion and inconsistent progress visibility.
Expected Solution
Introduce source-level ingestion lock and progress channel keyed by source identity (
normalizedUrl + mode). First request starts ingestion; subsequent requests subscribe to the same in-flight progress and attach when complete.Scope
backend/controllers/chat.controller.jsbackend/chatWorker.jssrc/pages/Dashboard.tsxpolling/progress display behaviorAcceptance Criteria
Notes
Current status/progress keying can be redesigned around
chatSourceidentity instead of chat id.