feat: 示例问题老板视角过滤+画像定向+prompt禁止清单
后端: - filter_boss_perspective(): 关键词过滤员工视角问题 覆盖:加班费/被辞退/拖欠工资/工伤认定/产假/劳动仲裁/降薪扣工资等 - /samples: prompt加禁止清单+正确视角示例,返回前过滤 画像注入加行业定向(有industry时明确要求生成行业相关问题) - /topics: prompt加禁止清单+正确视角示例,返回前过滤 - generate_daily_topics: prompt加禁止清单+正确视角示例,返回前过滤 前端: - 审查FALLBACK_SAMPLES: 三个场景兜底示例均为老板视角,无需修改 Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
@@ -3291,6 +3291,64 @@ class DailyTopicStore:
|
||||
]
|
||||
|
||||
|
||||
# ===== 老板视角过滤 =====
|
||||
|
||||
# 员工视角关键词:出现这些问题时,说明 AI 从员工角度生成了问题
|
||||
EMPLOYEE_PERSPECTIVE_KEYWORDS = [
|
||||
"加班费", "加班工资", "调休怎么", "请假被", "申请休假",
|
||||
"被辞退", "被开除", "被裁员", "被解雇", "辞退补偿", "离职补偿",
|
||||
"拖欠工资", "拖欠我", "欠薪怎么", "老板不给",
|
||||
"社保没给我", "公积金没缴", "不给我签合同",
|
||||
"工伤认定", "工伤赔偿我", "伤残补助",
|
||||
"产假", "哺乳假", "年休假怎么休",
|
||||
"劳动仲裁我", "仲裁怎么告", "怎么告公司",
|
||||
"举报公司", "投诉公司", "举报老板",
|
||||
"试用期被", "转正被",
|
||||
"歧视我", "骚扰我", "针对我",
|
||||
"降我薪", "扣我工资", "罚我款",
|
||||
"不让我", "不给我",
|
||||
]
|
||||
|
||||
# 老板视角关键词:出现这些问题时,确认是老板视角
|
||||
BOSS_PERSPECTIVE_KEYWORDS = [
|
||||
"员工工伤后能开除", "员工被辞退要赔", "辞退员工", "开除员工",
|
||||
"员工不签合同", "员工仲裁", "员工离职",
|
||||
"拖欠货款", "客户欠款", "催收货款",
|
||||
"合伙人退股", "股东不出资", "股东纠纷",
|
||||
"税务稽查", "发票开错", "税务罚款",
|
||||
"扩张", "融资", "裁员", "招人",
|
||||
"公司股权", "公司分红", "公司经营",
|
||||
"业务转型", "业务线", "定价",
|
||||
]
|
||||
|
||||
|
||||
def filter_boss_perspective(questions: list[str]) -> list[str]:
|
||||
"""过滤掉员工视角的问题,只保留老板视角。
|
||||
|
||||
判断规则:
|
||||
1. 包含员工视角关键词 → 过滤掉
|
||||
2. 包含老板视角关键词 → 保留
|
||||
3. 中性问题(不含任何关键词) → 保留
|
||||
|
||||
Args:
|
||||
questions: AI 生成的问题列表
|
||||
|
||||
Returns:
|
||||
过滤后的老板视角问题列表
|
||||
"""
|
||||
valid = []
|
||||
for q in questions:
|
||||
q = str(q).strip()
|
||||
if not q or len(q) > 50:
|
||||
continue
|
||||
# 检查是否员工视角
|
||||
is_employee = any(kw in q for kw in EMPLOYEE_PERSPECTIVE_KEYWORDS)
|
||||
if is_employee:
|
||||
continue
|
||||
valid.append(q)
|
||||
return valid
|
||||
|
||||
|
||||
def generate_daily_topics(kimi_client, store: DailyTopicStore) -> dict:
|
||||
"""AI 生成当天 4 个场景的热点问题并存库。
|
||||
|
||||
@@ -3341,13 +3399,29 @@ def generate_daily_topics(kimi_client, store: DailyTopicStore) -> dict:
|
||||
请生成25-30个该场景下老板最焦虑、最关注的热点问题。
|
||||
|
||||
要求:
|
||||
1. 问题必须从老板/雇主视角出发(BossAi 用户是企业老板)
|
||||
1. **所有问题必须从老板/雇主视角出发**(BossAi 用户是企业老板,不是员工)
|
||||
2. 结合当前季节性和时事热点(如政策变化、节日前后、经济形势)
|
||||
3. 问题要具体、有场景感、能直接开问,不要空泛
|
||||
4. 涵盖该场景下不同方向,不要集中在某一类
|
||||
5. 问题长度 10-30 字
|
||||
6. 返回JSON数组格式:["问题1","问题2",...]
|
||||
7. 只返回JSON,不要其他文字"""
|
||||
7. 只返回JSON,不要其他文字
|
||||
|
||||
**严禁生成以下员工视角问题(违反则整批作废):**
|
||||
- 加班费怎么算、加班工资、调休、请假被拒、申请休假
|
||||
- 被辞退/被开除/被裁员后怎么维权、辞退补偿、离职补偿
|
||||
- 拖欠工资怎么追讨、老板不给钱、欠薪怎么告
|
||||
- 工伤认定、工伤赔偿、伤残补助怎么申请
|
||||
- 产假/哺乳假/年休假怎么休
|
||||
- 劳动仲裁怎么告公司、举报公司、投诉老板
|
||||
- 试用期被辞、转正被卡、被歧视、被骚扰
|
||||
- 降我薪、扣我工资、罚我款
|
||||
|
||||
**正确视角示例(老板问的):**
|
||||
- 员工工伤后能开除吗?(不是"工伤赔偿怎么申请")
|
||||
- 辞退员工要赔多少?(不是"被辞退怎么维权")
|
||||
- 员工不签合同有何风险?(不是"老板不签合同怎么办")
|
||||
- 客户拖欠货款3个月如何催收?(不是"拖欠工资怎么追")"""
|
||||
|
||||
try:
|
||||
answer = kimi_client.chat(
|
||||
@@ -3366,16 +3440,16 @@ def generate_daily_topics(kimi_client, store: DailyTopicStore) -> dict:
|
||||
results[scene] = {"count": 0, "source": "ai", "error": "JSON解析失败"}
|
||||
continue
|
||||
questions = json.loads(answer[start:end + 1])
|
||||
# 过滤和去重
|
||||
# 过滤:老板视角 + 去重
|
||||
boss_questions = filter_boss_perspective(questions)
|
||||
valid = []
|
||||
seen = set()
|
||||
for q in questions:
|
||||
q = str(q).strip()
|
||||
if q and q not in seen and len(q) <= 50:
|
||||
for q in boss_questions:
|
||||
if q not in seen:
|
||||
valid.append(q)
|
||||
seen.add(q)
|
||||
if len(valid) < 10:
|
||||
results[scene] = {"count": 0, "source": "ai", "error": "有效问题不足10个"}
|
||||
results[scene] = {"count": 0, "source": "ai", "error": f"过滤后有效问题不足10个(原始{len(questions)}个)"}
|
||||
continue
|
||||
store.upsert(scene, valid[:30], source="ai")
|
||||
results[scene] = {"count": len(valid[:30]), "source": "ai"}
|
||||
|
||||
Reference in New Issue
Block a user