File size: 1,335 Bytes
ac5db64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"""Simulate final worry levels from modal_artifacts/ml_probe.json raw dumps
(dev tooling — runs the same triage path as the pipeline, no GPU needed)."""

from __future__ import annotations

import json
import os
import sys

sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "src"))

if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8")

from guardian import triage  # noqa: E402


def main() -> None:
    with open("modal_artifacts/ml_probe.json", encoding="utf-8") as f:
        data = json.load(f)
    for p in data:
        parsed = triage.parse_model_json(p["raw"])
        if parsed is None:
            print(f"{p['name']} ({p['degradation']}): PARSE FAIL")
            continue
        ex = triage.validate_extraction(parsed)
        text = " | ".join(filter(None, [
            ex.sender, ex.what_they_want, ex.requested_action, ex.what_this_is,
            *ex.key_facts, *ex.worry_reasons,
            *[s.evidence for s in ex.scam_signals]]))
        signals = triage.merge_signals(ex.scam_signals, triage.run_heuristics(text))
        level = triage.worry_level(ex.document_type, signals)
        print(f"{p['name']} ({p['degradation']}): level={level} "
              f"signals={[s.id for s in signals]}")


if __name__ == "__main__":
    main()