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
+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