chore: initial commit — leaudit-platform project skeleton

17-table PostgreSQL schema with full Chinese column comments,
FastAPI project structure (admin/common/modules),
DSL rule files, and schema migration scripts.
This commit is contained in:
wren
2026-04-27 16:48:22 +08:00
commit 535d97a70c
142 changed files with 25219 additions and 0 deletions
@@ -0,0 +1,47 @@
# 借款合同(反例:利率超法定上限)
**合同编号**JK2024-BAD-001
## 第一条 借贷双方
**借款人**:张三
身份证号:110101197001011234
**出借人**:李四
身份证号:310102198505051234
## 第二条 借款金额
借款本金:人民币 500,000.00 元
大写:伍拾万元整
借款日期:2024 年 6 月 1 日
还款日期:2025 年 6 月 1 日
## 第三条 利率(违法条款)
**年利率:25%0.25**
本利率远超法定上限(LPR × 4 倍约 13.8%),属于高利贷。
根据最高人民法院 2020 年修正司法解释,超出部分法院不予保护。
## 第四条 担保
担保人:王五,身份证:440103199212121234,担保金额:500,000 元。
## 第五条 违约责任(违法条款)
借款人违约的,**未付利息自动计入本金继续计息(利滚利)**。
逾期每日按 0.5% 计算违约金,上不封顶。
## 第六条 借款用途
借款用于借款人个人短期资金周转。
---
借款人签字:张三 日期:2024-06-01
出借人签字:李四 日期:2024-06-01
(本合同有两处违法:1) 利率超过 LPR×4 上限;2) 利滚利条款。
用于测试 JK-002 和 JK-005 的 fail 路径)
@@ -0,0 +1,93 @@
# 借款合同 — 多担保人场景
**合同编号**JK2024-MG-001
## 第一条 借贷双方
**借款人**:某某贸易有限公司(法定代表人:张三)
统一信用代码:91310000MA1K3H5K8L
身份证号(法定代表人):110101197001011234
**出借人**:李四
身份证号:310102198505051234
## 第二条 借款金额
借款本金:人民币 5,000,000.00 元
大写:伍佰万元整
借款日期:2024 年 4 月 1 日
还款日期:2026 年 4 月 1 日
借款期限:2 年
## 第三条 利率
年利率:12%(未超过 LPR × 4 倍上限 13.8%
## 第四条 还款方式
分期还款,每季度末偿还本金 625,000.00 元和当期利息。
## 第五条 担保条款(5 位担保人)
### 担保人 1:王五
- 身份证:440103199212121234
- 住所:广州市越秀区
- 担保金额:人民币 1,500,000.00 元
- 担保方式:连带责任保证
### 担保人 2:赵六
- 身份证:330102198811111234
- 住所:杭州市上城区
- 担保金额:人民币 1,200,000.00 元
- 担保方式:连带责任保证
### 担保人 3:孙七
- 身份证:510104199405051234
- 住所:成都市武侯区
- 担保金额:人民币 1,000,000.00 元
- 担保方式:连带责任保证
### 担保人 4:周八
- 身份证:320102199007071234
- 住所:南京市玄武区
- 担保金额:人民币 800,000.00 元
- 担保方式:一般保证
### 担保人 5:吴九
- 身份证:370102198503031234
- 住所:济南市历下区
- 担保金额:人民币 700,000.00 元
- 担保方式:一般保证
**担保总额**:人民币 5,200,000.00 元,超出借款本金 200,000.00 元(覆盖充足)。
## 第六条 违约责任
借款人逾期还款的,按每日 0.03% 支付违约金。违约金总额不超过借款本金的 20%。
严禁任何形式的利滚利、复利、砍头息。
## 第七条 借款用途
借款用于借款人经营的某某贸易有限公司对外采购业务资金周转。
## 第八条 争议解决
提交上海仲裁委员会仲裁。
---
**签订日期**2024 年 4 月 1 日
借款人(签字盖章):某某贸易有限公司
[盖章: 某某贸易有限公司合同专用章]
法定代表人签字:[签名: 张三]
出借人(签字):[签名: 李四]
[盖章: 李四个人签章]
担保人 1 签字:[签名: 王五] 担保人 2 签字:[签名: 赵六]
担保人 3 签字:[签名: 孙七] 担保人 4 签字:[签名: 周八]
担保人 5 签字:[签名: 吴九]
(本样本用于测试 JK-003 / JK-004 的 multi_entity 遍历和聚合能力)
+97
View File
@@ -0,0 +1,97 @@
# 借款合同
**合同编号**JK2024-000456
## 第一条 借贷双方
**借款人**:张三
身份证号:110101197001011234
住所:北京市东城区东华门大街 1 号
**出借人**:李四
身份证号:310102198505051234
住所:上海市黄浦区南京东路 100 号
## 第二条 借款用途
借款用于借款人经营的某某贸易有限公司日常经营周转,严禁用于赌博、非法经营或其他违法活动。
## 第三条 借款金额及期限
**借款本金**:人民币 1,000,000.00 元
**大写**:壹佰万元整
**借款日期**2024 年 4 月 1 日
**还款日期**2025 年 4 月 1 日
**借款期限**1 年
## 第四条 利率
年利率:10%0.10
本利率未超过合同签订时一年期 LPR 的四倍,符合《最高人民法院关于审理民间借贷
案件适用法律若干问题的规定》(2020 修正)第 25 条之规定。
## 第五条 还款方式
一次性还本付息。借款人应在还款日当天向出借人支付本金和利息共计 1,100,000.00 元。
## 第六条 担保条款
本借款由以下三位担保人提供连带责任保证:
**担保人一**
- 姓名:王五
- 身份证号:440103199212121234
- 住所:广州市越秀区北京路 50 号
- 担保金额:人民币 500,000.00 元
- 担保方式:连带责任保证
- 担保期限:自借款日起至 2027 年 4 月 1 日
**担保人二**
- 姓名:赵六
- 身份证号:330102198811111234
- 住所:杭州市上城区解放路 30 号
- 担保金额:人民币 500,000.00 元
- 担保方式:连带责任保证
- 担保期限:自借款日起至 2027 年 4 月 1 日
**担保人三**
- 姓名:孙七
- 身份证号:510104199405051234
- 住所:成都市武侯区人民南路 80 号
- 担保金额:人民币 300,000.00 元
- 担保方式:一般保证
- 担保期限:自借款日起至 2027 年 4 月 1 日
**担保总额**:人民币 1,300,000.00 元(覆盖借款本金)
## 第七条 违约责任
借款人逾期还款的,按每日 0.05% 向出借人支付违约金。
**违约金金额**:最高不超过人民币 200,000.00 元(借款本金的 20%)。
严禁利滚利和复利计算,利息不计入本金。
## 第八条 争议解决
本合同纠纷由双方协商解决。协商不成的,提交北京仲裁委员会仲裁。
## 第九条 其他
本合同一式六份,借贷双方及三位担保人各执一份,经各方签字生效。
**签订日期**2024 年 4 月 1 日
---
借款人(签字):[签名: 张三] 日期:2024-04-01
出借人(签字):[签名: 李四] 日期:2024-04-01
担保人一(签字):[签名: 王五] 日期:2024-04-01
担保人二(签字):[签名: 赵六] 日期:2024-04-01
担保人三(签字):[签名: 孙七] 日期:2024-04-01
[盖章: 借款人张三] [盖章: 出借人李四]
+322
View File
@@ -0,0 +1,322 @@
# ═════════════════════════════════════════════════════════════════
# 借款合同 · 回归测试用例
# ═════════════════════════════════════════════════════════════════
# 配套文件:contract_loan.yaml
# 重点展示:multi_entity / derived fields / external 数据源 mock
target: contract_loan.yaml
# 外部数据源的 mock 值(替代真实 API 调用)
external_mocks:
lpr_lookup:
"1y": 0.0345 # 当前 1 年 LPR = 3.45%
# 推导:LPR_4x = 0.0345 * 4 = 0.138
fixtures:
# ═════════════════════════════════════════════════════════════
# JK-001 · 借款主体合法性
# ═════════════════════════════════════════════════════════════
JK-001:
- name: 已执行-借贷双方合法
phase: executed
extract:
借款人姓名: 张三
借款人身份证: "110101197001011234"
出借人姓名: 李四
出借人身份证: "310102198505051234"
expected: pass
- name: 已执行-借款人身份证校验失败
phase: executed
extract:
借款人姓名: 张三
借款人身份证: "110101197001011230" # 末位错
出借人姓名: 李四
出借人身份证: "310102198505051234"
expected: fail
- name: 草稿-只有姓名
phase: draft
extract:
借款人姓名: 张三
出借人姓名: 李四
expected: pass # 草稿阶段身份证待补
# ═════════════════════════════════════════════════════════════
# JK-002 · 利率不超过 LPR × 4(核心规则)
# 依赖 external.lpr_lookup mockLPR_4x = 0.138
# ═════════════════════════════════════════════════════════════
JK-002:
- name: 年利率 10% 合规
phase: executed
extract:
年利率: 0.10
# derived.LPR_4x = 0.138mock 值)
expected: pass
- name: 年利率 20% 超限
phase: executed
extract:
年利率: 0.20
expected: fail
- name: 年利率正好等于 LPR×4(边界)
phase: executed
extract:
年利率: 0.138
expected: fail # money.lt 严格小于
- name: 年利率 0.137 边界内
phase: executed
extract:
年利率: 0.137
expected: pass
# ═════════════════════════════════════════════════════════════
# JK-003 · 所有担保人身份合法(multi-entity 核心测试)
# ═════════════════════════════════════════════════════════════
JK-003:
- name: 三担保人全合法
phase: executed
extract:
担保人:
- {姓名: 张三, 身份证号: "110101197001011234", 担保金额: 500000, 担保方式: 连带责任保证}
- {姓名: 李四, 身份证号: "310102198505051234", 担保金额: 800000, 担保方式: 连带责任保证}
- {姓名: 王五, 身份证号: "440103199212121234", 担保金额: 300000, 担保方式: 一般保证}
expected: pass
- name: 第二个担保人身份证校验失败
phase: executed
extract:
担保人:
- {姓名: 张三, 身份证号: "110101197001011234", 担保金额: 500000, 担保方式: 连带责任保证}
- {姓名: 李四, 身份证号: "310102198505051230", 担保金额: 800000, 担保方式: 连带责任保证} # 末位错
- {姓名: 王五, 身份证号: "440103199212121234", 担保金额: 300000, 担保方式: 一般保证}
expected: fail # [*] 遍历,任一失败整体 fail
- name: 第一个担保人姓名缺失
phase: executed
extract:
担保人:
- {姓名: null, 身份证号: "110101197001011234", 担保金额: 500000, 担保方式: 连带责任保证}
- {姓名: 李四, 身份证号: "310102198505051234", 担保金额: 800000, 担保方式: 连带责任保证}
expected: fail
- name: 无担保人(规则跳过)
phase: executed
extract:
担保人: []
expected: skipped # activate_if 条件不满足
# ═════════════════════════════════════════════════════════════
# JK-004 · 担保总额覆盖借款本金(sum_ge 聚合)
# ═════════════════════════════════════════════════════════════
JK-004:
- name: 担保覆盖
phase: executed
extract:
借款本金: 1500000
担保人:
- {姓名: 张三, 担保金额: 500000, 担保方式: 连带责任保证}
- {姓名: 李四, 担保金额: 800000, 担保方式: 连带责任保证}
- {姓名: 王五, 担保金额: 300000, 担保方式: 一般保证}
# derived.担保总额 = 1600000 >= 借款本金 1500000
expected: pass
- name: 担保不足
phase: executed
extract:
借款本金: 2000000
担保人:
- {姓名: 张三, 担保金额: 500000, 担保方式: 连带责任保证}
- {姓名: 李四, 担保金额: 800000, 担保方式: 连带责任保证}
# derived.担保总额 = 1300000 < 借款本金 2000000
expected: fail
- name: 担保恰好等于本金
phase: executed
extract:
借款本金: 1000000
担保人:
- {姓名: 张三, 担保金额: 1000000, 担保方式: 连带责任保证}
expected: pass
# ═════════════════════════════════════════════════════════════
# JK-005 · 禁止利滚利
# ═════════════════════════════════════════════════════════════
JK-005:
- name: 正常违约条款
phase: executed
extract:
违约责任: 借款人逾期还款的,按每日 0.05% 支付违约金,违约金不超过借款本金 30%
借款用途: 企业日常经营周转
expected: pass
- name: 出现利滚利字样
phase: executed
extract:
违约责任: 借款人违约的,利息计入本金后继续计息,利滚利
借款用途: 企业日常经营周转
expected: fail
- name: 借款用途违法
phase: executed
extract:
违约责任: 正常违约金条款
借款用途: 用于赌博和非法经营活动
expected: fail
- name: 出现砍头息
phase: executed
extract:
违约责任: 出借人有权预扣利息,砍头息为借款的 10%
借款用途: 经营周转
expected: fail
# ═════════════════════════════════════════════════════════════
# JK-006 · 违约金不超过 30%ratio_within
# ═════════════════════════════════════════════════════════════
JK-006:
- name: 违约金 20%(合规)
phase: executed
extract:
借款本金: 1000000
违约金金额: 200000
# derived.违约金比例 = 0.20
expected: pass
- name: 违约金 35%(超限)
phase: executed
extract:
借款本金: 1000000
违约金金额: 350000
expected: fail
- name: 违约金 30%(边界,恰好到上限)
phase: executed
extract:
借款本金: 1000000
违约金金额: 300000
expected: pass # ratio_within max=0.30 是闭区间
# ═════════════════════════════════════════════════════════════
# JK-007 · 借款本金大小写一致性
# ═════════════════════════════════════════════════════════════
JK-007:
- name: 大小写一致
phase: executed
extract:
借款本金: 1000000
借款本金大写: 壹佰万元整
expected: pass
- name: 大小写不一致
phase: executed
extract:
借款本金: 1000000
借款本金大写: 壹拾万元整 # 差一位
expected: fail
# ═════════════════════════════════════════════════════════════
# JK-008 · 借款期限合理性(带 depends_on)
# ═════════════════════════════════════════════════════════════
JK-008:
- name: 正常期限
phase: executed
extract:
借款人姓名: 张三
借款人身份证: "110101197001011234"
出借人姓名: 李四
出借人身份证: "310102198505051234"
借款日期: "2024-01-01"
还款日期: "2025-01-01"
签订日期: "2024-01-01"
expected: pass
- name: 借款日期晚于还款日期
phase: executed
extract:
借款人姓名: 张三
借款人身份证: "110101197001011234"
出借人姓名: 李四
出借人身份证: "310102198505051234"
借款日期: "2024-06-01"
还款日期: "2024-01-01" # ← 颠倒
签订日期: "2024-01-01"
expected: fail
- name: 依赖规则失败时本规则被跳过
phase: executed
extract:
借款人姓名: 张三
借款人身份证: "110101197001011230" # JK-001 会失败
出借人姓名: 李四
出借人身份证: "310102198505051234"
借款日期: "2024-01-01"
还款日期: "2025-01-01"
expected: skipped_dependency # JK-001 失败 → 本规则跳过
# ═════════════════════════════════════════════════════════════
# JK-SEAL-001 · 双方签章
# ═════════════════════════════════════════════════════════════
JK-SEAL-001:
- name: 双方签章齐全
phase: executed
extract:
借款人姓名: 张三
出借人姓名: 李四
visual_manifest:
seals:
- id: 借款人签章
detection_score: 0.94
ocr_text: 张三
- id: 出借人签章
detection_score: 0.92
ocr_text: 李四
expected: pass
- name: 缺出借人签章
phase: executed
extract:
借款人姓名: 张三
出借人姓名: 李四
visual_manifest:
seals:
- id: 借款人签章
detection_score: 0.94
ocr_text: 张三
expected: fail
- name: 草稿阶段无签章(规则跳过)
phase: draft
extract:
借款人姓名: 张三
出借人姓名: 李四
visual_manifest:
seals: []
expected: skipped_phase
# ═════════════════════════════════════════════════════════════
# JK-GROUP-INTEREST · 利率合规总判定(规则组)
# ═════════════════════════════════════════════════════════════
JK-GROUP-INTEREST:
- name: 全部子规则通过
phase: executed
extract:
年利率: 0.10
违约责任: 正常违约金条款
借款用途: 经营周转
借款本金: 1000000
违约金金额: 200000
expected: pass
- name: 子规则 JK-002 失败导致组失败
phase: executed
extract:
年利率: 0.25 # 超限
违约责任: 正常违约金条款
借款用途: 经营周转
借款本金: 1000000
违约金金额: 200000
expected: fail
+493
View File
@@ -0,0 +1,493 @@
metadata:
type_id: contract.loan.general
name: 借款合同
version: '1.0'
last_updated: '2026-04-11'
parent: contract
inherits_from:
- base.common
- base.party_info
classification_keywords:
- 借款
- 借贷
- 民间借贷
tags:
- compliance
- high_priority
- prc_civil_code
- usury_check
applies_to_jurisdictions:
- prc
references_laws:
- 《民法典》第 667-680 条(借款合同章)
- 《最高人民法院关于审理民间借贷案件适用法律若干问题的规定》(2020 修正)
- 《民法典》第 387-462 条(担保物权)
description: '适用于民间借贷 / 企业间借款 / 自然人借款等场景。
覆盖民法典第 667-680 条(借款合同章)和最高法民间借贷司法解释。
评查重点:利率合法性、担保完备性、禁止利滚利。
'
confidence_profile:
allow_weight_override: false
field_confidence_defaults:
借款本金: 0.95
年利率: 0.95
extract:
- group: 当事人
fields:
- name: 借款人姓名
type: verbatim
required_from: draft
deep_retry: false
- name: 借款人身份证
type: chinese-id
required_from: executed
deep_retry: false
- name: 借款人地址
type: verbatim
required_from: draft
deep_retry: false
- name: 出借人姓名
type: verbatim
required_from: draft
deep_retry: false
- name: 出借人身份证
type: chinese-id
required_from: executed
deep_retry: false
- group: 合同信息
fields:
- name: 合同编号
type: verbatim
required_from: draft
deep_retry: false
- name: 签订日期
type: date
required_from: executed
deep_retry: false
- name: 借款日期
type: date
required_from: executed
deep_retry: false
- name: 还款日期
type: date
required_from: executed
deep_retry: false
- group: 借款条款
fields:
- name: 借款本金
type: money
required_from: draft
deep_retry: false
- name: 借款本金大写
type: verbatim
required_from: executed
deep_retry: false
- name: 借款用途
type: string
required_from: draft
deep_retry: false
- name: 年利率
type: money
required_from: draft
deep_retry: false
- name: 还款方式
type: enum
required_from: draft
allowed:
- 一次性还本付息
- 分期还款
- 先息后本
deep_retry: false
- name: 违约金金额
type: money
required_from: draft
deep_retry: false
- name: 违约责任
type: string
required_from: draft
deep_retry: false
- name: 争议解决
type: string
required_from: draft
deep_retry: false
- group: 'Multi-entity: 担保人(核心特性展示)'
fields:
- name: 担保人
type: multi_entity
required_from: draft
fields:
- name: 姓名
type: verbatim
required_from: draft
deep_retry: false
- name: 身份证号
type: chinese-id
required_from: executed
deep_retry: false
- name: 地址
type: verbatim
required_from: draft
deep_retry: false
- name: 担保金额
type: money
required_from: draft
deep_retry: false
- name: 担保方式
type: enum
required_from: draft
allowed:
- 一般保证
- 连带责任保证
deep_retry: false
- name: 担保期限
type: date
required_from: draft
deep_retry: false
deep_retry: false
derived_fields:
- name: 借款总天数
type: integer
compute: (还款日期 - 借款日期).days
depends_on:
- 借款日期
- 还款日期
- name: 违约金比例
type: money
compute: 违约金金额 / 借款本金
depends_on:
- 违约金金额
- 借款本金
- name: 担保总额
type: money
compute: sum(担保人[*].担保金额)
depends_on:
- 担保人
- name: 担保人数量
type: integer
compute: count(担保人)
depends_on:
- 担保人
- name: LPR_4x
type: money
compute: external.lpr_lookup(tenor='1y') * 4
depends_on: []
visual_elements:
seals:
- id: 借款人签章
name: 借款人签章
required: true
required_from: executed
expected_text_match:
field: 借款人姓名
- id: 出借人签章
name: 出借人签章
required: true
required_from: executed
expected_text_match:
field: 出借人姓名
signatures:
- id: 借款人签名
name: 借款人手写签名
required: true
required_from: executed
expected_text_match:
field: 借款人姓名
- id: 出借人签名
name: 出借人手写签名
required: true
required_from: executed
expected_text_match:
field: 出借人姓名
rules:
- group: 合同主体
rules:
- rule_id: JK-001
name: 借款主体合法性
risk: high
score: 10
stages:
- id: '1'
check: required
fields:
- 借款人姓名
- 出借人姓名
logic: and
- id: '2'
check: format
field: 借款人身份证
format: chinese_id
- id: '3'
check: format
field: 出借人身份证
format: chinese_id
logic: 1 AND 2 AND 3
messages:
pass: 借贷双方身份合法
fail: 借贷双方身份信息不完整或身份证校验失败
references_laws:
- 《民法典》第 667 条
type: deterministic
- group: 利率合规
rules:
- rule_id: JK-002
name: 利率不超过法定上限(LPR × 4 倍)
risk: high
score: 20
depends_on:
- when: derived.LPR_4x != null
stages:
- id: '1'
check: required
field: 年利率
- id: '2'
check: compare
left: 年利率
op: <
right_field: derived.LPR_4x
logic: 1 AND 2
messages:
pass: 年利率 {{年利率}} 未超过 LPR 4 倍({{derived.LPR_4x}}
fail: 年利率 {{年利率}} 超过法定上限 LPR 4 倍({{derived.LPR_4x}}
references_laws:
- 《最高人民法院关于审理民间借贷案件适用法律若干问题的规定》(2020 修正)第 25 条
- 《民法典》第 680 条(禁止高利放贷)
remediation:
suggestions:
- 本合同年利率 {{年利率}},超过当前 LPR 4 倍上限 {{derived.LPR_4x}}
- 按 2020 修正司法解释,超出部分法院不予保护
- 请降低利率至 LPR 4 倍以内
actions:
- type: edit_field
label: 降低年利率
field: 年利率
prompt: 请输入合法年利率(不超过 {{derived.LPR_4x}}
- type: escalate
label: 疑似高利贷,上报合规组
role: 合规专员
type: deterministic
- rule_id: JK-GROUP-INTEREST
name: 利率合规总判定
risk: high
score: 30
logic: JK-002 AND JK-005 AND JK-006
messages:
pass: 利率与违约条款全部合规
fail: 利率或违约条款有瑕疵,存在合规风险
type: rule_group
rules:
- JK-002
- JK-005
- JK-006
- group: 担保条款
rules:
- rule_id: JK-003
name: 担保人身份合法性
risk: high
score: 15
activate_if: derived.担保人数量 > 0
stages:
- id: '1'
type: multi_entity.count_ge
field: 担保人
value: 1
- id: '2'
check: format
field: 担保人[*].身份证号
format: chinese_id
- id: '3'
check: required
field: 担保人[*].姓名
logic: 1 AND 2 AND 3
messages:
pass: 所有 {{derived.担保人数量}} 位担保人身份合法
fail: 至少一位担保人身份信息缺失或身份证校验失败
remediation:
suggestions:
- 共 {{derived.担保人数量}} 位担保人,至少一位的身份证校验失败
- 请逐个核对每位担保人的身份证号
actions:
- type: recheck_field
label: 重新核对所有担保人身份证
field: 担保人[*].身份证号
type: deterministic
- rule_id: JK-004
name: 担保总额覆盖借款本金
risk: high
score: 15
activate_if: derived.担保人数量 > 0
stages:
- id: '1'
check: compare
left: derived.担保总额
op: '>='
right_field: 借款本金
logic: '1'
messages:
pass: 担保总额 {{derived.担保总额}} 覆盖借款本金 {{借款本金}}
fail: 担保总额 {{derived.担保总额}} 不足以覆盖借款本金 {{借款本金}}
remediation:
suggestions:
- 当前 {{derived.担保人数量}} 位担保人担保总额 {{derived.担保总额}}
- 借款本金 {{借款本金}},担保不足
- 建议:(1) 增加担保人 (2) 提高现有担保金额 (3) 补充物的担保
actions:
- type: edit_field
label: 调整担保金额
field: 担保人[*].担保金额
- type: escalate
label: 担保不足,上报风控
role: 风控经理
type: deterministic
- group: 条款合规
rules:
- rule_id: JK-005
name: 禁止利滚利与高利贷条款
risk: high
score: 15
stages:
- id: '1'
type: string.must_not_contain
field: 违约责任
forbidden_keywords:
- 利滚利
- 复利
- 利息计入本金
- 砍头息
- 预扣利息
- id: '2'
type: string.must_not_contain
field: 借款用途
forbidden_keywords:
- 非法经营
- 赌博
- 洗钱
logic: 1 AND 2
messages:
pass: 未发现利滚利或非法用途条款
fail: 发现违法条款,建议删除或修改
references_laws:
- 《民法典》第 680 条
- 《民法典》第 670 条(禁止预扣利息)
remediation:
suggestions:
- 检出禁止性条款,本合同可能被法院认定为无效或部分无效
- 请删除违法条款或整体重新起草
actions:
- type: edit_field
label: 修改违约责任条款
field: 违约责任
- type: escalate
label: 涉嫌违法条款,上报法务
role: 法务经理
type: deterministic
- group: 违约条款
rules:
- rule_id: JK-006
name: 违约金不超过借款本金 30%
risk: medium
score: 10
stages:
- id: '1'
check: required
fields:
- 违约金金额
- 借款本金
logic: and
- id: '2'
type: money.ratio_within
numerator: 违约金金额
denominator: 借款本金
min: 0.0
max: 0.3
logic: 1 AND 2
messages:
pass: 违约金比例 {{derived.违约金比例}} 合规
fail: 违约金 {{违约金金额}} 占借款本金 {{借款本金}} 的比例超过 30%
references_laws:
- 《民法典》第 585 条(违约金不得过分高于损失)
type: deterministic
- group: 金额条款
rules:
- rule_id: JK-007
name: 借款本金大小写一致性
risk: high
score: 10
stages:
- id: '1'
check: required
fields:
- 借款本金
- 借款本金大写
logic: and
- id: '2'
check: amount_match
number: 借款本金
chinese: 借款本金大写
logic: 1 AND 2
messages:
pass: 借款本金大小写一致
fail: 借款本金大小写不一致,涉嫌篡改
type: deterministic
- group: 期限条款
rules:
- rule_id: JK-008
name: 借款期限合理性
risk: medium
score: 5
depends_on:
- when: JK-001.passed
stages:
- id: '1'
check: required
fields:
- 借款日期
- 还款日期
logic: and
- id: '2'
type: date.after
field: 还款日期
ref_field: 借款日期
- id: '3'
check: assert
expr: parse_date(签订日期) != None and (today() - parse_date(签订日期)).days >= 0 and (today() - parse_date(签订日期)).days <= 1825
logic: 1 AND 2 AND 3
messages:
pass: 借款期限合规
fail: 借款日期颠倒 或 合同签订过旧
type: deterministic
- group: 印章合规
rules:
- rule_id: JK-SEAL-001
name: 借贷双方签章齐全
risk: high
score: 10
stages:
- id: '1'
type: seal.present
seal_id: 借款人签章
- id: '2'
type: seal.present
seal_id: 出借人签章
logic: 1 AND 2
messages:
pass: 双方签章齐全
fail: 缺少借款人或出借人签章
remediation:
by_phase:
draft:
suggestions:
- 草稿阶段无需盖章
actions:
- type: noop
executed:
suggestions:
- 民间借贷纠纷中,无签章的合同证据效力较弱
- 请补盖双方印章或提供签名
actions:
- type: upload_file
label: 补扫签章页
file_type: 签章页
type: deterministic