--- title: "战略风险" description: "将所有情报模块合成为统一战略评估的综合风险评分,包含独具特色的 Pentagon Pizza Index 与完整的服务端风险计算流程 —— 战略风险层融合冲突、经济、能源、网络与舆情信号,为分析师提供跨领域、可追溯的单一分数,用于监控地缘紧张升级与全球系统性风险拐点。" --- Strategic Risk 系统提供一个用于全球风险分诊的综合仪表盘。其服务端发布的头条评分是前 5 名国家不稳定指数(CII)的汇总,面板在该头条周围叠加额外的聚合、基础设施、战区姿态、突发新闻、制裁和辐射监测上下文。 ## Strategic Risk 概览 Strategic Risk 概览显示服务端 Strategic Risk 头条以及来自浏览器面板的附近运营上下文。 ### 服务端评分与浏览器回退(0-100) 显示的/服务端头条评分来自 `GetRiskScores.strategicRisks[0]`。 服务端按 `combinedScore` 加权前 5 名 CII 国家推导它, 而非由累加式面板上下文公式得出: ``` topScores = top 5 countries by combinedScore weights = [1.00, 0.85, 0.70, 0.55, 0.40] weightedAvg = sum(topScores[i] * weights[i]) / sum(weights) headline = round(weightedAvg * 0.70 + 15) ``` 具体的 top-5 窗口、缩放因子、下限和严重性等级,请参见 [CII Risk Scoring Methodology](/zh/methodology/cii-risk-scores#3-战略风险汇总)。 当缓存的服务端分数不可用时,浏览器可渲染一个本地 回退概览,综合地图侧的聚合、基础设施、战区 姿态、突发新闻、制裁、辐射监测信号,以及本地可用的 CII 摘要: ``` compositeScore = convergenceScore * 0.30 + ciiRiskScore * 0.50 + infraScore * 0.20 + theaterBoost + breakingBoost + sanctionsScore + radiationScore ``` 这些累加项是本地回退上下文,而非服务端 Strategic Risk 合约。`sanctionsScore` 上限为 10,来自新增制裁条目、 最大国家进入量和受制裁船舶/航空器计数; `radiationScore` 上限为 12,来自辐射监测峰值、升高读数 与佐证观测,并会被低置信度或相互矛盾的观测下调。 ### 风险等级 浏览器面板与服务端 API 有意为同一 0-100 头条评分暴露两套 相关但不同的等级方案。 **面板可见的显示标签**使用与国家风险行相同的五个 CII 对齐等级: | 头条评分 | 面板标签 | 含义 | |----------------|-------------|---------| | >=81 | **严重** | 活跃危机或重大升级 | | 66-80 | **高** | 需密切监测的显著不稳定性 | | 51-65 | **升高** | 高于常态的活动模式 | | 31-50 | **正常** | 基线地缘政治活动 | | <31 | **低** | 异常平静期 | **服务端/在线枚举标签**保持 `GetRiskScores` 返回的三级 `StrategicRisk.level` 合约: | 头条评分 | `StrategicRisk.level` | 含义 | |----------------|-----------------------|---------| | 70-100 | `SEVERITY_LEVEL_HIGH` | 多重聚合危机 | | 40-69 | `SEVERITY_LEVEL_MEDIUM` | 全球紧张加剧 | | 0-39 | `SEVERITY_LEVEL_LOW` | 较低的全球战略压力 | API 客户端应将 `StrategicRisk.level` 视为服务端严重性枚举, 将 Strategic Risk 面板标签视为 `StrategicRisk.score` 的显示映射。 ### 统一告警系统 来自所有模块的告警通过**时空去重**合并: - **时间窗口**:2 小时内的告警可合并 - **距离阈值**:200 公里内的告警可合并 - **同一国家**:影响同一国家的告警可合并 当告警合并时,它们成为**复合告警**,展示完整全貌: ``` Type: Composite Alert Title: Convergence + CII + Infrastructure: Ukraine Components: - Geographic Convergence: 4 event types in Kyiv region - CII Spike: Ukraine +15 points (Critical) - Infrastructure: Black Sea cables at risk Priority: Critical ``` ### 告警优先级 告警优先级与服务端 Strategic Risk High/Medium/Low 等级分离。下文对 Critical 和 High CII 的引用使用 [国家不稳定指数](/zh/country-instability-index#不稳定性等级) 中记录的国家不稳定指数国家评分等级。 | 优先级 | 判定条件 | |----------|----------| | **严重** | CII 国家严重等级(81-100)、聚合有 4+ 类型或评分 ≥90、级联严重影响、高影响辐射/制裁信号 | | **高** | CII 国家高等级(66-80)或 CII 变动 ≥30 分、聚合有 3+ 类型或评分 ≥70、级联影响 ≥5 个国家 | | **中** | CII 国家升高等级或 CII 变动 ≥15 分、聚合评分 ≥50、级联中等影响或 ≥3 个国家 | | **低** | 轻微变动与低影响事件 | ### 趋势检测 国家级 CII 行通过 `dynamicScore` 追踪约 24 小时变动: - `dynamicScore` 是范围 -100 到 100 的有符号 delta,基准为最近有效的 CII 前序快照。 - 正值表示评分上升,负值表示下降,`0` 表示稳定或无有效前序快照。 - 趋势标签使用服务器死区:大于 `+1` 为上升,小于 `-1` 为下降,`-1` 到 `+1` 之间为稳定。 服务端发布的全球 `StrategicRisk` 头条不同:它目前 在发布前 5 名 CII 汇总评分时将 `trend` 设为稳定。如果缓存 服务端分数不可用,浏览器回退会从本地累加上下文计算自己的 升级/稳定/降级面板趋势;该 回退趋势是 UI 连续性信号,而非权威服务端 Strategic Risk 趋势合约。 ## Pentagon Pizza Index(PizzINT) 仪表盘集成了来自政府与军事设施附近战略地点的实时人流数据。这一"Pizza Index"概念通过追踪五角大楼、兰利及其他设施附近餐厅的深夜活动峰值,提供一种非传统的危机活动指标。 ### 工作原理 系统对受监测地点聚合"相对于平常的百分比"指标: 1. **地点**:五角大楼、CIA、NSA、国务院及其他设施附近的快餐店、披萨店与便利店 2. **聚合**:活动百分比取平均,上限为 100% 3. **峰值检测**:超过基线的地点会被标记 ### DEFCON 式告警 聚合活动映射到 5 级战备量表: | 等级 | 阈值 | 标签 | 含义 | |-------|-----------|-------|---------| | **DEFCON 1** | ≥85% | 最高活动 | 最高战备;危机响应已激活 | | **DEFCON 2** | 70% – 84% | 高活动 | 高活动度;重大事件进行中 | | **DEFCON 3** | 50% – 69% | 升高活动 | 升高;高于常态运作 | | **DEFCON 4** | 25% – 49% | 高于正常 | 提高警戒 | | **DEFCON 5** | <25% | 正常活动 | 正常和平时期运作 | ### World Monitor 紧张对 该指标还显示 World Monitor 根据 GDELT 事件导出数据独立计算的紧张度评分: | 对 | 监测关系 | |------|----------------------| | 美国 ↔ 俄罗斯 | 主要核对手 | | 俄罗斯 ↔ 乌克兰 | 活跃冲突区 | | 美国 ↔ 中国 | 经济与军事竞争 | | 中国 ↔ 台湾 | 跨海峡军事与政治压力 | | 美国 ↔ 伊朗 | 中东地区紧张 | | 以色列 ↔ 伊朗 | 直接打击与代理人冲突 | | 伊朗 ↔ 海合会 | 伊朗与海湾国家:沙特阿拉伯、阿联酋、卡塔尔、科威特、巴林、阿曼 | | 沙特阿拉伯 ↔ 也门 | 跨境袭击,计入所有也门行为体 | 每对显示: - **当前紧张度评分**(World Monitor 的归一化评分) - **趋势**(上升、下降、稳定),相对该对自身通常的周波动 - **百分比变化**:最近七天相对之前七天 - **佐证**(如有):最多三条高于通常水平的非新闻读数,例如机场关闭或该地区的军用飞机 这为活动等级提供了背景。评分与数据可用性规则见下文的国家对紧张度一节,读数见下文的"评分旁的佐证"一节。 ### 支撑端点 | 面 | 端点 | 备注 | |---|---|---| | Pentagon Pizza Index + GDELT 对 | `GET /api/intelligence/v1/get-pizzint-status` | 读取披萨活动;`include_gdelt=true` 时附带 World Monitor 独立计算的紧张对,每对带有其显著的 `evidence`。 | | GPS/GNSS 干扰 | `GET /api/intelligence/v1/list-gps-interference` | 读取归一化的 GPSJam Redis 键,可选 `region` 过滤。 | | 用于 CII 上下文的 OREF 警报 | `GET /api/intelligence/v1/list-oref-alerts` | 实时或历史 OREF 数据的直接 RPC;面板中继路径见 [以色列警报](/zh/panels/oref-sirens)。 | | 安全警示 | `GET /api/intelligence/v1/list-security-advisories` | Redis 支撑的警示源,供 CII 加成与下限使用。 | | 国家能源画像 | `GET /api/intelligence/v1/get-country-energy-profile` | 国家级能源上下文,供国家深入分析与战略风险分析。 | | 能源冲击场景 | `GET /api/intelligence/v1/compute-energy-shock` | 按需的国家 + 咽喉要道产品供应冲击。 | ### World Monitor 国家对紧张度 紧张度使用 GDELT 事件导出数据,而非 PizzINT 的 GPR 量表。物化器对 `shared/gdelt-tension-pairs.json` 中的国家对双向计数:美国–俄罗斯、俄罗斯–乌克兰、 美国–中国、中国–台湾、美国–伊朗、以色列–伊朗、伊朗–海合会、沙特阿拉伯–也门。一方 可以是一个组:伊朗–海合会把伊朗与每个海湾合作委员会成员国(沙特阿拉伯、阿联酋、 卡塔尔、科威特、巴林、阿曼)之间的事件合并为一个桶;成员国之间的事件不计入。GDELT 将胡塞武装行为体编码为普通的也门(`YEM`),因此沙特阿拉伯–也门计入所有也门行为体, 无论是胡塞武装还是政府。美国–委内瑞拉未达到最初每天 20 起冲突事件的测量门槛, 因此被排除。不使用任何 GDELT 查询 API。 新加入列表的国家对在其 90 天历史重建完成(见下文)之前显示**数据不足**,即 worker 首次带着它运行后 11 到 22 小时。进行中的那一天不会为新国家对建桶,因为它会 缺少更早的批次;该日完成后会被重建。中国–台湾、以色列–伊朗和沙特阿拉伯–也门与 十五天的小时窗口同时加入,因此该次部署后的最初几次运行会按从新到旧的顺序重建每个 已存储的日期。在最近十四个完整日补齐小时数据之前(两到四小时),原有国家对从完整日读取。 对每个 UTC 日,冲突强度为 QuadClass 3 或 4 事件的 `NumMentions × max(0, −GoldsteinScale)` 之和。每日桶还保留事件总数、冲突事件数以及 语调总和与计数(平均语调为两者之商)。事件归入其导出批次所在的 UTC 日。最近十五天 的每一天还按小时保存冲突计数与强度,因此评分可以跟随实时数据流,而不必等到午夜。 评分是实时七天均值在该对 90 个完整日强度中的百分位。实时均值为最近 168 个完整小时 除以七;一个小时在其全部四个 15 分钟导出批次到齐后才算完整,因此进行中的小时不计入。 如果最近 336 个小时中有任何一个缺失或不完整,该对回退到完整日:最近七天用于评分, 最近十四天用于变化。百分位为 `100 × (低于均值的天数 + 0.5 × 等于均值的天数) / 90`。 非平坦历史的最大值得 100;平坦历史得 50。它衡量的是相对事件强度,而非冲突发生的概率。 被评分的七天(实时或完整日)必须至少包含 140 起冲突事件(20 × 7)。全部 90 天都必须 具备全部 96 个导出批次。缺失或不完整的日期不算作平静日。在初始历史收集期间,或这些 条件不满足时,存储的 `insufficientPairs` 会列出该对;API 省略其数值评分,面板显示 **数据不足**。 变化为 `100 × (最近七天 − 之前七天) / 之前七天`,基于强度之和。实时情况下,两周为 最近 336 个完整小时在第 168 小时处切分,因此激增在一小时内即可显示;在完整日回退中, 两周为最近十四个完整日。每周恰好包含每个星期几各一次,因此新闻量的周末下降(周六和 周日约为 0.7 倍)会相互抵消,而不会被读作下降。 每对的趋势阈值是它自身通常的周波动:在其 90 个完整日中,每个十四天区间的七天相对 前七天变化绝对值的第 75 百分位(线性插值),且不低于 10%。变化高于阈值为上升,低于 其负值为下降,恰在边界上为稳定,因此波动大的国家对需要更大的变动。前一周为零而最近 强度为正时,百分比变化没有有限值,因此该对同样被隐藏。两周都为零时变化为零。 独立的 `gdelt:bulk:dyad-tension:v1` 快照保留 90 个完整日加上当天的桶,TTL 为 92 天, 并有自己的回放游标。健康检查以 45 分钟预算检查 15 分钟 worker 的 `seed-meta:gdelt:bulk:dyad-tension`。即使历史仍在存储中,API 也会隐藏超过 45 分钟的 快照。包含紧张度的响应绕过 HTTP 缓存,浏览器也不会为缓存回退保留紧张度响应。摄取 正常并不代表 90 天评分历史已就绪。在首次成功发布数据与元数据并设置其持久激活标记之前, 该探针保持待定状态;此后永久执行新鲜度检查。披萨数据中断不会隐藏可用的紧张度。 每次 worker 运行还会修复历史。它按从新到旧的顺序遍历窗口内缺失、缺少 96 个批次中任何 一个、缺少当天开始后才加入的国家对的桶,或(在最近十五天内)缺少完整小时数据的过去 日期,并从该日的 GDELT 导出文件中最多重建两个。重建的日期替换已存储的日期,而不是 叠加,因此收集的首个不完整日只计一次。只修复回放游标所在日之前的日期,因此实时合并 永远不会叠加到重建日上。只有当 GDELT 主文件列表列出某日全部 96 个导出文件时,worker 才会下载该日,并按列出的大小与 MD5 校验每个文件。存在上游缺口的日期会被跳过、不下载, 也不计入两个名额。下载或校验失败的日期会记录在快照的 `repairFailures` 中并跳过六小时, 以免它占用名额而让更早的日期等待。之后成功重建会清除其记录。修复每次运行有 60 秒预算。 预算耗尽时,worker 中止进行中的下载且不再开始新的下载。失败或超时会保留已完成的日期, 且绝不会延迟或导致实时发布失败。一次运行通常重建两天,下载较慢时有时只重建一天, 因此空窗口需要 45 到 90 次运行(11 到 22 小时)才能填满。 ### 评分旁的佐证 GDELT 评分衡量的是新闻报道量。在某对的评分下方,弹窗还会显示来自非新闻数据源、且高于 其通常水平的读数。这些读数永远不会改变评分。 | 读数 | 国家对(读取的国家) | 来源键 | 当前计数 | 通常水平 | |---|---|---|---|---| | 报告的打击 | 以色列–伊朗(以色列、伊朗);伊朗–海合会(六个海合会成员国);沙特阿拉伯–也门(沙特阿拉伯、也门) | `conflict:iran-events:v1`、`conflict:strike-pressure:v1` | 最近 72 小时内的打击报告,按落点所在国家统计 | 打击统计中从首个存储日到 72 小时之前一天的日均计数的三倍;需要 7 天 | | 机场 | 美国–伊朗(伊朗);以色列–伊朗;伊朗–海合会(海合会成员国与伊朗);沙特阿拉伯–也门;中国–台湾(台湾);俄罗斯–乌克兰(俄罗斯) | `aviation:notam:closures:v2`、`aviation:delays:intl:v3` | 受监测机场关闭(NOTAM 关闭,或至少 80% 的到期航班取消)、大多数航班取消(至少 50%),或被 NOTAM 限制 | 佐证历史中的日峰值均值;需要 7 天 | | 军用飞机 | 见下文 | `military:surges:history:v1` | 最新快照中某一运营国在该对战区内的飞机 | 来自同一 ADS-B 数据源的更早快照的均值,约六小时;需要 12 个快照 | | 台湾附近的中国军机、中国海军舰艇 | 中国–台湾 | `military:cross-strait-activity-bootstrap:v1` | 台湾国防部每日报告,不超过两天 | 其 90 天中位数,待该窗口有足够的报告日 | | 美国新制裁 | 美国–伊朗(伊朗);美国–俄罗斯(俄罗斯);美国–中国(中国) | `sanctions:changes:v1` | 最近 7 天内 SDN、Consolidated 和商务部 CSL 名单中涉及该国的新增条目 | 每个名单在其变更被记录的更早各周内的周速率,再按名单求和;需要 21 天 | 军用飞机读数针对一个地区内的一个运营国,因此在战区重叠处一架飞机只计一次:美国–伊朗 计入伊朗战区内的美国飞机,以色列–伊朗计入其中的以色列飞机;美国–中国计入台湾战区内的 美国飞机,中国–台湾计入其中的中国飞机;美国–俄罗斯计入波罗的海与黑海战区内的美国飞机; 俄罗斯–乌克兰计入黑海战区内的俄罗斯飞机;沙特阿拉伯–也门计入也门与红海战区内的沙特飞机。 读数达到其下限且至少为通常水平的 1.5 倍时显示。下限分别为 3 次打击、1 个受扰机场、6 架 军用飞机、20 架中国军机、10 艘中国舰艇和 3 条制裁新增。受扰机场在尚无通常水平时即可 显示;其他读数都需等到有通常水平。弹窗每对最多显示三条读数,并在括号中附上通常水平。 局限: - 打击报告记录的是打击落点,而非发射方,并包括拦截与声称。沙特阿拉伯同时属于伊朗–海合会 与沙特阿拉伯–也门,因此对利雅得的打击两者都计入。该数据源仅覆盖中东。 - 打击数据源只保留最新的 400 条事件。当它们全部落在 72 小时之内时,窗口内更早的打击 已经缺失,因此在数据源重新覆盖到窗口之外之前,打击读数不予显示。 - 制裁名单可能被暂时跳过(不可用,或可疑快照被暂扣)。那段时间的变更永远不会被记录, 因此这段时间不计入该名单的通常速率。保留型缺口会保存上一份快照,名单恢复时会补记 其变更,因此这段时间仍然计入。 - 飞机计数只能看到广播 ADS-B 的飞机。在 2026-10-25 检查的六小时快照中没有出现中国、 俄罗斯或沙特军用飞机,因此这些读数通常为零。 - 乌克兰没有受监测的机场。机场名称为英文城市名。 - 打击统计保留 30 天,始于 2026-10-19;制裁日志始于 2026-10-18。在各自达到最低历史 之前,打击与制裁没有通常水平,不会显示。 派生信号包每 15 分钟运行一次 `scripts/seed-tension-evidence.mjs`。它以 `{ updatedAt, live, days }` 写入 `intelligence:tension-evidence:v1`:`live` 保存每对的 当前读数,`days` 为每对、每种读数、每个 UTC 日保留一个值,共 90 天(机场与军用飞机取 日峰值,其余取最新值)。打击统计中仍保存的每一天都会被复制,因此错过的运行会被修复。 该键 TTL 为 100 天。每个数据源都必须在其自身的健康预算之内 (打击 45 分钟、机场延误 90、NOTAM 关闭 240、军用飞机 30、台湾海峡 720、制裁 720); 过期或格式错误的数据源只会丢弃它自己的读数,完全没有读数的运行会保留上一份数据。首次 发布设置 `seed-activated:intelligence:tension-evidence` 后,健康检查以 45 分钟预算检查 `seed-meta:intelligence:tension-evidence`。API 只附加显著读数,忽略超过 45 分钟的佐证, 佐证缺失时原样提供评分。 ## 相关资产 新闻聚类会自动用附近的关键基础设施进行增强。当一条报道提及某个地理区域时,系统会识别 600 公里范围内的相关资产,提供即时运营背景。 ### 资产类型 | 类型 | 来源 | 示例 | |------|--------|----------| | **管道** | 88 条全球路线 | Nord Stream、Keystone、Trans-Siberian | | **海底电缆** | 86 条主要电缆 | TAT-14、SEA-ME-WE、Pacific Crossing | | **AI 数据中心** | Epoch AI 注册表 | Azure East US、GCP Council Bluffs | | **军事基地** | 226 处设施 | Ramstein、Diego Garcia、Guam | | **核设施** | 100+ 处地点 | 核电站、武器实验室、浓缩设施 | ### 地点推断 系统通过以下方式推断新闻报道的地理焦点: 1. **关键词匹配**:根据热点关键词列表扫描标题(例如 "Taiwan" 映射到台湾海峡热点) 2. **置信度评分**:多个关键词匹配会提高地点置信度 3. **回退到冲突**:若无热点匹配,则检查活跃冲突区 ### 距离计算 资产按与推断地点的 Haversine 距离排序: ``` d = 2r × arcsin(√(sin²(Δφ/2) + cos(φ₁) × cos(φ₂) × sin²(Δλ/2))) ``` 每类资产最多显示 3 个,按距离排序。 ### 示例背景 一条关于"德国管道爆炸"的新闻聚类会显示: - **管道**:Nord Stream(23 公里)、Yamal-Europe(156 公里) - **电缆**:TAT-14 登陆点(89 公里) - **基地**:Ramstein(234 公里) 点击某项资产可将地图缩放至其位置并显示详细信息。 ## 服务端风险评分 API Strategic Risk 与国家不稳定指数(CII)评分在服务端预计算,而非在浏览器中计算。这消除了"冷启动"问题 — 新用户无需等待系统累积足够信息以生成评分即可看到数据。 ### 工作原理 `GetRiskScores` RPC 处理器(`get-risk-scores.ts`): 1. 从 ACLED 拉取近期的抗议/骚乱/战斗/爆炸/针对平民的暴力数据。当 ACLED 不返回事件时(WorldMonitor 没有 ACLED 访问权限),冲突与动荡改为读取 `gdelt:bulk:country-events:v1` 中的 GDELT 项(升级或持续水平)。 2. 从 Redis 拉取辅助数据源,包括 UCDP 冲突、中断、气候、火灾、GPS 干扰、伊朗事件、OREF 警报、警示、流离失所、机密新闻摘要、航空警报、地震、制裁以及军事/AIS CII 聚合数据。 3. 使用 [CII Risk Scoring Methodology](/zh/methodology/cii-risk-scores) 中记录的共享系数表为 31 个 Tier-1 国家计算 CII v14 评分。 4. 从按权重排名前 5 的 CII 评分推导 Strategic Risk。 5. 将结果缓存到 Redis,使用与当前 CII 公式版本绑定的带版本号的 live 与 stale 键。 ### CII 评分计算 每个国家的评分将静态基线(40%)与动态事件评分(60%)相结合,外加补充加成与下限。 **基线风险**(0-50 分):反映结构性脆弱性的静态地缘政治风险。按国家的权威数值位于 [CII Risk Scoring Methodology](/zh/methodology/cii-risk-scores#2-各国-baselinerisk-和-eventmultiplier)。 **事件评分**融合四个子组成: | 子组成 | 权重 | 评分依据 | |---------------|--------|---------| | Unrest | 25% | ACLED 抗议/骚乱、抗议致死人数、高严重度动乱与中断严重度;ACLED 不返回事件时加入 GDELT 抗议升级或持续水平项 | | Conflict | 30% | 按权重加权的 ACLED 战斗/爆炸/针对平民的暴力、致死人数与 OREF 警报压力;ACLED 不返回事件时加入 GDELT 冲突升级或持续水平项。打击通过综合分上的打击压力计入(v12),不在此处 | | Security | 20% | 位于该国的外国军用航班与舰船、航空关闭/延误与 GPS/GNSS 干扰 | | Information | 25% | 机密新闻头条与按国家归因的威胁摘要 | **下限**(最低评分保证): | 下限类型 | 阈值 | 触发条件 | |------------|-----------|---------| | UCDP 活跃战争 | >= 70 | 2 年窗口内 Tier-1 UCDP 死亡总数 > 1000 或事件数 > 100 | | UCDP 轻度冲突 | >= 50 | 2 年窗口内 Tier-1 UCDP 事件数 > 10 但未达战争阈值 | | 警示切勿旅行 | >= 60 | 可用时使用实时警示源;否则使用内嵌的国务院兜底表 | | 警示重新考虑 | >= 50 | 可用时使用实时警示源;否则使用内嵌的国务院兜底表 | | 打击压力(v12) | 40-70 | 衰减后的打击压力 `P >= 5`:`min(70, 40 + 8 * log2(P / 5))` | **补充加成**:警示加成(+15/+10/+5)、IL 的 OREF 混合加成(+15 活跃 + 历史分层)、气候(上限 +15)、火灾(上限 +8)、流离失所(上限 +20)、新闻紧迫度(上限 +5)、地震(上限 +25)、制裁(上限 +14)、AIS 中断(上限 +10)与打击压力(上限 +10)。 警示输出在每个 `CiiScore` 上同时暴露 `advisoryLevel` 和 `advisoryProvenance`。当评分使用了已播种的警示源时, `advisoryProvenance` 为 `live`;使用内嵌的国务院兜底 表时为 `fallback`;当无警示等级影响加成或下限时为 `absent`。 ### 事件显著性乘数 某些国家的事件比其他国家承载更多全球意义: | 乘数 | 国家 | 依据 | |------------|-----------|-----------| | 3.0x | 朝鲜 | 任何可见的动乱都极不寻常 | | 2.0-2.5x | 中国、俄罗斯、伊朗、沙特阿拉伯、古巴 | 威权国家压制抗议 | | 1.5-1.8x | 台湾、巴基斯坦、缅甸、委内瑞拉、阿联酋 | 区域闪点 | | 1.0-1.2x | 墨西哥、土耳其 | 中等显著性 | | 0.5-0.8x | 英国、法国、德国、波兰、乌克兰、叙利亚、也门、以色列、印度、巴西 | 抗议属常态,或事件已被下限覆盖 | | 0.3x | 美国 | 极高可观测性与高体量国内报道需要更强衰减 | ### Strategic Risk 推导 综合战略风险评分按排名前 5 的 CII 评分加权平均计算: ``` Weights: [1.0, 0.85, 0.70, 0.55, 0.40] (total: 3.5) Strategic Risk = (Σ CII[i] × weight[i]) / 3.5 × 0.7 + 15 ``` 排名靠前的国家贡献最大,较低排名国家的影响递减。 ### 数据源 | 来源 | Redis 键 | 用途 | |--------|-----------|----------| | ACLED | 通过 API 实时拉取 | 抗议、骚乱、战斗、爆炸、针对平民的暴力、致死人数 | | GDELT 国家事件 | `gdelt:bulk:country-events:v1` | 相对各国 28 天中位数的冲突与动荡升级,以及过去七天的持续占比,仅在 ACLED 不返回事件时使用 | | UCDP | `conflict:ucdp-events:v1` | 战争/轻度冲突下限 | | 中断 | `infra:outages:v1` | Unrest 中断加成 | | 气候 | `climate:anomalies:v2` | 气候严重度加成 | | 火灾 | `wildfire:fires-summary:v1`(由 `wildfire:fires:v1` 派生的按国家行) | 按严重度加权的野火加成 | | GPS 干扰 | `intelligence:gpsjam:v2` | Security 评分 | | 军事 CII | 中继/已播种的军事聚合 | Security 评分(自 v14 起仅计外国航班与舰船)与 AIS 中断加成 | | 航空警报 | 已播种的航空中断数据 | Security 评分 | | 中东打击 | `conflict:iran-events:v1`(72 小时)与 `conflict:strike-pressure:v1`(30 天计数) | 打击压力:按严重度加权的每日打击,经衰减后形成下限与加成 | | GDELT 打击 | `gdelt:bulk:country-events:v1`(打击计数) | ACLED 不返回事件时的全球打击压力 | | OREF 警报 | `relay:oref:history:v1` | IL 冲突加成与混合加成 | | 新闻威胁 | 机密头条摘要 | Information 评分与新闻紧迫度加成 | | 流离失所 | 人道主义流离失所聚合 | 流离失所加成 | | 地震 | 地震数据流 | 地震加成 | | 制裁 | 制裁国家聚合 | 制裁加成 | | 安全警示 | `intelligence:advisories:v1` 加内嵌兜底表 | 带 `advisoryProvenance` 的警示加成/下限 | ### 兜底行为 当上游数据不可用时(API 错误、速率限制): 1. **过期缓存**:在可用时返回最新的带版本号的过期风险评分载荷。 2. **基线兜底**:当无可用实时或过期载荷时,使用静态基线与可用下限返回评分。 RPC 在 `GetRiskScoresResponse` 上暴露兜底状态:过期缓存响应会设置 `degraded=true` 与 `stale=true`;仅冷启动基线响应会设置 `degraded=true` 与 `stale=false`。新鲜/缓存命中响应将两个标志都设为 `false`。 中继的 CII warm-ping 循环在 `scripts/ais-relay.cjs` 中处于活跃状态:它每 8 分钟调用一次 `/api/intelligence/v1/get-risk-scores`,由 RPC 处理器刷新实时/过期缓存状态,并在返回评分时写入 `seed-meta:intelligence:risk-scores` 以供健康监测。该 seed-meta 的 `recordCount` 反映的是实时信号密度覆盖率,而非原始 feed 可用性:它统计 CII 刷新中出现的、与评分相关的 Tier-1 冲突(ACLED、UCDP,或 ACLED 不返回事件时的实时 GDELT 基线)与新闻信号族。因此,安静但新鲜的实时 feed 可能产生 `COVERAGE_PARTIAL`;按来源的新鲜度仍以 feed 心跳视图为准。