diff --git a/src/fgai/dashboard.py b/src/fgai/dashboard.py index e373603..03d7863 100644 --- a/src/fgai/dashboard.py +++ b/src/fgai/dashboard.py @@ -70,7 +70,7 @@ HTML = """

AI Assessment

LLM assessment disabled.

Anomalies

Recommendations

-

Related Activity Across Sources

Block Candidates

Threat Intelligence

Policy Findings

+

Field Baseline Deviations

Related Activity Across Sources

Block Candidates

Threat Intelligence

Policy Findings

Diagnostics

Runtime Configuration

@@ -148,6 +148,10 @@ async function refresh() { ]); const reputationRows = Object.entries(data.reputation || {}).map(([ip, intel]) => ({ip, ...intel})); const relatedRows = (data.cross_source_correlations || []).flatMap(correlation => (correlation.samples || []).map(sample => ({source_ip: correlation.source_ip, ...sample}))); + const fieldRows = Object.entries(data.field_deviations || {}).flatMap(([entity, deviations]) => (deviations || []).map(item => ({entity, ...item}))); + document.getElementById('fieldDeviations').innerHTML = table(fieldRows, [ + {label:'Entity', key:'entity'}, {label:'Stream', key:'stream_id'}, {label:'Field', key:'field'}, {label:'Score', key:'score'}, {label:'Evidence', key:'reason'} + ]); document.getElementById('relatedActivity').innerHTML = table(relatedRows, [ {label:'Source IP', key:'source_ip'}, {label:'Stream', key:'stream'}, {label:'Time', key:'timestamp'}, {label:'Type', key:'type'}, {label:'Action', key:'action'}, {label:'Severity', key:'severity'}, diff --git a/src/fgai/llm.py b/src/fgai/llm.py index e2972ed..f7010a2 100644 --- a/src/fgai/llm.py +++ b/src/fgai/llm.py @@ -60,6 +60,7 @@ def ollama_dashboard_assessment(analysis: dict[str, object], model: str | None = "diagnostics": analysis.get("diagnostics", {}), "capabilities": analysis.get("capabilities", {}), "cross_source_correlations": analysis.get("cross_source_correlations", [])[:20], + "field_deviations": analysis.get("field_deviations", {}), } return ollama_summary( [],