财务风险分析系统详细设计与实施方案
依据《财务风险分析系统需求文档(0924)》编制。本页是多智能体财务分析系统 PoC 的详细设计与实施方案——先跑通"数据层归集 → 规则判定 → 议题聚合 → 评分分档 → 图表与判读生成 → 结论文案生成 → 质量检查"七环节全链路,为行内落地探路。需求口径详见10 财务风险分析章。
一、定位与范围
目标:交付一个可运行的 PoC——样本公司数据 + 种子规则集 + 真实 LLM 调用,验证多智能体协作架构、判定可复算性、五条硬约束的可行性。不受行内技术栈约束,但选型与行内《综合智慧信贷 AI 架构方案》同构,验证结论可直接迁移。
PoC 要验证的四个核心命题:
- 判定、聚合、评分全部由代码计算,每条结论可追溯到实测数值、阈值档位与规则编号;
- LLM 只承担叙述与判读(判读三段、六项结论文案、核查清单),在五条硬约束下输出稳定 JSON;
- 人工改判 → 档位即时刷新 →「大模型重算」→ 文案重写,这条核心交互链闭环;
- 八条一票否决触发时评级被覆盖为「不建议准入」,且不停止其余规则执行。
明确不做(落地阶段再补):信贷系统 SSO 与带参跳转、结论回写审批单(0924 待对齐点⑨在 PoC 中搁置,改为页面展示 + markdown/JSON 导出)、企查查接口、影像平台 OCR。外部工商舆情在数据层保留命名空间、以 mock 数据注入,未接入时如实显示「未接入」,不得显示为「未触发」。
二、总体架构
四层:评审前端(Vue3)、FastAPI 确定性服务层、LangGraph 多智能体层、数据与模型接入层。核心原则一句话:确定性计算走代码、Agent 不承担口径决策、LLM 只做叙述与判读并受硬约束。
图内支持缩放、语义视图、关系追踪与 PNG/SVG 导出。
关键设计决策(逐项经评审确认):
| 决策点 | 结论 | 理由 |
|---|---|---|
| 交付形态 | 可运行 PoC,跑通七环节全链路 | 为落地探路,验证核心命题后再投入生产工程 |
| 规则库 | 自造种子规则集(80–150 条起步) | 969 条无机器可读版本;17 字段结构全量落地,数据驱动可增量扩充 |
| 多智能体形态 | 流水线为骨 + 四类专项 Agent | 判定可复算是审计底线;Agent 只出现在编排、判读、结论、质检四个位置 |
| 技术栈 | Python 3.12+ / FastAPI / SQLModel / SQLite;LangGraph 编排 | 与行内 AI 架构方案选型同构;SQLite 零运维适配 PoC |
| LLM 接入 | OpenAI 兼容网关,配置化 base_url/key/model;录制回放模式 | 开发接商用 API,落地换行内 Qwen 网关只改配置;回归测试不烧 token |
| 样本数据 | 两家虚构制造业公司 × 5 年年报 | 健康厂验证通过路径,藏雷集团验证一票否决与图多议题多路径 |
| UI 范围 | 全页面骨架 + 总览页十版块完整 | 验证「人工改判 → 重算 → 图表重渲染」核心交互链 |
| 计数口径 | 页面显示真实条数,不硬编码 969 | 969 是目标态口径;「阅读路径移出清单」「不适用不计分母」等比例关系在种子集上同构复现 |
三、分析流水线与重算回路
七环节中前四环(归集、判定、聚合、评分)与图表数据全部是确定性代码;后三环(判读、结论、质检)由 LLM Agent 承担,编排 Agent 负责调度。人工改判从评审复核泳道回流:改判保存 → 确定性结果即时重算 → 点「大模型重算」→ 判读与文案重写(只重写文案,不改档位)。
八条否决闸在评分后并行判定:触发即在结果上打覆盖位(结论变为「不建议准入」),但流水线继续走完——评审仍需要完整的判定明细;人工推翻必须填理由并留痕。
四、数据层设计
七个命名空间落为独立取数接口,规则只能从这里取数、不允许写死数字:
| 命名空间 | 存储 | 说明 |
|---|---|---|
| 年报科目原值 | facts 表(公司 × 期间 × 科目 × 金额,统一万元) | 三表主体科目 + 附注明细 |
| 派生指标 | 派生定义表 + 现算 | 口径全系统唯一,如现金转换周期恒为「应收天数+存货天数−应付天数」 |
| 分季度数据 | quarterly 表 | 识别年末利润塌陷等季度分布异常 |
| 母公司报表科目 | parent_facts 表 | 母子背离核对(F42) |
| 外部工商舆情 | external_records 表 | mock 注入;缺时显示「未接入」 |
| 行业均值 | industry_avg 表 | 22 行业小类 × 板块 × 14 指标,驱动 10 条行业比较规则 |
| 公司画像 | companies 表 | 客户性质(上市/集团,驱动适用对象层)、行业小类、增值税率 |
两家样本公司(5 年年度序列 + 附注 + 分季度 + 母公司报表 + 舆情 + 所在行业均值):
- 健康厂:数据干净、少数触发、图少议题少——验证通过路径、低风险分档、「未披露」中性显示;
- 藏雷集团:预埋非标审计意见(一票否决)、存贷双高(F03 存贷利差)、应收与收入剪刀差(F21)、其他应收款长账龄占比(F09)、净现比持续低于 0.5(F38)、四季度利润塌陷(F19)——验证否决覆盖、图多议题多、退回重写路径。
五、规则库与判定引擎
17 字段结构全量落地(编号、风险域、检查项、计算口径、阈值、判定、实测依据、优先级、实测标题等),种子集构成策略:
- A.01–A.38 图规格反推:38 张图点名的约 150 个 U-XXXX 规则优先编入,阈值直接取图规格(如现金短债比黄 1 / 红 0.5、有息负债率黄 40% / 红 60%、应收剪刀差黄 5pp / 红 20pp);
- 勾稽恒等式:资产=负债+权益等(IDENT,1% 容差);近似勾稽如「销售收现 ≈ 营业收入×(1+增值税率)」(偏离 10pp 判关注、20pp 判重点关注;跳变 15pp/30pp;仅两期数据只判偏离);
- 八条否决:自动三条(货币资金五类反常、非标审计意见、现金流肖像排除型)+ 待确认三条(立待办)+ 未接入两条(如实显示);
- 行业比较 10 条:5 条有兜底(无可比样本退自身近三年均值、至少三期),5 条无兜底缺数判「数据不足」。
覆盖约束:10 个风险域每域 ≥5 条、代表事实域每域 ≥2 条、RATIO/IDENT/STATE/COUNT/NOSCORE 五形态齐备、P0/P1/P2 三级齐备。
判定引擎:自建受限表达式语言——只允许白名单函数(prev 取上期、yoy 同比、share 占比、ratio 比值、streak 连续期数、avg3y 近三年均值、industry 行业均值等),编译为 AST 解释执行,不能调用任意代码。每条规则输出:判定(重点关注/关注/通过/数据不足/不适用)+ 实测依据(算式与科目金额,可对上计算口径)。四层筛选(适用对象、数据可得性、业务前置、规则类型)在执行前收窄规则集,不适用条目不计分母、不占清单。
六、议题聚合与评分
- 议题聚合:按 44 事实域(种子集覆盖约 15 个代表域)聚合,同域触发规则合并为一个议题,议题卡标明「本议题同时触发 N 条规则,已合并计为 1 项」。严重度取组内最重判定;优先级取实际判了重点关注的那条规则的优先级(不取全组最高,防止 P1 重判从 P0 轻判借权重)。
- 评分三轴取中位数:重大问题数(必查项重点关注议题数)、问题密度(触发议题占已判定规则比例)、加权分(重点关注 P0=6/P1=3/P2=1;关注 P0=2/P1=1/P2=0.4)。三轴中位数映射极高/高/中/低四档。
- 否决覆盖:八条否决独立判定位,优先级高于评分,触发即结论覆盖为「不建议准入」。
七、图表体系
38 条图表定义全部落为数据驱动 spec(事实域、图型、序列、序列取数口径、阈值带、读法文本),序列只允许引用数据层命名空间。渲染层:Vue3 + ECharts 封装,折线阈值带用 markArea(黄区/红区,双向阈值都渲染)、阈值线参与纵轴取值范围。
- 出图条件(每次渲染重算):该事实域至少一条规则判重点关注或关注(按人工复核后状态计)+ 落在触发最多的维度页(触发数相同取规则数多的,再相同按导航顺序)+ 至少一条序列取得到非空非零的数;
- 页内排序:按 P0 触发数、重点关注数、关注数依次降序;
- 图下判读三行由程序现算:最新读数与上期对比(有阈值带的加一句相对阈值线位置)、本域触发条数与最重规则(可点击跳转规则库)、规则库通用读法(标「读法」);
- 8 个无数值序列的事实域(对外担保、关联交易等)不出图;渲染验证选 12–15 张代表图,其余 38 条定义 correctness 由 spec 单测保证。
八、多智能体设计
| Agent | 输入 | 输出 | 关键约束 |
|---|---|---|---|
| 编排 | 分析请求(custId, period)或重算请求 | 七环节调度、状态流转、退回重写驱动 | 不产出结论;LangGraph StateGraph + SQLite checkpointer |
| 判读 ×N | 单个议题:触发规则、实测、阈值、风险指向、处置动作 | 三段判读:归因 → 定性 → 处置 | 按议题并行 fan-out(并发上限可配);归因首句三级回落:实测结论句 → 计算口径展开 → 不写首句 |
| 结论 | 3.10.2 九类事实:公司信息、评级与档位、否决状态、指标卡、主营构成、舆情摘要、人工判定记录、全部风险议题 | 固定 JSON:标题、行动建议、正文段落数组、总体判断、授信六项、核查清单 | 五条硬约束写入系统提示词 |
| 质检 | 结论 JSON + 输入事实集 | 通过 / 不合格(附违规项) | 三道校验以程序为主:档位与文案一致、文案数字必须可在输入事实集中溯源、JSON Schema 校验 |
五条硬约束:只用给出的事实和数字;人工判定优先于系统原判定;授信六维文案必须与系统档位一致;触发重点关注事项时结论必须是不建议准入;只输出固定字段的 JSON 对象。质检不过由编排退回重写(附违规项),最多三次;仍不过则降级为模板文案并标注「模型生成未通过质检」——禁止带病发布。
LLM 网关:OpenAI 兼容抽象层,RECORD/REPLAY 两种模式——录制模式把 (模型, 提示词哈希) → 响应存入 fixtures;回放模式直接命中缓存,回归测试零 token、结果可复现。温度取低值并使用结构化输出。
九、前端设计
| 路由 | 页面 | PoC 范围 |
|---|---|---|
/ | 总览页 | 十版块全做:评级横幅(含否决覆盖提示)、核心结论正文、舆情摘要、授信建议表、放款前核查清单、核心指标卡(四类核心 15 张 + 大额科目)、主营概览、各域结论一览、重点关注项状态表、风险项清单(一二级卡片) |
/domain/:code | 十个风险域页 | 共用模板:域头(规则数/必查数/判定计数)、结论两行、图表区、触发规则明细 |
/rules | 规则库页 | 全功能:按域/类型/判定/关键词筛选、17 字段展开、人工改判表单(改判 + 实测值 + 核查说明,留痕)、顶部「大模型重算」按钮 |
/opinion | 舆情核查页 | mock 数据:舆情时间线 + 外部信息族六条必查规则 |
/guide | 阅读指引 + 场景筛选 | 轻量版:阅读动线清单 + 八场景过滤条(只过滤清单不改评级) |
分析任务为长任务(规则数百条 + 多次 LLM 调用),API 以任务 id + SSE 推送进度;前端按环节显示流水线状态。
十、工程结构与实施方案
里程碑:
| 阶段 | 内容 | 出口标准 |
|---|---|---|
| M1 | 数据层 + 两家样本数据 | 七命名空间齐备;派生指标口径单测通过 |
| M2 | 种子规则库 + 判定引擎 | 五形态齐备;每条判定可复算(实测依据回放口径一致);双容差用例通过 |
| M3 | 聚合评分否决 + 图表服务 | 三轴分档正确;藏雷集团触发否决覆盖;38 图 spec 单测 + 代表图渲染验证 |
| M4 | 四类 Agent + 前端全页面 | 判读/结论/质检真实 LLM 跑通;改判 → 重算闭环;质检退回与降级路径可演示 |
验收标准(对应四个核心命题):①任一条判定点开可见实测数值、阈值档位、规则编号;②结论 JSON 通过 Schema 与质检三道校验,六项文案与档位一致率 100%;③人工改判保存后档位与评级即时刷新,「大模型重算」只改文案不改档位;④藏雷集团评级被否决覆盖为「不建议准入」且判定明细完整。
风险与对策:LLM 输出 JSON 不稳定 → 结构化输出 + 三次重试 + 模板降级;图规格反推的规则口径与行内真实规则库有偏差 → 种子集逐条标注来源(图规格/需求原文),真实规则库到位后按 17 字段导入替换;两家样本覆盖不了中间态分档 → 数据 schema 支持随时增补第三家公司。
十一、术语表
| 术语 | 定义 |
|---|---|
| 风险域 | 规则库的第一级组织,十个(A 盈利能力与质量 … H 关联交易与内部转移),决定维度页 |
| 事实域 | 规则映射的最小事实单元,44 个(F01 现金对有息负债覆盖 … F44 费用结构),议题聚合与图表的分组依据 |
| 议题 | 同一事实域内全部触发规则合并成的单项,风险项清单的一张卡 |
| 议题簇 | 图表去重的依据(全库 868 簇),同一簇只画一张图 |
| 判定 | 规则执行结果五态:重点关注 / 关注 / 通过 / 数据不足 / 不适用(不适用不计分母) |
| 档位 | 系统算出的等级(评级极高/高/中/低;授信六维各自档位),模型只把档位写成话 |
| 重点关注事项 | 八条一票否决,独立于评分,触发即覆盖结论为「不建议准入」 |
| 种子规则集 | PoC 阶段自造的 80–150 条规则,17 字段结构与 969 条目标态同构 |
| 录制回放 | LLM 网关模式:录制真实响应为 fixtures,回归测试零 token 可复现 |