From d76d48a0eea7bd7c8254d6252b96a27ee57f4fc1 Mon Sep 17 00:00:00 2001 From: NSCT Agent Date: Tue, 25 Aug 2026 15:42:00 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20update=20HANDOFF.md=20=E2=80=94=20Stage?= =?UTF-8?q?s=2010+11=20completed,=20Stage=2012=20next?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HANDOFF.md | 5 ++--- src/nsct/api/main.py | 4 ++++ src/nsct/models/__init__.py | 2 -- src/nsct/stages/__init__.py | 3 +++ src/nsct/stages/stage11_audio.py | 2 +- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/HANDOFF.md b/HANDOFF.md index 9d4c30d..4c0fa1f 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -65,9 +65,8 @@ Wenn ein neuer Thread weiterarbeiten soll, einfach **Stage X** nennen und mit de || 7 | ~~Claim Clustering & Contradiction Candidates~~ (✅ **ABGESCHLOSSEN** – `d1e6bb6`) || || 8 | ~~Evidence Scoring~~ (✅ **ABGESCHLOSSEN** – `719e218`) | || 9 | ~~Neutral Synthesis Engine~~ (✅ **ABGESCHLOSSEN** – `d87e2b4`) || -|| 9 | ~~Neutral Synthesis Engine~~ (✅ **ABGESCHLOSSEN** – `d87e2b4`) || -| **10** | **Vision Integration** — Qwen2.5-VL-3B für Diagramme, Screenshots, Infografiken, PDF-Layouts. Provenance-Pflicht. | -| **11** | **Audio Integration** — Transkription von Interviews, Podcasts, Pressekonferenzen. Timestamped Claims. | +|| **10** | **Vision Integration** — Qwen2.5-VL-3B für Diagramme, Screenshots, Infografiken, PDF-Layouts. Provenance-Pflicht. (**ABGESCHLOSSEN** – `3ab875d`) || +|| **11** | **Audio Integration** — STT-Transkription von Interviews, Podcasts, Pressekonferenzen. Timestamped Claims. (**ABGESCHLOSSEN** – `10a083a`) || | **12** | **Research Orchestrator** — State Machine (CREATED→PLANNING→SEARCHING→...→COMPLETED/FAILED). Harte Budgets (max_search_queries, max_sources, max_llm_requests, ...). | | **13** | **Iterative Research / Gap Analysis** — Max 3 Research-Rounds. Lückenerkennung: welche Claims nur eine Quelle? Wo fehlen Primärquellen? | | **14** | **REST API** — POST/GET/DELETE für research, status, sources, claims, evidence, report. Depth: quick/normal/deep. | diff --git a/src/nsct/api/main.py b/src/nsct/api/main.py index 5adb6be..9aecce0 100644 --- a/src/nsct/api/main.py +++ b/src/nsct/api/main.py @@ -107,6 +107,10 @@ def create_app() -> FastAPI: from nsct.api.vision import router as vision_router app.include_router(vision_router, tags=["vision"]) + # Mount audio router (Stage 11) + from nsct.api.audio import router as audio_router + app.include_router(audio_router, tags=["audio"]) + return app diff --git a/src/nsct/models/__init__.py b/src/nsct/models/__init__.py index 5b09127..f610938 100644 --- a/src/nsct/models/__init__.py +++ b/src/nsct/models/__init__.py @@ -23,8 +23,6 @@ from nsct.models.schemas import ( SearchQuery, Source, SourceType, -) -from nsct.models.schemas import ( SynthesisReportModel, ) from nsct.models.vision import ( diff --git a/src/nsct/stages/__init__.py b/src/nsct/stages/__init__.py index 023c231..d31808e 100644 --- a/src/nsct/stages/__init__.py +++ b/src/nsct/stages/__init__.py @@ -2,9 +2,12 @@ from nsct.stages.stage5_extract_claims import Stage5Extractor from nsct.stages.stage10_vision import VisionStage, VisionEvidence +from nsct.stages.stage11_audio import AudioStage, AudioClaim __all__ = [ "Stage5Extractor", "VisionStage", "VisionEvidence", + "AudioStage", + "AudioClaim", ] \ No newline at end of file diff --git a/src/nsct/stages/stage11_audio.py b/src/nsct/stages/stage11_audio.py index 1b02f74..a49b782 100644 --- a/src/nsct/stages/stage11_audio.py +++ b/src/nsct/stages/stage11_audio.py @@ -789,9 +789,9 @@ class AudioStage: ) elif isinstance(stt_result, dict): transcript = stt_result.get("transcript_text", "") + source_url = stt_result.get("source_url", "unknown") if transcript and transcript.strip(): language = stt_result.get("language", "unknown") - source_url = stt_result.get("source_url", "unknown") source_title = stt_result.get("source_title") claim_tasks.append( asyncio.ensure_future(