SYMBOL INDEX (35 symbols across 21 files) FILE: app/audio/preprocess.py function preprocess_audio (line 7) | def preprocess_audio(input_path, output_path): FILE: app/dashboard/dashboard.py function load_logs (line 68) | def load_logs(): FILE: app/database/operation.py function create_recordings (line 10) | def create_recordings(file_path,file_hash): function save_transcription (line 15) | def save_transcription(recording_id, result): function save_rag_segments (line 20) | def save_rag_segments(recording_id, segments): function update_stage (line 26) | def update_stage(recording_id, stage): function mark_done (line 33) | def mark_done(recording_id): function mark_failed (line 42) | def mark_failed(recording_id, error): FILE: app/database/schemas.py function build_recording_doc (line 5) | def build_recording_doc(path, file_hash): function build_transcription_doc (line 36) | def build_transcription_doc(recording_id, result): function build_rag_segment (line 51) | def build_rag_segment(recording_id, segments): FILE: app/ingestion/deduplicator.py function is_duplicate (line 4) | def is_duplicate(file_hash): FILE: app/ingestion/fetcher.py function fetch_new_files (line 6) | def fetch_new_files(): FILE: app/ingestion/hashing.py function compute_file_hash (line 4) | def compute_file_hash(file_path, chunk_size = 8192): FILE: app/ingestion/issabelle_client.py function create_sftp_client (line 11) | def create_sftp_client(): FILE: app/ingestion/load_audio.py function get_audio_files (line 7) | def get_audio_files(): FILE: app/ingestion/runner.py function ingest_new_files (line 12) | def ingest_new_files(): FILE: app/maintanance/cleanup.py function cleanup_files (line 7) | def cleanup_files(dry_run: bool = True): FILE: app/pipeline/orchestrator.py function run_pipeline (line 13) | async def run_pipeline(): FILE: app/pipeline/worker.py function process_audio (line 37) | async def process_audio(record): FILE: app/process/segmentation.py function segment_speakers (line 3) | def segment_speakers(result): FILE: app/process/utils.py function words_to_dict (line 3) | def words_to_dict(result): function print_transcript_by_speaker (line 8) | def print_transcript_by_speaker(result): FILE: app/stt/rag_segments.py function build_rag_segments (line 2) | def build_rag_segments(result, max_duration = 15.0): FILE: app/stt/transcribe.py function transcribe (line 10) | async def transcribe(audio_path): FILE: app/utils/logger.py class JsonFormatter (line 10) | class JsonFormatter(logging.Formatter): method format (line 11) | def format(self, record): function setup_logger (line 33) | def setup_logger(): FILE: app/utils/retry.py function retry_async (line 4) | async def retry_async( FILE: app/utils/stage_manager.py function is_stage_done (line 4) | def is_stage_done(record, stage): function mark_stage_done (line 8) | def mark_stage_done(recording_id, stage): function mark_stage_failed (line 17) | def mark_stage_failed(recording_id, stage, error): FILE: app/utils/state_validator.py function validate_record (line 20) | def validate_record(record): function recover_stuck_jobs (line 96) | def recover_stuck_jobs(): function run_state_validator (line 126) | def run_state_validator():