jarvis-cloud / modules /deep_diagnostics.py
Jarvis2345's picture
Upload folder using huggingface_hub
2dae9bb verified
Raw
History Blame Contribute Delete
2.33 kB
"""
modules/deep_diagnostics.py - Phase 8 deep diagnostic report
Aggregates high-signal outputs from:
- system_advisor
- analytics
- thermal trends
- RAM patterns
- disk health
- driver anomalies
- file intelligence
- clipboard intelligence
"""
from __future__ import annotations
import json
import os
from datetime import datetime
from config import DATA_DIR
REPORT_PATH = os.path.join(DATA_DIR, "deep_diagnostic_report.json")
def generate_report() -> dict:
report = {"generated": datetime.now().isoformat()}
try:
from modules.system_advisor import get_full_report
report["system"] = get_full_report()
except Exception:
report["system"] = ""
try:
from engines.analytics_engine import generate_daily_briefing
report["analytics"] = generate_daily_briefing()
except Exception:
report["analytics"] = ""
for key, fn in [
("thermal", ("modules.thermal_trends", "trend_report", 180)),
("ram", ("modules.ram_trends", "pattern_report", 240)),
("disk", ("modules.disk_health", "health_report", 180)),
("drivers", ("modules.driver_anomaly", "report", 48)),
]:
try:
mod_name, attr, arg = fn
mod = __import__(mod_name, fromlist=[attr])
report[key] = getattr(mod, attr)(arg)
except Exception:
report[key] = ""
try:
from modules.file_intelligence import advisory
report["files"] = advisory()
except Exception:
report["files"] = ""
try:
from modules.clipboard_intelligence import summary
report["clipboard"] = summary()
except Exception:
report["clipboard"] = ""
os.makedirs(os.path.dirname(REPORT_PATH), exist_ok=True)
try:
with open(REPORT_PATH, "w", encoding="utf-8") as f:
json.dump(report, f, indent=2)
except Exception:
pass
return report
def summary() -> str:
r = generate_report()
parts = [r.get("system", ""), r.get("thermal", ""), r.get("ram", ""), r.get("disk", ""), r.get("drivers", "")]
parts = [p for p in parts if p]
if not parts:
return "Deep diagnostics unavailable."
return " ".join(parts[:5])[:800]