"""Mock LLM and embedding responses for pipeline integration tests. Each response is a JSON string matching the Pydantic schema for that stage. The sample transcript has 5 segments about gain staging, so mock responses reflect that content. """ import json import random # ── Stage 2: Segmentation ─────────────────────────────────────────────────── STAGE2_SEGMENTATION_RESPONSE = json.dumps({ "segments": [ { "start_index": 0, "end_index": 1, "topic_label": "Introduction", "summary": "Introduces the episode about mixing basics and gain staging.", }, { "start_index": 2, "end_index": 4, "topic_label": "Gain Staging Technique", "summary": "Covers practical steps for gain staging including setting levels and avoiding clipping.", }, ] }) # ── Stage 3: Extraction ───────────────────────────────────────────────────── STAGE3_EXTRACTION_RESPONSE = json.dumps({ "moments": [ { "title": "Setting Levels for Gain Staging", "summary": "Demonstrates the process of setting proper gain levels across the signal chain to maintain headroom.", "start_time": 12.8, "end_time": 28.5, "content_type": "technique", "plugins": ["Pro-Q 3"], "raw_transcript": "First thing you want to do is set your levels. Make sure nothing is clipping on the master bus.", }, { "title": "Master Bus Clipping Prevention", "summary": "Explains how to monitor and prevent clipping on the master bus during a mix session.", "start_time": 20.1, "end_time": 35.0, "content_type": "settings", "plugins": [], "raw_transcript": "Make sure nothing is clipping on the master bus. That wraps up this quick overview.", }, ] }) # ── Stage 4: Classification ───────────────────────────────────────────────── STAGE4_CLASSIFICATION_RESPONSE = json.dumps({ "classifications": [ { "moment_index": 0, "topic_category": "Mixing", "topic_tags": ["gain staging", "eq"], "content_type_override": None, }, { "moment_index": 1, "topic_category": "Mixing", "topic_tags": ["gain staging", "bus processing"], "content_type_override": None, }, ] }) # ── Stage 5: Synthesis ─────────────────────────────────────────────────────── STAGE5_SYNTHESIS_RESPONSE = json.dumps({ "pages": [ { "title": "Gain Staging in Mixing", "slug": "gain-staging-in-mixing", "topic_category": "Mixing", "topic_tags": ["gain staging"], "summary": "A comprehensive guide to gain staging in a mixing context, covering level setting and master bus management.", "body_sections": { "Overview": "Gain staging ensures each stage of the signal chain operates at optimal levels.", "Steps": "1. Set input levels. 2. Check bus levels. 3. Monitor master output.", }, "signal_chains": [ {"chain": "Input -> Channel Strip -> Bus -> Master", "notes": "Keep headroom at each stage."} ], "plugins": ["Pro-Q 3"], "source_quality": "structured", } ] }) # ── Embedding response ─────────────────────────────────────────────────────── def make_mock_embedding(dim: int = 768) -> list[float]: """Generate a deterministic-seeded mock embedding vector.""" rng = random.Random(42) return [rng.uniform(-1, 1) for _ in range(dim)] def make_mock_embeddings(n: int, dim: int = 768) -> list[list[float]]: """Generate n distinct mock embedding vectors.""" return [ [random.Random(42 + i).uniform(-1, 1) for _ in range(dim)] for i in range(n) ]