Avoid overstating fallback AI bulletin reads

The city decision fallback path is generated when the full DeepSeek city-airport read has not completed, so the reasoning copy now labels the state as fast evidence mode instead of saying the AI read is normal.

Constraint: Fallback output may use only DEB, model cluster, and latest observation evidence

Rejected: Keep 'AI read normal' wording | it implies a completed AI interpretation when the fallback path is active

Confidence: high

Scope-risk: narrow

Tested: pytest tests/test_web_observability.py::test_city_ai_fallback_reasoning_identifies_fast_evidence_mode tests/test_web_observability.py::test_city_ai_partial_json_trims_dangling_taf_clause tests/test_web_observability.py::test_city_ai_schema_completion_trims_dangling_taf_clause -q
This commit is contained in:
2569718930@qq.com
2026-04-27 09:45:11 +08:00
parent 504efcbb49
commit ee2a5338bb
3 changed files with 7 additions and 5 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
## 1.5.5 - 2026-04-27
- 城市决策卡新增 AI 机场报文解读缓存说明:页面内存缓存保留 loading / 流式片段 / 最终结果,`localStorage` 保存最终成功 payload,后端 AI 缓存不再因 `local_time` 变化失效
- 城市决策卡兜底文案明确为“AI 机场报文解读正常”,不再使用“AI 增强可后补 / 不阻塞”这类容易被误解为 AI 未解读的表述
- 城市决策卡兜底文案明确标记“快速证据模式”,避免在 DeepSeek 未完整返回时误写成“AI 机场报文解读正常”
- 城市决策卡市场层改用完整 `all_buckets` 并严格识别 exact / range / or higher / or lower 温度桶方向,避免最高温中枢错配到不合理尾部桶
- 温度桶标签统一规范化 `C/F/°C/°F`,修复 `31°°C` 这类重复单位展示
- 决策卡展示文案将“概率差”收口为“模型-市场差”,明确口径为 `模型概率 - 市场隐含概率`
+4 -2
View File
@@ -100,7 +100,7 @@ def test_metrics_endpoint_returns_prometheus_payload():
assert 'polyweather_http_requests_total' in response.text
def test_city_ai_fallback_reasoning_says_ai_read_is_normal():
def test_city_ai_fallback_reasoning_identifies_fast_evidence_mode():
payload = scan_terminal_service._build_city_ai_fallback(
{
"city_display_name": "Tokyo",
@@ -128,7 +128,9 @@ def test_city_ai_fallback_reasoning_says_ai_read_is_normal():
reason="preview",
)
assert "AI 机场报文解读正常" in payload["reasoning_zh"]
assert "当前为快速证据模式" in payload["reasoning_zh"]
assert "完整 AI 机场报文解读返回后再合并" in payload["reasoning_zh"]
assert "AI 机场报文解读正常" not in payload["reasoning_zh"]
assert "后补" not in payload["reasoning_zh"]
assert "AI 增强可作为后续补充" not in payload["reasoning_zh"]
+2 -2
View File
@@ -720,12 +720,12 @@ def _build_city_ai_fallback(
reasoning_zh = str(partial_ai.get("reasoning_zh") or "").strip() or (
f"AI {bulletin_zh}解读已用于校准日内节奏;DEB 与多模型集合继续约束最高温中枢,后续{source_name_zh}用于确认是否需要上调或下修。"
if partial_ai
else f"AI {bulletin_zh}解读正常;当前结合 DEB、多模型集合和最新{source_name_zh}共同支撑本轮最高温中枢判断"
else f"当前为快速证据模式;DEB、多模型集合和最新{source_name_zh}共同支撑本轮最高温中枢,完整 AI {bulletin_zh}解读返回后再合并"
)
reasoning_en = str(partial_ai.get("reasoning_en") or "").strip() or (
f"The AI {bulletin_en} read is already used to calibrate the intraday pace; DEB and the model cluster still constrain the high-temperature center, while later {source_name_en} updates confirm whether to revise it."
if partial_ai
else f"The AI {bulletin_en} read is available; DEB, the model cluster and latest {source_name_en} jointly support the current daily-high center."
else f"This is the fast evidence mode; DEB, the model cluster and latest {source_name_en} jointly support the current daily-high center, and the full AI {bulletin_en} read will be merged when available."
)
risks_zh = [f"后续{source_name_zh}若明显偏离模型路径,需及时修正最高温中枢。"]
risks_en = [f"If later {source_name_en} updates diverge from the model path, revise the daily-high center promptly."]