paperhawk / nodes /risk /evidence_score_node.py
Nándorfi Vince
Initial paperhawk push to HF Space (LFS for binaries)
7ff7119
"""evidence_score_node — ISA 500 evidence score per-doc.
Separate entry point (NOT Send-fan-out via the domain checks) because the
score depends on doc_type and produces a per-document info-level risk.
"""
from __future__ import annotations
from domain_checks import EvidenceScoreCheck
from graph.states.pipeline_state import PipelineState, ProcessedDocument
async def evidence_score_node(state: PipelineState) -> dict:
documents: list[ProcessedDocument] = state.get("documents") or []
check = EvidenceScoreCheck()
risks: list = []
for doc in documents:
if doc.classification is None:
continue
doc_risks = check.apply(
extracted=doc.extracted.raw if doc.extracted else {},
doc_type=doc.classification.doc_type,
)
for r in doc_risks:
r.affected_document = doc.ingested.file_name
risks.extend(doc_risks)
return {"risks": risks} if risks else {}