from __future__ import annotations import re def is_political_inquiry(text: str) -> bool: """文本前置风控:政治人物/政治事件/政治图片相关询问一律拒绝。""" s = (text or "").strip().lower() if not s: return False kw = ( "政治", "涉政", "党政", "政治人物", "政治事件", "政治图片", "政治海报", "政治宣传", "领导人", "伟人", "元帅", "将军", "红色人物", "党史", "天安门", "人民大会堂", "中南海", "习近平", "毛泽东", "邓小平", "江泽民", "胡锦涛", "李克强", "周恩来", "特朗普", "拜登", "普京", "泽连斯基", "trump", "biden", "putin", "zelensky", "xi jinping", ) if any(k in s for k in kw): return True return bool(re.search(r"(元帅|将军|领导人|政治人物|政治事件).*(照片|图片|头像|原图)?", s)) def is_map_inquiry(text: str) -> bool: """地图类需求一律拒绝(按业务规则)。""" s = (text or "").strip().lower() if not s: return False kw = ( "地图", "地形图", "行政区划图", "世界地图", "中国地图", "卫星地图", "导航图", "航海图", "作战地图", "军事地图", "map", "topographic map", "satellite map", ) return any(k in s for k in kw)