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,
|
def build_dynamic_prompt(scene: str, question: str, kimi_client=None,
|
||||||
fact_summary: str | None = None) -> str:
|
fact_summary: str | None = None) -> str:
|
||||||
"""基于场景+问题动态生成定制 system prompt。
|
"""基于场景+问题动态生成定制 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"])
|
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:
|
if not kimi_client:
|
||||||
return base_prompt
|
return base_prompt
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
# CHG-20260901-001:法务场景深化 - 货款催收全流程 + 合同审查
|
||||||
|
|
||||||
|
## 背景
|
||||||
|
|
||||||
|
中小企业老板最高频、最痛、最愿意付费的法律需求是"催收货款"和"合同防坑"。
|
||||||
|
当前法务场景只做通用法律咨询,缺少针对这两个核心场景的深度服务能力。
|
||||||
|
|
||||||
|
## 原因
|
||||||
|
|
||||||
|
用户反馈 + 业务分析:
|
||||||
|
- 货款催收:每个中小企业老板都有欠款问题,从催收到执行是完整闭环
|
||||||
|
- 合同审查:签约前审查是"防患于未然",比事后打官司价值更大
|
||||||
|
- 当前法务场景的 AI 回答偏通用,缺少结构化流程引导和文书生成
|
||||||
|
|
||||||
|
## 目标
|
||||||
|
|
||||||
|
1. 货款催收:6 阶段全流程指引 + 每阶段文书生成 + 回款概率评估
|
||||||
|
2. 合同审查:上传合同 → AI 逐条审查 → 风险标红 → 修改建议 → 谈判要点
|
||||||
|
|
||||||
|
## 范围
|
||||||
|
|
||||||
|
- 法务场景 system prompt 深化
|
||||||
|
- 新增催收流程引导卡片
|
||||||
|
- 合同审查功能(复用上传 + AI 分析)
|
||||||
|
- 知识库补充催收文书模板、合同风险条款库
|
||||||
|
|
||||||
|
## 影响评估
|
||||||
|
|
||||||
|
| 维度 | 是否影响 | 影响说明 | 处理动作 | 状态 |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| 需求 | 是 | 新增货款催收、合同审查两个子方向 | 追加需求条目 | 待处理 |
|
||||||
|
| PRD | 是 | 法务场景功能扩展 | 追加 PRD 功能描述 | 待处理 |
|
||||||
|
| 任务 | 是 | 新增开发任务 | 追加 TASK 编号 | 待处理 |
|
||||||
|
| DB | 否 | 复用现有表结构 | 无 | 不涉及 |
|
||||||
|
| 后端 | 是 | system prompt 扩展、催收流程 API、合同审查 API | 修改 api.py + bossai.py | 待处理 |
|
||||||
|
| 前端 | 是 | ChatPanel 催收流程卡片、合同审查结果展示 | 修改 ChatPanel.tsx | 待处理 |
|
||||||
|
| 权限码 | 否 | 复用法务场景权限 | 无 | 不涉及 |
|
||||||
|
|
||||||
|
## 落地任务
|
||||||
|
|
||||||
|
- [ ] TASK-1:货款催收 system prompt 设计 + 6阶段流程
|
||||||
|
- [ ] TASK-2:催收文书模板入库(催收函/律师函/支付令申请/起诉状/执行申请)
|
||||||
|
- [ ] TASK-3:合同审查 system prompt 设计 + 风险条款库
|
||||||
|
- [ ] TASK-4:合同审查知识库补充(高频合同风险条款)
|
||||||
|
- [ ] TASK-5:前端催收流程卡片组件
|
||||||
|
- [ ] TASK-6:前端合同审查结果展示组件
|
||||||
|
- [ ] TASK-7:测试 + 部署
|
||||||
|
|
||||||
|
## 风险与回滚
|
||||||
|
|
||||||
|
- 风险:法务场景 prompt 过长导致 AI 回答质量下降
|
||||||
|
- 回滚方案:prompt 分支加载,催收/审查只在检测到相关关键词时激活
|
||||||
|
- 需要回归测试:法务场景通用咨询不受影响
|
||||||
@@ -0,0 +1,293 @@
|
|||||||
|
"""合同风险条款库 - 种子数据导入。
|
||||||
|
|
||||||
|
将中小企业高频合同类型的风险条款导入知识库(doc_type='contract_risk_clause'),
|
||||||
|
供法务参谋在合同审查场景中检索参考。
|
||||||
|
|
||||||
|
覆盖合同类型:买卖合同、承揽合同、租赁合同、服务合同、合作协议、经销合同
|
||||||
|
"""
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||||
|
from bossai import KnowledgeStore
|
||||||
|
|
||||||
|
|
||||||
|
CONTRACT_RISKS = [
|
||||||
|
# ===== 买卖合同风险 =====
|
||||||
|
{
|
||||||
|
"title": "买卖合同风险条款库",
|
||||||
|
"doc_type": "contract_risk_clause",
|
||||||
|
"category": "合同审查",
|
||||||
|
"source": "BossAi法务参谋",
|
||||||
|
"content": json.dumps({
|
||||||
|
"contract_type": "买卖合同",
|
||||||
|
"high_risk_clauses": [
|
||||||
|
{
|
||||||
|
"risk": "违约金过高",
|
||||||
|
"description": "违约金超过合同总额30%或超过实际损失30%",
|
||||||
|
"legal_basis": "民法典第585条,违约金过分高于损失可请求调整",
|
||||||
|
"modification": "改为:违约金按实际损失计算,上限不超过合同总额10%",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "无逾期付款违约金",
|
||||||
|
"description": "合同未约定逾期付款的违约责任",
|
||||||
|
"legal_basis": "民法典第577条,未约定违约金可主张实际损失但举证困难",
|
||||||
|
"modification": "增加:买方逾期付款的,按日万分之五支付违约金",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "验收标准模糊",
|
||||||
|
"description": "验收条款只写'符合质量标准'未明确具体标准",
|
||||||
|
"legal_basis": "民法典第621条,验收标准不明易引发争议",
|
||||||
|
"modification": "明确:验收标准为[具体国标/行标/企业标准],验收期为收到货物后7个工作日",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "所有权保留未约定",
|
||||||
|
"description": "未约定付清全款前货物所有权归卖方",
|
||||||
|
"legal_basis": "民法典第641条,所有权保留是卖方重要保障",
|
||||||
|
"modification": "增加:买方付清全部价款前,货物所有权仍归卖方所有",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"medium_risk_clauses": [
|
||||||
|
{
|
||||||
|
"risk": "付款周期过长",
|
||||||
|
"description": "付款周期超过90天",
|
||||||
|
"modification": "争取缩短至60天内,或分阶段付款(预付30%+发货前40%+验收后30%)",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "管辖约定不利",
|
||||||
|
"description": "管辖法院约定在对方所在地",
|
||||||
|
"modification": "改为:由原告所在地人民法院管辖,或由合同履行地法院管辖",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "无质量异议期",
|
||||||
|
"description": "未约定提出质量异议的期限",
|
||||||
|
"modification": "增加:买方应在收到货物后15日内提出书面质量异议,逾期视为验收合格",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"missing_clauses": [
|
||||||
|
"保密条款(防止商业信息泄露)",
|
||||||
|
"知识产权归属(定制产品尤其重要)",
|
||||||
|
"不可抗力条款(明确范围和通知义务)",
|
||||||
|
"解除条件(什么情况下可以解除合同)",
|
||||||
|
"争议解决方式(诉讼或仲裁,二选一)",
|
||||||
|
],
|
||||||
|
"negotiation_points": {
|
||||||
|
"cannot_concede": "违约金比例、管辖法院、付款条件",
|
||||||
|
"can_concede": "付款周期(可接受60天)、验收期(可延长至15天)",
|
||||||
|
"strategy": "先压违约金比例,再用付款周期做交换;管辖法院作为最后底线",
|
||||||
|
},
|
||||||
|
}, ensure_ascii=False),
|
||||||
|
},
|
||||||
|
# ===== 承揽合同风险 =====
|
||||||
|
{
|
||||||
|
"title": "承揽合同风险条款库",
|
||||||
|
"doc_type": "contract_risk_clause",
|
||||||
|
"category": "合同审查",
|
||||||
|
"source": "BossAi法务参谋",
|
||||||
|
"content": json.dumps({
|
||||||
|
"contract_type": "承揽合同",
|
||||||
|
"high_risk_clauses": [
|
||||||
|
{
|
||||||
|
"risk": "无验收和异议期",
|
||||||
|
"description": "未约定工作成果验收期限和异议提出期",
|
||||||
|
"legal_basis": "民法典第781条,承揽人完成工作后定作人应及时验收",
|
||||||
|
"modification": "增加:定作人应在收到工作成果后10日内验收,如有异议应在验收期内书面提出,逾期视为验收合格",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "无定作人协助义务",
|
||||||
|
"description": "定作人未提供必要协助(材料/场地/信息)时,承揽人无救济措施",
|
||||||
|
"legal_basis": "民法典第778条,定作人不履行协助义务承揽人可顺延工期或解除合同",
|
||||||
|
"modification": "增加:定作人未按约定提供协助的,工期顺延;逾期15日以上的,承揽人有权解除合同并要求赔偿",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "知识产权归属不清",
|
||||||
|
"description": "定制成果的知识产权归属未约定",
|
||||||
|
"legal_basis": "民法典第784条,承揽成果知识产权归属按约定",
|
||||||
|
"modification": "明确:工作成果的知识产权归[定作人/承揽人]所有,未经许可不得用于其他项目",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"medium_risk_clauses": [
|
||||||
|
{
|
||||||
|
"risk": "无留置权约定",
|
||||||
|
"description": "定作人不付款时,承揽人无留置工作成果的权利",
|
||||||
|
"modification": "增加:定作人未按期付款的,承揽人有权留置工作成果",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "材料风险分担不明",
|
||||||
|
"description": "原材料损毁风险由谁承担未约定",
|
||||||
|
"modification": "明确:定作人提供的材料,交付前风险由定作人承担;承揽人提供的材料,交付前风险由承揽人承担",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"missing_clauses": [
|
||||||
|
"保密条款(承揽人接触定作人商业信息)",
|
||||||
|
"转包限制(未经许可不得转包)",
|
||||||
|
"质保期(工作成果的保修期限)",
|
||||||
|
],
|
||||||
|
}, ensure_ascii=False),
|
||||||
|
},
|
||||||
|
# ===== 租赁合同风险 =====
|
||||||
|
{
|
||||||
|
"title": "租赁合同风险条款库",
|
||||||
|
"doc_type": "contract_risk_clause",
|
||||||
|
"category": "合同审查",
|
||||||
|
"source": "BossAi法务参谋",
|
||||||
|
"content": json.dumps({
|
||||||
|
"contract_type": "租赁合同",
|
||||||
|
"high_risk_clauses": [
|
||||||
|
{
|
||||||
|
"risk": "自动续约条款",
|
||||||
|
"description": "合同到期未书面通知则自动续约,且续约期限过长",
|
||||||
|
"legal_basis": "民法典第734条,租赁期满承租人继续使用且出租人未反对的视为不定期租赁",
|
||||||
|
"modification": "改为:合同到期前30日双方书面确认是否续约,未确认的合同到期终止",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "装修补偿缺失",
|
||||||
|
"description": "承租人装修后提前解约,无装修补偿约定",
|
||||||
|
"modification": "增加:承租人经同意的装修,合同到期或因出租人原因提前解约的,出租人按装修残值补偿",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "拆迁补偿归属不清",
|
||||||
|
"description": "租赁期间遇拆迁,补偿款归属未约定",
|
||||||
|
"modification": "明确:拆迁补偿中,停产停业损失补偿和装修补偿归承租人,房屋价值补偿归出租人",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"medium_risk_clauses": [
|
||||||
|
{
|
||||||
|
"risk": "租金调整机制缺失",
|
||||||
|
"description": "长期租赁无租金调整条款",
|
||||||
|
"modification": "增加:租金每[2年]调整一次,调整幅度不超过[10%]",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "转租限制不明",
|
||||||
|
"description": "能否转租及转租条件未约定",
|
||||||
|
"modification": "明确:承租人未经出租人书面同意不得转租;经同意转租的,转租期限不得超过原租赁期限",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"missing_clauses": [
|
||||||
|
"维修责任划分(房屋结构/设备/日常维修)",
|
||||||
|
"优先续租权(同等条件下承租人优先)",
|
||||||
|
"不可抗力条款(疫情/政策影响减租)",
|
||||||
|
],
|
||||||
|
}, ensure_ascii=False),
|
||||||
|
},
|
||||||
|
# ===== 合作协议风险 =====
|
||||||
|
{
|
||||||
|
"title": "合作协议风险条款库",
|
||||||
|
"doc_type": "contract_risk_clause",
|
||||||
|
"category": "合同审查",
|
||||||
|
"source": "BossAi法务参谋",
|
||||||
|
"content": json.dumps({
|
||||||
|
"contract_type": "合作协议/合伙协议",
|
||||||
|
"high_risk_clauses": [
|
||||||
|
{
|
||||||
|
"risk": "退出机制缺失",
|
||||||
|
"description": "合作方退出条件、退出补偿、退出后义务未约定",
|
||||||
|
"modification": "增加退出条款:合作方提前30日书面通知可退出;退出时按[评估价/原价/折价]回购份额;退出后2年内不得从事同类业务",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "决策机制不明",
|
||||||
|
"description": "重大事项决策权未明确,易陷入僵局",
|
||||||
|
"modification": "明确:日常事项多数决,重大事项(投资/融资/人事/分红)需[2/3以上]同意,僵局时[仲裁/第三方调解]",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "利润分配模糊",
|
||||||
|
"description": "分配比例/时间/条件不明确",
|
||||||
|
"modification": "明确:利润按[出资比例/约定比例]分配,每[季度/半年]分配一次,分配前预留[20%]作为风险准备金",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "竞业禁止缺失",
|
||||||
|
"description": "合作期间及结束后无竞业禁止约定",
|
||||||
|
"modification": "增加:合作期间及结束后[2年]内,不得直接或间接从事与合作项目竞争的业务",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"medium_risk_clauses": [
|
||||||
|
{
|
||||||
|
"risk": "知识产权归属不清",
|
||||||
|
"description": "合作成果的知识产权归属未约定",
|
||||||
|
"modification": "明确:合作前各自拥有的知识产权仍归各自所有;合作中产生的知识产权按[共有/某方所有]约定",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "保密条款缺失",
|
||||||
|
"description": "无保密义务约定",
|
||||||
|
"modification": "增加:双方对合作中获知的对方商业信息负有保密义务,保密期为合作期间及结束后[3年]",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"missing_clauses": [
|
||||||
|
"排他性约定(合作期间是否排他)",
|
||||||
|
"违约责任(合作方违约的具体赔偿)",
|
||||||
|
"争议解决(仲裁或诉讼)",
|
||||||
|
"终止条件(什么情况下合作终止)",
|
||||||
|
],
|
||||||
|
}, ensure_ascii=False),
|
||||||
|
},
|
||||||
|
# ===== 经销合同风险 =====
|
||||||
|
{
|
||||||
|
"title": "经销合同风险条款库",
|
||||||
|
"doc_type": "contract_risk_clause",
|
||||||
|
"category": "合同审查",
|
||||||
|
"source": "BossAi法务参谋",
|
||||||
|
"content": json.dumps({
|
||||||
|
"contract_type": "经销合同",
|
||||||
|
"high_risk_clauses": [
|
||||||
|
{
|
||||||
|
"risk": "窜货处罚过重",
|
||||||
|
"description": "经销商跨区域销售的处罚条款过于严厉",
|
||||||
|
"modification": "改为:首次窜货警告并罚款[合同总额5%],第二次罚款[10%],第三次可解除合同",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "最低采购量过高",
|
||||||
|
"description": "最低采购量要求超出经销商实际销售能力",
|
||||||
|
"modification": "根据历史销售数据设定合理最低采购量,或改为阶梯式目标",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "品牌授权范围过宽",
|
||||||
|
"description": "授权经销商使用商标的范围无限制",
|
||||||
|
"modification": "明确:商标仅限于经销产品销售使用,不得用于其他用途,合同终止后立即停止使用",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"medium_risk_clauses": [
|
||||||
|
{
|
||||||
|
"risk": "退换货条件苛刻",
|
||||||
|
"description": "滞销产品退换货条件过严",
|
||||||
|
"modification": "增加:滞销产品(3个月未售出)可按进货价[80%]退货",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"risk": "价格管控缺失",
|
||||||
|
"description": "无最低零售价约定,易引发价格战",
|
||||||
|
"modification": "增加:经销商零售价不得低于指导价的[90%],违规者按违约处理",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"missing_clauses": [
|
||||||
|
"区域保护(独家经销区域范围)",
|
||||||
|
"售后责任(谁负责售后维修)",
|
||||||
|
"品牌维护(广告投放和品牌维护义务)",
|
||||||
|
"合同终止后库存处理",
|
||||||
|
],
|
||||||
|
}, ensure_ascii=False),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""导入合同风险条款库到知识库。"""
|
||||||
|
k = KnowledgeStore()
|
||||||
|
count = 0
|
||||||
|
for risk in CONTRACT_RISKS:
|
||||||
|
try:
|
||||||
|
k.add(
|
||||||
|
title=risk["title"],
|
||||||
|
content=risk["content"],
|
||||||
|
doc_type=risk["doc_type"],
|
||||||
|
category=risk.get("category"),
|
||||||
|
source=risk.get("source", "BossAi"),
|
||||||
|
)
|
||||||
|
count += 1
|
||||||
|
print(f" 已导入: {risk['title']}")
|
||||||
|
except Exception as e:
|
||||||
|
print(f" 失败: {risk['title']} - {e}")
|
||||||
|
print(f"\n已导入 {count} 类合同风险条款库到知识库")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -0,0 +1,285 @@
|
|||||||
|
"""货款催收文书模板 - 种子数据导入。
|
||||||
|
|
||||||
|
将催收全流程6阶段的文书模板导入知识库(doc_type='debt_collection_template'),
|
||||||
|
供法务参谋在催收场景中生成对应文书。
|
||||||
|
|
||||||
|
阶段:
|
||||||
|
1. 友好催收(0-30天) → 催款函
|
||||||
|
2. 正式催收(30-60天) → 律师函
|
||||||
|
3. 支付令(60-90天) → 支付令申请书
|
||||||
|
4. 民事诉讼(90天+) → 起诉状 + 财产保全申请
|
||||||
|
5. 庭审准备 → 证据目录 + 代理词框架
|
||||||
|
6. 强制执行 → 强制执行申请书
|
||||||
|
"""
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||||
|
from bossai import KnowledgeStore
|
||||||
|
|
||||||
|
|
||||||
|
DEBT_TEMPLATES = [
|
||||||
|
# ===== 阶段1:催款函 =====
|
||||||
|
{
|
||||||
|
"title": "催款函模板(友好催收阶段)",
|
||||||
|
"doc_type": "debt_collection_template",
|
||||||
|
"category": "催收文书",
|
||||||
|
"source": "BossAi法务参谋",
|
||||||
|
"content": json.dumps({
|
||||||
|
"name": "催款函",
|
||||||
|
"stage": 1,
|
||||||
|
"stage_name": "友好催收(0-30天)",
|
||||||
|
"applicable": "逾期30天内,双方关系尚可,希望维护合作关系",
|
||||||
|
"elements": [
|
||||||
|
{"key": "creditor", "label": "债权人(我方)名称", "type": "text", "required": True},
|
||||||
|
{"key": "debtor", "label": "债务人(对方)名称", "type": "text", "required": True},
|
||||||
|
{"key": "contract_no", "label": "合同编号", "type": "text", "required": False},
|
||||||
|
{"key": "debt_amount", "label": "欠款金额(元)", "type": "text", "required": True},
|
||||||
|
{"key": "debt_reason", "label": "欠款事由(货款/服务费等)", "type": "text", "required": True},
|
||||||
|
{"key": "due_date", "label": "应付款日期", "type": "date", "required": True},
|
||||||
|
{"key": "overdue_days", "label": "逾期天数", "type": "number", "required": True},
|
||||||
|
{"key": "request_deadline", "label": "要求还款期限", "type": "date", "required": True},
|
||||||
|
{"key": "contact_person", "label": "联系人", "type": "text", "required": True},
|
||||||
|
{"key": "contact_phone", "label": "联系电话", "type": "text", "required": True},
|
||||||
|
],
|
||||||
|
"template_text": (
|
||||||
|
"催款函\n\n"
|
||||||
|
"{debtor}:\n\n"
|
||||||
|
"我司{creditor}与贵司于合同编号{contract_no}项下,"
|
||||||
|
"贵司尚欠我司{debt_reason}款项人民币{debt_amount}元,"
|
||||||
|
"该款项应于{due_date}支付,现已逾期{overdue_days}天。\n\n"
|
||||||
|
"鉴于双方长期合作关系,我司一直予以谅解。但该笔款项已严重影响我司资金周转,"
|
||||||
|
"请贵司于{request_deadline}前将上述款项支付至我司账户。\n\n"
|
||||||
|
"如贵司暂遇资金困难,请于收到本函后3个工作日内与我司联系,协商还款方案。\n"
|
||||||
|
"逾期未支付且未协商的,我司将不得不采取进一步法律措施。\n\n"
|
||||||
|
"{creditor}\n"
|
||||||
|
"联系人:{contact_person}\n"
|
||||||
|
"联系电话:{contact_phone}\n"
|
||||||
|
"{date}"
|
||||||
|
),
|
||||||
|
}, ensure_ascii=False),
|
||||||
|
},
|
||||||
|
# ===== 阶段2:律师函 =====
|
||||||
|
{
|
||||||
|
"title": "律师函模板(正式催收阶段)",
|
||||||
|
"doc_type": "debt_collection_template",
|
||||||
|
"category": "催收文书",
|
||||||
|
"source": "BossAi法务参谋",
|
||||||
|
"content": json.dumps({
|
||||||
|
"name": "律师函",
|
||||||
|
"stage": 2,
|
||||||
|
"stage_name": "正式催收(30-60天)",
|
||||||
|
"applicable": "逾期30-60天,友好催收无效,需要正式施压",
|
||||||
|
"elements": [
|
||||||
|
{"key": "law_firm", "label": "律师事务所名称", "type": "text", "required": True},
|
||||||
|
{"key": "lawyer_name", "label": "律师姓名", "type": "text", "required": True},
|
||||||
|
{"key": "creditor", "label": "委托人(债权人)名称", "type": "text", "required": True},
|
||||||
|
{"key": "debtor", "label": "债务人名称", "type": "text", "required": True},
|
||||||
|
{"key": "debt_amount", "label": "欠款金额(元)", "type": "text", "required": True},
|
||||||
|
{"key": "debt_reason", "label": "欠款事由", "type": "text", "required": True},
|
||||||
|
{"key": "contract_no", "label": "合同编号", "type": "text", "required": False},
|
||||||
|
{"key": "due_date", "label": "应付款日期", "type": "date", "required": True},
|
||||||
|
{"key": "overdue_days", "label": "逾期天数", "type": "number", "required": True},
|
||||||
|
{"key": "prior_efforts", "label": "已催收情况", "type": "textarea", "required": True},
|
||||||
|
{"key": "deadline", "label": "最后还款期限", "type": "date", "required": True},
|
||||||
|
{"key": "legal_consequences", "label": "法律后果提示", "type": "textarea", "required": False},
|
||||||
|
],
|
||||||
|
"template_text": (
|
||||||
|
"律师函\n\n"
|
||||||
|
"{law_firm}函〔2026〕第XX号\n\n"
|
||||||
|
"{debtor}:\n\n"
|
||||||
|
"本律师受{creditor}委托,就贵司拖欠{debt_reason}款项一事,致函如下:\n\n"
|
||||||
|
"一、基本事实\n"
|
||||||
|
"贵司与委托人于合同编号{contract_no}项下发生业务往来,"
|
||||||
|
"贵司应于{due_date}向委托人支付{debt_reason}款项人民币{debt_amount}元。"
|
||||||
|
"截至本函发出之日,已逾期{overdue_days}天,经委托人多次催收({prior_efforts}),"
|
||||||
|
"贵司至今未付。\n\n"
|
||||||
|
"二、法律意见\n"
|
||||||
|
"根据《中华人民共和国民法典》相关规定,贵司的行为已构成违约,"
|
||||||
|
"委托人有权要求贵司立即支付欠款及逾期付款违约金。\n\n"
|
||||||
|
"三、律师要求\n"
|
||||||
|
"请贵司于{deadline}前将上述款项人民币{debt_amount}元"
|
||||||
|
"支付至委托人指定账户。\n\n"
|
||||||
|
"四、法律后果\n"
|
||||||
|
"如贵司在上述期限内仍未履行付款义务,本律师将受托采取以下法律措施:\n"
|
||||||
|
"1. 向人民法院申请支付令;\n"
|
||||||
|
"2. 向人民法院提起民事诉讼,并申请财产保全,冻结贵司银行账户;\n"
|
||||||
|
"3. 追究贵司逾期付款的违约金及实现债权的费用(含律师费)。\n\n"
|
||||||
|
"{law_firm}\n"
|
||||||
|
"经办律师:{lawyer_name}\n"
|
||||||
|
"{date}"
|
||||||
|
),
|
||||||
|
}, ensure_ascii=False),
|
||||||
|
},
|
||||||
|
# ===== 阶段3:支付令申请书 =====
|
||||||
|
{
|
||||||
|
"title": "支付令申请书模板(司法催收阶段)",
|
||||||
|
"doc_type": "debt_collection_template",
|
||||||
|
"category": "催收文书",
|
||||||
|
"source": "BossAi法务参谋",
|
||||||
|
"content": json.dumps({
|
||||||
|
"name": "支付令申请书",
|
||||||
|
"stage": 3,
|
||||||
|
"stage_name": "支付令(60-90天)",
|
||||||
|
"applicable": "逾期60-90天,债权债务关系明确,无其他债务纠纷,请求法院发出支付令",
|
||||||
|
"elements": [
|
||||||
|
{"key": "applicant", "label": "申请人名称", "type": "text", "required": True},
|
||||||
|
{"key": "applicant_legal", "label": "法定代表人", "type": "text", "required": True},
|
||||||
|
{"key": "applicant_address", "label": "申请人地址", "type": "text", "required": True},
|
||||||
|
{"key": "applicant_phone", "label": "申请人电话", "type": "text", "required": True},
|
||||||
|
{"key": "respondent", "label": "被申请人名称", "type": "text", "required": True},
|
||||||
|
{"key": "respondent_legal", "label": "被申请人法定代表人", "type": "text", "required": True},
|
||||||
|
{"key": "respondent_address", "label": "被申请人地址", "type": "text", "required": True},
|
||||||
|
{"key": "respondent_phone", "label": "被申请人电话", "type": "text", "required": False},
|
||||||
|
{"key": "debt_amount", "label": "欠款金额(元)", "type": "text", "required": True},
|
||||||
|
{"key": "debt_reason", "label": "欠款事由", "type": "textarea", "required": True},
|
||||||
|
{"key": "evidence_list", "label": "证据清单", "type": "textarea", "required": True},
|
||||||
|
{"key": "court", "label": "申请法院", "type": "text", "required": True},
|
||||||
|
],
|
||||||
|
"template_text": (
|
||||||
|
"支付令申请书\n\n"
|
||||||
|
"申请人:{applicant}\n"
|
||||||
|
"住所:{applicant_address}\n"
|
||||||
|
"法定代表人:{applicant_legal}\n"
|
||||||
|
"联系电话:{applicant_phone}\n\n"
|
||||||
|
"被申请人:{respondent}\n"
|
||||||
|
"住所:{respondent_address}\n"
|
||||||
|
"法定代表人:{respondent_legal}\n"
|
||||||
|
"联系电话:{respondent_phone}\n\n"
|
||||||
|
"请求事项:\n"
|
||||||
|
"请求人民法院向被申请人发出支付令,督促被申请人向申请人支付"
|
||||||
|
"{debt_reason}款项人民币{debt_amount}元。\n\n"
|
||||||
|
"事实和理由:\n"
|
||||||
|
"{debt_reason}\n\n"
|
||||||
|
"申请人与被申请人之间的债权债务关系明确,并有以下证据予以证明:\n"
|
||||||
|
"{evidence_list}\n\n"
|
||||||
|
"被申请人至今未履行付款义务,且对该债务无争议。"
|
||||||
|
"根据《中华人民共和国民事诉讼法》第二百二十一条规定,"
|
||||||
|
"特向{court}申请支付令。\n\n"
|
||||||
|
"此致\n"
|
||||||
|
"{court}\n\n"
|
||||||
|
"申请人:{applicant}\n"
|
||||||
|
"{date}"
|
||||||
|
),
|
||||||
|
}, ensure_ascii=False),
|
||||||
|
},
|
||||||
|
# ===== 阶段4:财产保全申请书 =====
|
||||||
|
{
|
||||||
|
"title": "财产保全申请书模板(诉讼阶段)",
|
||||||
|
"doc_type": "debt_collection_template",
|
||||||
|
"category": "催收文书",
|
||||||
|
"source": "BossAi法务参谋",
|
||||||
|
"content": json.dumps({
|
||||||
|
"name": "财产保全申请书",
|
||||||
|
"stage": 4,
|
||||||
|
"stage_name": "民事诉讼(90天+)",
|
||||||
|
"applicable": "起诉前或诉讼中,防止对方转移财产,申请冻结对方账户/查封财产",
|
||||||
|
"elements": [
|
||||||
|
{"key": "applicant", "label": "申请人名称", "type": "text", "required": True},
|
||||||
|
{"key": "respondent", "label": "被申请人名称", "type": "text", "required": True},
|
||||||
|
{"key": "claim_amount", "label": "请求保全金额(元)", "type": "text", "required": True},
|
||||||
|
{"key": "case_no", "label": "案号(诉中保全填)", "type": "text", "required": False},
|
||||||
|
{"key": "property_info", "label": "请求保全的财产线索", "type": "textarea", "required": True},
|
||||||
|
{"key": "urgency_reason", "label": "紧急性说明(对方可能转移财产的证据)", "type": "textarea", "required": True},
|
||||||
|
{"key": "guarantee", "label": "担保方式(现金/保函)", "type": "text", "required": True},
|
||||||
|
{"key": "court", "label": "申请法院", "type": "text", "required": True},
|
||||||
|
],
|
||||||
|
"template_text": (
|
||||||
|
"财产保全申请书\n\n"
|
||||||
|
"申请人:{applicant}\n"
|
||||||
|
"被申请人:{respondent}\n\n"
|
||||||
|
"请求事项:\n"
|
||||||
|
"请求人民法院查封、冻结被申请人价值人民币{claim_amount}元的财产,"
|
||||||
|
"具体财产线索如下:\n{property_info}\n\n"
|
||||||
|
"事实和理由:\n"
|
||||||
|
"申请人与被申请人因{case_no}一案,现已诉至贵院(或即将起诉)。"
|
||||||
|
"因被申请人存在转移财产的可能,{urgency_reason}"
|
||||||
|
"如不立即采取保全措施,将使申请人的合法权益受到难以弥补的损害。\n\n"
|
||||||
|
"担保:\n"
|
||||||
|
"申请人提供{guarantee}作为本次保全的担保。\n\n"
|
||||||
|
"此致\n"
|
||||||
|
"{court}\n\n"
|
||||||
|
"申请人:{applicant}\n"
|
||||||
|
"{date}"
|
||||||
|
),
|
||||||
|
}, ensure_ascii=False),
|
||||||
|
},
|
||||||
|
# ===== 阶段6:强制执行申请书 =====
|
||||||
|
{
|
||||||
|
"title": "强制执行申请书模板(执行阶段)",
|
||||||
|
"doc_type": "debt_collection_template",
|
||||||
|
"category": "催收文书",
|
||||||
|
"source": "BossAi法务参谋",
|
||||||
|
"content": json.dumps({
|
||||||
|
"name": "强制执行申请书",
|
||||||
|
"stage": 6,
|
||||||
|
"stage_name": "强制执行",
|
||||||
|
"applicable": "判决书/调解书/仲裁裁决书生效后,对方仍不履行,申请法院强制执行",
|
||||||
|
"elements": [
|
||||||
|
{"key": "applicant", "label": "申请人名称", "type": "text", "required": True},
|
||||||
|
{"key": "applicant_legal", "label": "法定代表人", "type": "text", "required": True},
|
||||||
|
{"key": "applicant_address", "label": "申请人地址", "type": "text", "required": True},
|
||||||
|
{"key": "respondent", "label": "被申请人名称", "type": "text", "required": True},
|
||||||
|
{"key": "respondent_legal", "label": "被申请人法定代表人", "type": "text", "required": True},
|
||||||
|
{"key": "respondent_address", "label": "被申请人地址", "type": "text", "required": True},
|
||||||
|
{"key": "respondent_phone", "label": "被申请人电话", "type": "text", "required": False},
|
||||||
|
{"key": "exec_amount", "label": "申请执行金额(元)", "type": "text", "required": True},
|
||||||
|
{"key": "legal_doc", "label": "生效法律文书(判决书/调解书/裁决书编号)", "type": "text", "required": True},
|
||||||
|
{"key": "legal_doc_date", "label": "法律文书生效日期", "type": "date", "required": True},
|
||||||
|
{"key": "obligation", "label": "被申请人应履行的义务", "type": "textarea", "required": True},
|
||||||
|
{"key": "property_clues", "label": "财产线索(已知)", "type": "textarea", "required": False},
|
||||||
|
{"key": "court", "label": "执行法院", "type": "text", "required": True},
|
||||||
|
],
|
||||||
|
"template_text": (
|
||||||
|
"强制执行申请书\n\n"
|
||||||
|
"申请人:{applicant}\n"
|
||||||
|
"住所:{applicant_address}\n"
|
||||||
|
"法定代表人:{applicant_legal}\n\n"
|
||||||
|
"被申请人:{respondent}\n"
|
||||||
|
"住所:{respondent_address}\n"
|
||||||
|
"法定代表人:{respondent_legal}\n"
|
||||||
|
"联系电话:{respondent_phone}\n\n"
|
||||||
|
"请求事项:\n"
|
||||||
|
"请求人民法院强制被申请人履行{legal_doc}确定的义务,"
|
||||||
|
"向申请人支付人民币{exec_amount}元及迟延履行期间的债务利息。\n\n"
|
||||||
|
"事实和理由:\n"
|
||||||
|
"申请人与被申请人因{legal_doc}一案,"
|
||||||
|
"该法律文书已于{legal_doc_date}生效。"
|
||||||
|
"被申请人应履行的义务为:{obligation}\n\n"
|
||||||
|
"但被申请人至今未履行上述义务。申请人已知的被申请人财产线索如下:\n"
|
||||||
|
"{property_clues}\n\n"
|
||||||
|
"根据《中华人民共和国民事诉讼法》相关规定,"
|
||||||
|
"特向{court}申请强制执行。\n\n"
|
||||||
|
"此致\n"
|
||||||
|
"{court}\n\n"
|
||||||
|
"申请人:{applicant}\n"
|
||||||
|
"{date}"
|
||||||
|
),
|
||||||
|
}, ensure_ascii=False),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""导入催收文书模板到知识库。"""
|
||||||
|
k = KnowledgeStore()
|
||||||
|
count = 0
|
||||||
|
for tmpl in DEBT_TEMPLATES:
|
||||||
|
try:
|
||||||
|
k.add(
|
||||||
|
title=tmpl["title"],
|
||||||
|
content=tmpl["content"],
|
||||||
|
doc_type=tmpl["doc_type"],
|
||||||
|
category=tmpl.get("category"),
|
||||||
|
source=tmpl.get("source", "BossAi"),
|
||||||
|
)
|
||||||
|
count += 1
|
||||||
|
print(f" 已导入: {tmpl['title']}")
|
||||||
|
except Exception as e:
|
||||||
|
print(f" 失败: {tmpl['title']} - {e}")
|
||||||
|
print(f"\n已导入 {count} 类催收文书模板到知识库")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user