Files
mini-openclaw/backend/xingbang/config.py
T
NathanAlex7 c4ac5aa82e feat(xingbang): 兴邦金租 AI 评审平台模块(构建于 mini-OpenClaw)
新增兴邦金租评审项目模块, 作为 mini-OpenClaw 之上的完整交付:
- 五智能体流水线(data_curator/risk_scout/case_finder/approval_advisor/risk_monitor)
- evolution 自进化子系统(轨迹采集+奖励计算+模式归纳prompt增强)
- /api/xingbang/* 端点(config/workflow/stream/evolution/trajectories)
- 运行时产物(客户产出情报卡 + 进化轨迹数据)已 gitignore, 不含隐私

遵循兴邦三档分级审批制度, 数据源指向兴邦实验数据包
2026-09-01 16:58:44 +08:00

174 lines
8.4 KiB
Python

"""兴邦金租项目配置 — 数据源路径、五智能体定义、分级审批档位。
默认数据源指引向兴邦实验数据包(华南远通物流样例):
F:/xingbang_agent/00_数据包/ (15 个多源异构数据文件)
可通过 XINGBANG_DATA_DIR 环境变量覆盖,指向真实业务数据。
分级审批档位(对齐兴邦三档分级审批制度):
常规档 / 中间档 / 严肃档
"""
from __future__ import annotations
import os
from dataclasses import dataclass, field
from pathlib import Path
# ── 数据源 ──────────────────────────────────────────────
# 默认指向兴邦实验数据包,可用环境变量 XINGBANG_DATA_DIR 覆盖
DEFAULT_DATA_DIR = Path("F:/xingbang_agent/00_数据包")
XINGBANG_DATA_DIR = Path(
os.getenv("XINGBANG_DATA_DIR", str(DEFAULT_DATA_DIR))
)
# 五智能体内置数据文件(数据汇聚官读取的多源数据)
DATA_FILES: dict[str, str] = {
"申请信息": "01_客户申请信息.json",
"信用评分卡": "02_信用评分卡.json",
"风险评级": "03_风险评级报告.md",
"授信额度": "04_授信额度测算.csv",
"征信记录": "05_征信记录.json",
"司法执行": "06_司法执行记录.json",
"舆情评分": "07_舆情风险评分.json",
"反欺诈": "08_反欺诈模型输出.json",
"财务预警": "09_财务预警模型.csv",
"财报": "10_财务分析报告.csv",
"租赁物估值": "11_租赁物估值报告.md",
"行业调研": "12_行业调研报告.md",
"历史案例库": "13_历史审批案例库.json",
"公司制度": "14_公司制度要点.md",
"银行流水": "15_银行流水扫描件.txt",
}
# ── 五智能体定义 ────────────────────────────────────────
@dataclass
class AgentSpec:
"""单个评审智能体的规格"""
key: str # 标识
name: str # 中文名
role: str # 一句话定位
system_prompt: str # 专属系统提示词(差异化角色)
output_file: str # 产出文件名
inputs_from: list[str] = field(default_factory=list) # 依赖的上游产出
# 每个 agent 的差异化 system prompt 片段(核心角色约束)
_AGENT_PROMPTS = {
"data_curator": (
"你是兴邦金租评审流水线的【数据汇聚官】。你的职责是把散落在多源异构数据"
"(JSON/CSV/MD/TXT)中的客户原始数据主动拉齐、清洗、结构化,输出可信、可溯、"
"带置信度的『客户情报卡』。\n"
"规则:\n"
"1. 解析多源数据,统一格式,按客户四维画像(工商/信用司法/舆情/财务/租赁物)归并\n"
"2. 多源冲突(如工商股东vs舆情实控人)要显式标出冲突点,绝不擅自取其一\n"
"3. 风险信号按🔴高/🟡中/🟢低三档分级,每条必须附原始数据依据\n"
"4. 明确列出『未覆盖数据源清单』,绝不编造缺失信息\n"
"5. 输出存为 Markdown 文件。数据不出域,本地处理。"
),
"risk_scout": (
"你是兴邦金租评审流水线的【预审参谋】。你的职责是基于上游客户情报卡,"
"产出尽调报告初稿,把风险点做深度分析。\n"
"规则:\n"
"1. 读取上游『客户情报卡』(customer_intel.md)\n"
"2. 对每个风险点做穿透分析:现金流失控、对外担保、资产负债率、涉诉风险、租赁物残值\n"
"3. 正面因素(合同稳定性、增信措施)也要列出\n"
"4. 引用上游的历史案例检索结果(如有)\n"
"5. 输出『尽调报告初稿』,风险按高/中/低分级,每条可溯源"
),
"case_finder": (
"你是兴邦金租评审流水线的【经验检索】。你的职责是把沉淀在历史案例和制度规则"
"库中的经验变成可调用的组织知识,回答『以前类似项目怎么批的』。\n"
"规则:\n"
"1. 检索历史案例库(13_历史审批案例库.json)与当前客户最相关的案例\n"
"2. 每个结论必须带案例编号(如H-1103),可追溯\n"
"3. 正面案例和否决/预警案例都要给,辅助全面判断\n"
"4. 结合制度要点(14_公司制度要点.md)给出适用的档位条款\n"
"5. 找不到完全匹配案例时,明确说明差异点,不硬套"
),
"approval_advisor": (
"你是兴邦金租评审流水线的【审批顾问】。你的职责是汇总前面所有智能体产出,"
"按三档分级审批制度输出标准化审批参考意见。\n"
"规则:\n"
"1. 读取上游全部产出(情报卡/尽调初稿/历史案例参考)\n"
"2. 按三档制度判定本申请归入:常规档/中间档/严肃档(含判定依据,对照制度条款)\n"
"3. 输出核心风险点(引用溯源)、历史案例支撑(带编号)\n"
"4. 预填流转意见(『建议通过,理由如下,请确认』),人只确认/驳回\n"
"5. 明确标注『本意见为AI参考,最终决策由评审人员确认』\n"
"6. 绝不替代决策,全程留痕可回退"
),
"risk_monitor": (
"你是兴邦金租评审流水线的【风险哨兵】。你的职责是审批前的最后一道动态复核,"
"检查关键风控信号是否在评审期间发生变化。\n"
"规则:\n"
"1. 重新读取最新的风控数据(02信用评分/05征信/06司法/07舆情/09财务预警)\n"
"2. 与预审阶段采用的数据对比,检测评分/司法/舆情等关键信号是否转变\n"
"3. 若发现信号转变(如新增执行、评分骤降),必须主动提示『风控结果已转变,"
"原预审结论需重新评估』,并给出新档位判定\n"
"4. 若无变化,确认『风控状态稳定,可按原档位推进』\n"
"5. 输出最终风控复核结论"
),
}
def agent_specs() -> dict[str, AgentSpec]:
"""返回五个智能体的规格定义(流水线顺序)。"""
specs = {
"data_curator": AgentSpec(
key="data_curator", name="数据汇聚官", role="多源数据→情报卡",
system_prompt=_AGENT_PROMPTS["data_curator"],
output_file="customer_intel.md",
),
"risk_scout": AgentSpec(
key="risk_scout", name="预审参谋", role="情报卡→尽调初稿",
system_prompt=_AGENT_PROMPTS["risk_scout"],
output_file="due_diligence.md", inputs_from=["customer_intel.md"],
),
"case_finder": AgentSpec(
key="case_finder", name="经验检索", role="历史案例+规则检索",
system_prompt=_AGENT_PROMPTS["case_finder"],
output_file="case_reference.md", inputs_from=[],
),
"approval_advisor": AgentSpec(
key="approval_advisor", name="审批顾问", role="汇总→三档审批参考",
system_prompt=_AGENT_PROMPTS["approval_advisor"],
output_file="approval_opinion.md",
inputs_from=["customer_intel.md", "due_diligence.md", "case_reference.md"],
),
"risk_monitor": AgentSpec(
key="risk_monitor", name="风险哨兵", role="风控动态复核",
system_prompt=_AGENT_PROMPTS["risk_monitor"],
output_file="risk_recheck.md",
inputs_from=["approval_opinion.md"],
),
}
# 编排顺序:数据汇聚→预审→(经验并列)→审批→风控
return specs
# ── 分级审批档位阈值(对齐 14_公司制度要点.md) ──────────
@dataclass
class ApprovalTiers:
"""三档分级审批阈值配置"""
# 严肃档:额度超阈值 或 重大负面
serious_amount_wan: float = 5000.0
# 中间档:额度/评分在阈值内,需 AI 初审+人工确认
serious_blue_flags: list[str] = field(
default_factory=lambda: ["失信", "被执行", "重大负面", "评分<70"]
)
# 评分阈值
low_score_threshold: float = 70.0
XINGBANG_CONFIG: dict = {
"project": "兴邦金租 AI 评审平台",
"version": "0.1.0",
"base": "mini-OpenClaw",
"data_dir": str(XINGBANG_DATA_DIR),
"agents_pipeline": ["data_curator", "risk_scout", "case_finder",
"approval_advisor", "risk_monitor"],
"approval_tiers": ApprovalTiers().__dict__,
}