feat(TRUEREF-0022): complete iteration 0 — worker-thread indexing, parallel jobs, SSE progress
- Move IndexingPipeline.run() into Worker Threads via WorkerPool - Add dedicated embedding worker thread with single model instance - Add stage/stageDetail columns to indexing_jobs schema - Create ProgressBroadcaster for SSE channel management - Add SSE endpoints: GET /api/v1/jobs/:id/stream, GET /api/v1/jobs/stream - Replace UI polling with EventSource on repo detail and admin pages - Add concurrency settings UI and API endpoint - Build worker entries separately via esbuild
This commit is contained in:
@@ -6,6 +6,8 @@ export interface IndexingJobEntityProps {
|
||||
progress: number;
|
||||
total_files: number;
|
||||
processed_files: number;
|
||||
stage: string;
|
||||
stage_detail: string | null;
|
||||
error: string | null;
|
||||
started_at: number | null;
|
||||
completed_at: number | null;
|
||||
@@ -20,6 +22,8 @@ export class IndexingJobEntity {
|
||||
progress: number;
|
||||
total_files: number;
|
||||
processed_files: number;
|
||||
stage: string;
|
||||
stage_detail: string | null;
|
||||
error: string | null;
|
||||
started_at: number | null;
|
||||
completed_at: number | null;
|
||||
@@ -33,6 +37,8 @@ export class IndexingJobEntity {
|
||||
this.progress = props.progress;
|
||||
this.total_files = props.total_files;
|
||||
this.processed_files = props.processed_files;
|
||||
this.stage = props.stage;
|
||||
this.stage_detail = props.stage_detail;
|
||||
this.error = props.error;
|
||||
this.started_at = props.started_at;
|
||||
this.completed_at = props.completed_at;
|
||||
@@ -48,6 +54,8 @@ export interface IndexingJobProps {
|
||||
progress: number;
|
||||
totalFiles: number;
|
||||
processedFiles: number;
|
||||
stage: string;
|
||||
stageDetail: string | null;
|
||||
error: string | null;
|
||||
startedAt: Date | null;
|
||||
completedAt: Date | null;
|
||||
@@ -62,6 +70,8 @@ export class IndexingJob {
|
||||
progress: number;
|
||||
totalFiles: number;
|
||||
processedFiles: number;
|
||||
stage: string;
|
||||
stageDetail: string | null;
|
||||
error: string | null;
|
||||
startedAt: Date | null;
|
||||
completedAt: Date | null;
|
||||
@@ -75,6 +85,8 @@ export class IndexingJob {
|
||||
this.progress = props.progress;
|
||||
this.totalFiles = props.totalFiles;
|
||||
this.processedFiles = props.processedFiles;
|
||||
this.stage = props.stage;
|
||||
this.stageDetail = props.stageDetail;
|
||||
this.error = props.error;
|
||||
this.startedAt = props.startedAt;
|
||||
this.completedAt = props.completedAt;
|
||||
@@ -90,6 +102,8 @@ export interface IndexingJobDtoProps {
|
||||
progress: number;
|
||||
totalFiles: number;
|
||||
processedFiles: number;
|
||||
stage: string;
|
||||
stageDetail: string | null;
|
||||
error: string | null;
|
||||
startedAt: Date | null;
|
||||
completedAt: Date | null;
|
||||
@@ -104,6 +118,8 @@ export class IndexingJobDto {
|
||||
progress: number;
|
||||
totalFiles: number;
|
||||
processedFiles: number;
|
||||
stage: string;
|
||||
stageDetail: string | null;
|
||||
error: string | null;
|
||||
startedAt: Date | null;
|
||||
completedAt: Date | null;
|
||||
@@ -117,6 +133,8 @@ export class IndexingJobDto {
|
||||
this.progress = props.progress;
|
||||
this.totalFiles = props.totalFiles;
|
||||
this.processedFiles = props.processedFiles;
|
||||
this.stage = props.stage;
|
||||
this.stageDetail = props.stageDetail;
|
||||
this.error = props.error;
|
||||
this.startedAt = props.startedAt;
|
||||
this.completedAt = props.completedAt;
|
||||
|
||||
Reference in New Issue
Block a user