竞赛演示模式:首屏降噪与预置导览

- demo_mode 配置项(默认开):不弹初始设置,LLM/语义警告横幅降级为顶栏状态点
- 顶栏新增'开始演示'导览(驾驶舱→新岗位发现→Java演化→匹配诊断四步预置路线)
- 图谱默认降噪:场景/行业图层默认关、关系标签默认关(悬停/缩放显示)
- 演化页默认锁定 Java 强样例;数据版本徽标标注'(模拟)';联系方式移入设置页
- start.bat/start.sh 启动脚本
This commit is contained in:
RoyirinRosmontis
2026-08-12 16:25:37 +08:00
parent 33aee6b8ae
commit 3329c55e06
6 changed files with 637 additions and 535 deletions
+8 -3
View File
@@ -93,6 +93,7 @@ def health() -> dict:
"llm_ready": ready, "offline_fallback": not ready,
"embed": semantic.status(_cfg),
"guided": bool(_cfg.get("guided")),
"demo_mode": bool(_cfg.get("demo_mode", True)),
"mode": "online" if ready else "offline"})
@@ -221,6 +222,7 @@ class ConfigBody(BaseModel):
embed_api_base_url: str | None = None
embed_api_model: str | None = None
guided: bool | None = None # 初始设置引导完成标记
demo_mode: bool | None = None # 竞赛演示模式开关
mode: str | None = None # demo | live
@@ -243,6 +245,7 @@ def _public_config() -> dict:
},
"embed": semantic.status(_cfg),
"mode": str(_cfg.get("mode", "demo")),
"demo_mode": bool(_cfg.get("demo_mode", True)),
"offline_fallback": not ready,
}
@@ -290,15 +293,17 @@ def save_config(body: ConfigBody) -> dict:
updates["embed_api_model"] = body.embed_api_model.strip()
if body.guided is not None:
updates["guided"] = bool(body.guided)
if body.demo_mode is not None:
updates["demo_mode"] = bool(body.demo_mode)
save_runtime_settings(updates)
# 热生效:令牌、模式与 LLM/语义模型配置立即更新到运行配置(下次调用即读取)
for k in ("access_token", "mode", "llm_api_key", "llm_base_url", "llm_model",
"embed_model_path", "embed_provider", "embed_api_key",
"embed_api_base_url", "embed_api_model", "guided"):
"embed_api_base_url", "embed_api_model", "guided", "demo_mode"):
if k in updates:
if updates[k]:
_cfg[k] = updates[k]
if updates[k] or isinstance(updates[k], bool):
_cfg[k] = updates[k] # 布尔 False 也要写入(如关闭演示模式)
else:
_cfg.pop(k, None)
logger.info("运行时设置已保存到 config.json: %s", sorted(updates))