docs: update HANDOFF.md — Stages 10+11 completed, Stage 12 next
This commit is contained in:
@@ -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. |
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -23,8 +23,6 @@ from nsct.models.schemas import (
|
||||
SearchQuery,
|
||||
Source,
|
||||
SourceType,
|
||||
)
|
||||
from nsct.models.schemas import (
|
||||
SynthesisReportModel,
|
||||
)
|
||||
from nsct.models.vision import (
|
||||
|
||||
@@ -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",
|
||||
]
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user