feat: 法务场景深化-货款催收全流程+合同审查
后端: - detect_legal_subscene(): 意图检测,区分催收/审查/通用 - DEBT_COLLECTION_PROMPT: 催收6阶段流程prompt(回款概率+阶段判断+行动建议) - CONTRACT_REVIEW_PROMPT: 合同审查prompt(风险等级+条款清单+修改建议+谈判要点) - build_dynamic_prompt: 法务场景自动追加子方向prompt 种子数据: - seed_debt_templates.py: 5类催收文书模板(催款函/律师函/支付令/财产保全/执行申请) - seed_contract_risks.py: 5类合同风险条款库(买卖/承揽/租赁/合作/经销) Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
@@ -2989,6 +2989,80 @@ SCENE_PROMPTS: dict[str, str] = {
|
||||
}
|
||||
|
||||
|
||||
# ===== 法务场景子方向:催收 / 合同审查 =====
|
||||
|
||||
# 催收关键词:检测到时激活催收专用 prompt
|
||||
DEBT_COLLECTION_KEYWORDS = [
|
||||
"欠款", "拖欠", "催收", "催款", "货款", "回款", "收账", "讨债",
|
||||
"不付款", "不给钱", "赖账", "跑路", "失联", "欠钱",
|
||||
"逾期未付", "拖欠货款", "客户欠", "应收账款", "坏账",
|
||||
"支付令", "强制执行", "财产保全", "冻结账户",
|
||||
]
|
||||
|
||||
# 合同审查关键词
|
||||
CONTRACT_REVIEW_KEYWORDS = [
|
||||
"审查合同", "审合同", "看合同", "合同有没有问题", "合同风险",
|
||||
"合同条款", "这个合同", "帮我看看合同", "合同能不能签",
|
||||
"违约金过高", "付款条件", "管辖条款", "保密条款",
|
||||
"合同陷阱", "合同漏洞", "合同问题",
|
||||
]
|
||||
|
||||
|
||||
def detect_legal_subscene(question: str) -> str:
|
||||
"""检测法务问题的子方向。
|
||||
|
||||
Returns:
|
||||
'debt_collection' / 'contract_review' / 'general'
|
||||
"""
|
||||
q = question.lower()
|
||||
if any(kw in q for kw in DEBT_COLLECTION_KEYWORDS):
|
||||
return "debt_collection"
|
||||
if any(kw in q for kw in CONTRACT_REVIEW_KEYWORDS):
|
||||
return "contract_review"
|
||||
return "general"
|
||||
|
||||
|
||||
# 催收专用 prompt 段:追加到法务 system prompt 后
|
||||
DEBT_COLLECTION_PROMPT = """
|
||||
|
||||
【当前问题属于货款催收场景,请按以下框架回答:】
|
||||
|
||||
1. **回款概率评估**:根据欠款金额、逾期天数、对方经营状况、证据情况,给出回款概率(高>70%/中30-70%/低<30%)
|
||||
2. **当前阶段判断**:判断处于催收6阶段中的哪一阶段
|
||||
- 阶段1:友好催收(0-30天)→ 催收话术 + 催款函
|
||||
- 阶段2:正式催收(30-60天)→ 律师函 + 施压策略
|
||||
- 阶段3:支付令(60-90天)→ 支付令申请书(快速司法途径)
|
||||
- 阶段4:民事诉讼(90天+)→ 起诉状 + 财产保全申请
|
||||
- 阶段5:庭审准备 → 证据清单 + 代理思路
|
||||
- 阶段6:强制执行 → 执行申请书 + 财产线索排查
|
||||
3. **本阶段行动建议**:具体可执行的步骤,包括话术模板、文书要点
|
||||
4. **关键风险提示**:对方可能转移财产/无财产可供执行/诉讼时效等
|
||||
5. **下一步预判**:如果本阶段不成功,下一阶段是什么
|
||||
|
||||
注意:始终从老板(债权人)视角出发,目标是帮老板最快回款。
|
||||
"""
|
||||
|
||||
# 合同审查专用 prompt 段
|
||||
CONTRACT_REVIEW_PROMPT = """
|
||||
|
||||
【当前问题属于合同审查场景,请按以下框架回答:】
|
||||
|
||||
1. **风险等级**:高/中/低(综合评估)
|
||||
2. **风险条款清单**(按严重程度排序):
|
||||
- 🔴 高风险条款:说明风险 + 修改建议(给出替代条款文本)
|
||||
- 🟡 中风险条款:说明风险 + 修改建议
|
||||
- 🟢 低风险条款:提示即可
|
||||
3. **缺失条款提醒**:该类合同应有但未约定的条款(如保密/知识产权/退出机制)
|
||||
4. **谈判要点**:
|
||||
- 不能让的条款(签了就吃亏)
|
||||
- 可以让的条款(作为谈判筹码)
|
||||
- 谈判策略建议
|
||||
|
||||
审查维度:付款条款、违约责任、管辖争议、知识产权、退出机制、隐性陷阱(自动续约/排他条款等)。
|
||||
注意:从老板(合同一方)视角出发,目标是帮老板识别风险、争取有利条款。
|
||||
"""
|
||||
|
||||
|
||||
def build_dynamic_prompt(scene: str, question: str, kimi_client=None,
|
||||
fact_summary: str | None = None) -> str:
|
||||
"""基于场景+问题动态生成定制 system prompt。
|
||||
@@ -3006,6 +3080,14 @@ def build_dynamic_prompt(scene: str, question: str, kimi_client=None,
|
||||
"""
|
||||
base_prompt = SCENE_PROMPTS.get(scene, SCENE_PROMPTS["legal"])
|
||||
|
||||
# 法务场景:检测子方向,追加专用 prompt
|
||||
if scene == "legal":
|
||||
subscene = detect_legal_subscene(question)
|
||||
if subscene == "debt_collection":
|
||||
base_prompt += DEBT_COLLECTION_PROMPT
|
||||
elif subscene == "contract_review":
|
||||
base_prompt += CONTRACT_REVIEW_PROMPT
|
||||
|
||||
if not kimi_client:
|
||||
return base_prompt
|
||||
|
||||
|
||||
Reference in New Issue
Block a user