| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- # -*- coding: utf-8 -*-
- """输出效果模拟:按 SKILL.md 模板渲染四类典型回答(数据全部来自 pages.json)"""
- import json
- from pathlib import Path
- HERE = Path(__file__).parent
- data = json.loads((HERE / "pages.json").read_text(encoding="utf-8"))
- pages = data["pages"]
- base = data["base_url"]
- vis = [p for p in pages if p["visible"]]
- def find(q):
- """按 SKILL.md 层级匹配:同层收集全部命中,高层命中则低层不参与"""
- q = q.strip()
- t1 = [p for p in vis if p["name"] == q]
- if t1: return t1
- t2 = [p for p in vis if q in p["aliases"]]
- if t2: return t2
- return [p for p in vis if q in p["name"]
- or any(q in a for a in p["aliases"])
- or any(q in k for k in p["keywords"])]
- # ===== 场景 A1:帮我打开风门监测页面 =====
- hits = find("风门")
- print("=" * 60)
- print("【模拟 A1】用户:帮我打开风门监测页面")
- print("-" * 60)
- p = next(x for x in hits if x["id"] == "gate")
- print(f'已为您找到【{p["name"]}】页面({p["category"]}·{p["group"]}):')
- print(f'📖 功能:{p["desc"]}')
- print(f'🔗 立即打开:[{p["name"]}]({base}{p["path"]})')
- # ===== 场景 A2:给我网页地图(瓦斯类筛选) =====
- print()
- print("=" * 60)
- print("【模拟 A2】用户:给我网页地图,只看瓦斯类")
- print("-" * 60)
- gas = [p for p in vis if p["category"] == "通防监控" and p["group"] == "瓦斯监控"]
- gate = p # 保存场景A1找到的风门页,供A4使用
- print("# 🗺️ 通防平台网页地图(瓦斯监控)")
- print(f"当前部署地址:{base}(说\"将网址换成 xxx\"可切换)\n")
- for gp in gas:
- print(f'- [{gp["name"]}]({base}{gp["path"]}) —— {gp["desc"]}')
- # ===== 场景 A3:将网址换成 http://10.120.3.15:8092 =====
- print()
- print("=" * 60)
- print("【模拟 A3】用户:将网址换成 http://10.120.3.15:8092")
- print("-" * 60)
- old, new = base, "http://10.120.3.15:8092"
- home = next(p for p in vis if p["id"] == "model-3d")
- print(f"✅ 网址前缀已更换:{old} → {new}")
- print(f'示例(平台首页3D):[{new}{home["path"]}]({new}{home["path"]})')
- print("之后所有页面链接均使用新前缀。")
- # ===== 场景 A4:风门怎么远程开 =====
- print()
- print("=" * 60)
- print("【模拟 A4】用户:风门怎么远程开?")
- print("-" * 60)
- print(f'【{gate["name"]}】操作指引:')
- print(f'🔗 页面:[{gate["name"]}]({base}{gate["path"]})')
- for i, step in enumerate(gate["usage"], 1):
- print(f"{i}. {step}")
- print(f'💡 提示:{gate["usage_tip"]}')
- # ===== 附加:歧义场景演示——网络解算 =====
- print()
- print("=" * 60)
- print("【附加模拟】用户:帮我打开网络解算页面")
- print("-" * 60)
- hits2 = find("网络解算")
- if len(hits2) == 1:
- p2 = hits2[0]
- print(f'已为您找到【{p2["name"]}】页面:\n🔗 立即打开:[{p2["name"]}]({base}{p2["path"]})')
- else:
- print(f'「网络解算」匹配到 {len(hits2)} 个页面,请按需点选:')
- for i, p2 in enumerate(hits2[:3], 1):
- print(f'{i}. [{p2["name"]}]({base}{p2["path"]}) —— {p2["desc"]}')
- # ===== 附加:全量地图规模 =====
- print()
- print("=" * 60)
- print(f"附:全量地图规模 = {len(vis)} 个可见页面,按 {data['stats']['categories']} 大类组织;含操作指引页面 {data['stats']['with_usage']} 个")
|