后端: - 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>
286 lines
16 KiB
Python
286 lines
16 KiB
Python
"""货款催收文书模板 - 种子数据导入。
|
|
|
|
将催收全流程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()
|