{
  "ok": false,
  "strict": false,
  "generated_at": "2026-06-26T21:36:49+00:00",
  "summary": {
    "errors": 1,
    "warnings": 0,
    "date": "2026-06-27",
    "message_length": 1862,
    "themes": 5,
    "companies": 15,
    "dashboard_url_configured": true,
    "dashboard_url_ok": true,
    "decision_digest_top_buy_theme": "",
    "source_coverage_targets": 59,
    "source_coverage_active": 59,
    "market_source_coverage_targets": 70,
    "market_source_coverage_active": 70,
    "source_followup_sources": 8,
    "source_followup_counts": {
      "fetch_error": 8
    }
  },
  "checks": [
    {
      "check": "telegram_message_length",
      "ok": true,
      "severity": "error",
      "detail": "message_length=1862, max=3900",
      "message_length": 1862
    },
    {
      "check": "telegram_strategy_sections_present",
      "ok": true,
      "severity": "error",
      "detail": "missing sections=[]",
      "missing_terms": []
    },
    {
      "check": "telegram_theme_count",
      "ok": true,
      "severity": "error",
      "detail": "themes=5, minimum=3",
      "theme_count": 5
    },
    {
      "check": "telegram_company_count",
      "ok": true,
      "severity": "error",
      "detail": "companies=15, minimum=3",
      "company_count": 15
    },
    {
      "check": "telegram_time_horizon_present",
      "ok": true,
      "severity": "error",
      "detail": "missing horizon terms=[]",
      "missing_terms": []
    },
    {
      "check": "telegram_scores_present",
      "ok": true,
      "severity": "error",
      "detail": "missing score terms=[]",
      "missing_terms": []
    },
    {
      "check": "telegram_related_tickers_present",
      "ok": true,
      "severity": "error",
      "detail": "ticker_hits=6, expected=3",
      "ticker_hits": [
        "9613.T",
        "6501.T",
        "9984.T",
        "6701.T",
        "9719.T",
        "9432.T"
      ]
    },
    {
      "check": "telegram_decision_digest_present",
      "ok": false,
      "severity": "error",
      "detail": "top_buy_theme=",
      "digest_summary": {
        "date": "2026-06-27",
        "stance": "テーマ分散で強めに監視",
        "high_conviction_buy": 0,
        "crowded_watch": 0,
        "risk_triggers": 5,
        "company_focus": 0,
        "top_buy_theme": "",
        "top_crowded_theme": "",
        "top_risk_theme": "スタートアップ・イノベーション"
      }
    },
    {
      "check": "telegram_government_coverage_present",
      "ok": true,
      "severity": "error",
      "detail": "targets=59 active=59",
      "coverage_summary": {
        "targets": 59,
        "active": 59,
        "active_monitoring_verified": 58,
        "active_monitoring_unverified": 1,
        "active_collection_verified": 59,
        "active_collection_unverified": 0,
        "candidate_only": 0,
        "missing": 0,
        "active_missing": 0,
        "high_missing": 0,
        "high_candidate_only": 0,
        "active_sources": 148,
        "candidate_sources": 16,
        "errors": 0,
        "warnings": 0,
        "category_count": 6
      }
    },
    {
      "check": "telegram_market_coverage_present",
      "ok": true,
      "severity": "error",
      "detail": "targets=70 active=70",
      "coverage_summary": {
        "targets": 70,
        "active": 70,
        "active_monitoring_verified": 68,
        "active_monitoring_unverified": 2,
        "active_collection_verified": 70,
        "active_collection_unverified": 0,
        "candidate_only": 0,
        "missing": 0,
        "active_missing": 0,
        "high_missing": 0,
        "high_candidate_only": 0,
        "active_sources": 148,
        "candidate_sources": 16,
        "errors": 0,
        "warnings": 0,
        "category_count": 9
      }
    },
    {
      "check": "telegram_source_followup_present",
      "ok": true,
      "severity": "error",
      "detail": "followup_sources=8",
      "source_freshness_summary": {
        "errors": 0,
        "warnings": 1,
        "active_sources": 148,
        "checked_recent": 148,
        "unchecked": 0,
        "stale_checked": 0,
        "source_error_rows": 3,
        "stale_or_quiet_sources": 0,
        "candidate_only_sources": 0,
        "covered_candidate_only_sources": 4,
        "silent_gap_sources": 0,
        "followup_sources": 8,
        "followup_counts": {
          "fetch_error": 8
        },
        "high_fetch_error_sources": 0,
        "documents_24h": 393,
        "documents_7d": 1843,
        "documents_30d": 13924,
        "inactive_state_rows": 11,
        "max_checked_age_hours": 30.0,
        "stale_document_days": 45
      },
      "followup_rows": [
        {
          "source_id": "mof_news_rss",
          "source_name": "財務省 新着情報RSS",
          "publisher_type": "government",
          "freshness_status": "ok",
          "followup_kind": "fetch_error",
          "followup_action": "取得エラー分類を確認し、リンク切れ以外のエラーを再取得・代替URLで処理してください。",
          "last_candidate_count": 40,
          "document_count": 529,
          "checked_age_hours": 0.18,
          "reason": ""
        },
        {
          "source_id": "oecd_ecoscope",
          "source_name": "OECD Ecoscope / Economic Outlook Blog",
          "publisher_type": "international_organization",
          "freshness_status": "ok",
          "followup_kind": "fetch_error",
          "followup_action": "取得エラー分類を確認し、リンク切れ以外のエラーを再取得・代替URLで処理してください。",
          "last_candidate_count": 31,
          "document_count": 46,
          "checked_age_hours": 0.12,
          "reason": ""
        },
        {
          "source_id": "meti_news",
          "source_name": "経済産業省 ニュースリリース",
          "publisher_type": "government",
          "freshness_status": "ok",
          "followup_kind": "fetch_error",
          "followup_action": "取得エラー分類を確認し、リンク切れ以外のエラーを再取得・代替URLで処理してください。",
          "last_candidate_count": 25,
          "document_count": 67,
          "checked_age_hours": 0.18,
          "reason": ""
        },
        {
          "source_id": "caa_news_rss",
          "source_name": "消費者庁 新着情報RSS",
          "publisher_type": "government",
          "freshness_status": "ok",
          "followup_kind": "fetch_error",
          "followup_action": "取得エラー分類を確認し、リンク切れ以外のエラーを再取得・代替URLで処理してください。",
          "last_candidate_count": 20,
          "document_count": 125,
          "checked_age_hours": 0.18,
          "reason": ""
        },
        {
          "source_id": "jetro_biznews_rss",
          "source_name": "JETRO ビジネス短信RSS",
          "publisher_type": "government",
          "freshness_status": "ok",
          "followup_kind": "fetch_error",
          "followup_action": "取得エラー分類を確認し、リンク切れ以外のエラーを再取得・代替URLで処理してください。",
          "last_candidate_count": 20,
          "document_count": 268,
          "checked_age_hours": 0.18,
          "reason": ""
        },
        {
          "source_id": "gsi_news",
          "source_name": "国土地理院 新着情報",
          "publisher_type": "government",
          "freshness_status": "source_error",
          "followup_kind": "fetch_error",
          "followup_action": "取得エラー分類を確認し、リンク切れ以外のエラーを再取得・代替URLで処理してください。",
          "last_candidate_count": 13,
          "document_count": 48,
          "checked_age_hours": 0.16,
          "reason": "ソースエラーが多いです error_count=10 status=None"
        },
        {
          "source_id": "iea_reports",
          "source_name": "IEA Reports",
          "publisher_type": "international_organization",
          "freshness_status": "source_error",
          "followup_kind": "fetch_error",
          "followup_action": "取得エラー分類を確認し、リンク切れ以外のエラーを再取得・代替URLで処理してください。",
          "last_candidate_count": 11,
          "document_count": 12,
          "checked_age_hours": 0.12,
          "reason": "ソースエラーが多いです error_count=10 status=403"
        },
        {
          "source_id": "nuveen_investment_outlook",
          "source_name": "Nuveen Investment Outlook",
          "publisher_type": "asset_manager",
          "freshness_status": "source_error",
          "followup_kind": "fetch_error",
          "followup_action": "取得エラー分類を確認し、リンク切れ以外のエラーを再取得・代替URLで処理してください。",
          "last_candidate_count": 6,
          "document_count": 7,
          "checked_age_hours": 0.12,
          "reason": "ソースエラーが多いです error_count=10 status=None"
        }
      ]
    },
    {
      "check": "telegram_dashboard_url_present",
      "ok": true,
      "severity": "warning",
      "detail": "PUBLIC_DASHBOARD_URL is included and production-safe",
      "dashboard_url": "https://35-221-72-238.sslip.io/dashboard.html",
      "url_quality": {
        "url": "https://35-221-72-238.sslip.io/dashboard.html",
        "ok": true,
        "format_ok": true,
        "placeholder": false,
        "host": "35-221-72-238.sslip.io"
      }
    }
  ],
  "message": ""
}
