fix: ASRX duplication, TKG edges, trace ingest, and add pipeline progress publishing

- ASRX handler no longer stores duplicate 'asr' pre_chunks
- Pre_chunks storage made idempotent (delete-before-insert)
- Rule 1 + trace_ingest changed to query 'asrx' not 'asr'
- Trace chunks removed (dynamic from TKG/Qdrant)
- TKG scroll_face_points fixed: trace_id >= 1 (not == 1)
- TKG AsrxSegmentEntry: start/end -> start_time/end_time (match ASRX JSON)
- Unregister error handling: log instead of silent discard
- Add publish_pipeline_progress calls at each pipeline stage
  (processors, rule1, face_trace, identity_agent, TKG, rule2, completion)
This commit is contained in:
Accusys
2026-07-02 10:43:46 +08:00
parent d791d138f2
commit 3eabd45882
65 changed files with 9481 additions and 3856 deletions

View File

@@ -0,0 +1,49 @@
-- ================================================================
-- Migration 036: ASR/ASRX and Face Detailed Status
-- Version: 036
-- Date: 2026-06-26
-- Description: Add asr_status and face_status columns for detailed result status
-- to support unified output SOP
-- ================================================================
-- 36.1: Add asr_status column to processor_results
ALTER TABLE processor_results ADD COLUMN IF NOT EXISTS asr_status VARCHAR(20);
COMMENT ON COLUMN processor_results.asr_status IS
'ASR-specific status: no_audio_track, silent_audio, has_transcript, processing';
-- 36.2: Add check constraint for asr_status
ALTER TABLE processor_results DROP CONSTRAINT IF EXISTS chk_processor_results_asr_status;
ALTER TABLE processor_results ADD CONSTRAINT chk_processor_results_asr_status
CHECK (asr_status IS NULL OR asr_status IN ('no_audio_track', 'silent_audio', 'has_transcript', 'processing'));
-- 36.3: Add segment_count column for quick reference
ALTER TABLE processor_results ADD COLUMN IF NOT EXISTS segment_count INTEGER DEFAULT 0;
COMMENT ON COLUMN processor_results.segment_count IS
'Number of transcript segments (ASR) or speaker segments (ASRX)';
-- 36.4: Create index for asr_status queries
CREATE INDEX IF NOT EXISTS idx_processor_results_asr_status ON processor_results(asr_status)
WHERE asr_status IS NOT NULL;
-- 36.5: Add face_status column to processor_results
ALTER TABLE processor_results ADD COLUMN IF NOT EXISTS face_status VARCHAR(20);
COMMENT ON COLUMN processor_results.face_status IS
'Face detection status: no_faces, has_faces, processing';
-- 36.6: Add check constraint for face_status
ALTER TABLE processor_results DROP CONSTRAINT IF EXISTS chk_processor_results_face_status;
ALTER TABLE processor_results ADD CONSTRAINT chk_processor_results_face_status
CHECK (face_status IS NULL OR face_status IN ('no_faces', 'has_faces', 'processing'));
-- 36.7: Add total_faces column for quick reference
ALTER TABLE processor_results ADD COLUMN IF NOT EXISTS total_faces INTEGER DEFAULT 0;
COMMENT ON COLUMN processor_results.total_faces IS
'Total number of faces detected across all frames';
-- 36.8: Create index for face_status queries
CREATE INDEX IF NOT EXISTS idx_processor_results_face_status ON processor_results(face_status)
WHERE face_status IS NOT NULL;