"""兴邦金租项目配置 — 数据源路径、五智能体定义、分级审批档位。 默认数据源指引向兴邦实验数据包(华南远通物流样例): 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__, }