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`) ||
|
|| 7 | ~~Claim Clustering & Contradiction Candidates~~ (✅ **ABGESCHLOSSEN** – `d1e6bb6`) ||
|
||||||
|| 8 | ~~Evidence Scoring~~ (✅ **ABGESCHLOSSEN** – `719e218`) |
|
|| 8 | ~~Evidence Scoring~~ (✅ **ABGESCHLOSSEN** – `719e218`) |
|
||||||
|| 9 | ~~Neutral Synthesis Engine~~ (✅ **ABGESCHLOSSEN** – `d87e2b4`) ||
|
|| 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. (**ABGESCHLOSSEN** – `3ab875d`) ||
|
||||||
| **10** | **Vision Integration** — Qwen2.5-VL-3B für Diagramme, Screenshots, Infografiken, PDF-Layouts. Provenance-Pflicht. |
|
|| **11** | **Audio Integration** — STT-Transkription von Interviews, Podcasts, Pressekonferenzen. Timestamped Claims. (**ABGESCHLOSSEN** – `10a083a`) ||
|
||||||
| **11** | **Audio Integration** — Transkription von Interviews, Podcasts, Pressekonferenzen. Timestamped Claims. |
|
|
||||||
| **12** | **Research Orchestrator** — State Machine (CREATED→PLANNING→SEARCHING→...→COMPLETED/FAILED). Harte Budgets (max_search_queries, max_sources, max_llm_requests, ...). |
|
| **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? |
|
| **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. |
|
| **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
|
from nsct.api.vision import router as vision_router
|
||||||
app.include_router(vision_router, tags=["vision"])
|
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
|
return app
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -23,8 +23,6 @@ from nsct.models.schemas import (
|
|||||||
SearchQuery,
|
SearchQuery,
|
||||||
Source,
|
Source,
|
||||||
SourceType,
|
SourceType,
|
||||||
)
|
|
||||||
from nsct.models.schemas import (
|
|
||||||
SynthesisReportModel,
|
SynthesisReportModel,
|
||||||
)
|
)
|
||||||
from nsct.models.vision import (
|
from nsct.models.vision import (
|
||||||
|
|||||||
@@ -2,9 +2,12 @@
|
|||||||
|
|
||||||
from nsct.stages.stage5_extract_claims import Stage5Extractor
|
from nsct.stages.stage5_extract_claims import Stage5Extractor
|
||||||
from nsct.stages.stage10_vision import VisionStage, VisionEvidence
|
from nsct.stages.stage10_vision import VisionStage, VisionEvidence
|
||||||
|
from nsct.stages.stage11_audio import AudioStage, AudioClaim
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"Stage5Extractor",
|
"Stage5Extractor",
|
||||||
"VisionStage",
|
"VisionStage",
|
||||||
"VisionEvidence",
|
"VisionEvidence",
|
||||||
|
"AudioStage",
|
||||||
|
"AudioClaim",
|
||||||
]
|
]
|
||||||
@@ -789,9 +789,9 @@ class AudioStage:
|
|||||||
)
|
)
|
||||||
elif isinstance(stt_result, dict):
|
elif isinstance(stt_result, dict):
|
||||||
transcript = stt_result.get("transcript_text", "")
|
transcript = stt_result.get("transcript_text", "")
|
||||||
|
source_url = stt_result.get("source_url", "unknown")
|
||||||
if transcript and transcript.strip():
|
if transcript and transcript.strip():
|
||||||
language = stt_result.get("language", "unknown")
|
language = stt_result.get("language", "unknown")
|
||||||
source_url = stt_result.get("source_url", "unknown")
|
|
||||||
source_title = stt_result.get("source_title")
|
source_title = stt_result.get("source_title")
|
||||||
claim_tasks.append(
|
claim_tasks.append(
|
||||||
asyncio.ensure_future(
|
asyncio.ensure_future(
|
||||||
|
|||||||
Reference in New Issue
Block a user