AI辅助的年报财务风险审计系统:三模型交叉仲裁、22条合同合规规则、三方博弈分析与五角色HITL可追溯审计闭环
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 30 天前 | ||
| 15 天前 | ||
| 9 天前 | ||
| 12 天前 | ||
| 8 天前 | ||
| 12 天前 | ||
| 17 天前 | ||
| 12 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 28 天前 | ||
| 12 天前 | ||
| 8 天前 | ||
| 9 天前 | ||
| 30 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 15 天前 | ||
| 12 天前 | ||
| 9 天前 |
🛡️ 审探 AuditProbe
基于白盒规则、证据定位与人工复核的财报风险筛查助手
金融行业应用 Agent 黑客松参赛作品 · 智能风控与反欺诈赛道 当前版本:v2.0.0(决赛版) · 初赛发布版:v1.0.0 · 当前决赛分支:
final-sprint-react-v3· 文档更新:2026-08-29
⚡ 30 秒快速认知
| 问题 | 答案 |
|---|---|
| 做什么 | 上传年报 PDF → 数据门禁 → 三路信号 (M-Score / 红旗 / F-Score) 排雷 → 监管案例核查任务 → HITL 人工复核 → 按门禁导出正式底稿或待复核草稿 |
| 给谁用 | 会计师与企业内审 / 银行信贷风控 / 券商投行与质控 / 保险资管与机构投资风控 |
| 凭什么不同 | 核心公式与仲裁规则可复算 + 18 种完整数据组合的三路信号确定性仲裁 + SHA-256 审计链 + 中注协第19号问题解答参考映射 |
| 怎么跑 | python -m streamlit run ui/professional_app.py --server.port 8501 |
| 有无演示 | 5 组虚构基线 + 3 组公开历史事件索引;核心规则与缓存不依赖在线模型,部分前端资源需要网络 |
决赛分支当前状态
| 项目 | 已完成事实 | 对外边界 |
|---|---|---|
| 自动化回归 | 2026-08-28 当前工作树完整回归 386 passed(360 决赛基线 + 10 项发布安全门禁 + 16 项哈希链完整性) | 测试数不等于产品准确率;最终冻结提交仍须在干净 Python 3.11 环境重跑 |
| Ascend r5 正式验收 | 固定短任务 30/30,p50/p95 15.33/19.44 s;业务负载 15/15,finalizer overall_pass=true |
证明对应 ModelArts 在线推理部署通过验收,不表示整套系统全部运行在 NPU,也不构成生产 SLA |
| T07 绝对指标参考 | CPU 24/25,p50 64.986 s;NPU 25/25,p50 16.502 s |
两端完整权重摘要未证明一致,禁止相除或声称“加速 X%” |
| v2.0.0 发布材料 | 18 页发布 PPTX + 24 秒 1080p 演示视频已按 v2.0.0 口径冻结,截图、386 项回归与正式底稿双门禁均已同步 | 两个媒体文件作为 Release 附件发布,不把大型二进制写入源码仓库;文件名与 SHA-256 见 release/assets-v2.0.0.json |
统一口径与公开证据索引见v2.0.0 发布验收状态;8 月 21 日决赛阶段历史记录保留在历史验收状态。ModelArts 在线服务当前已停止但未删除,停止期间不描述为在线可用服务;核心规则、缓存案例与仲裁流程仍可离线运行。
🚀 3 分钟跑起来(评委快速验证)
无需任何 API Key、无需昇腾环境,本地约 3 分钟启动并看到界面(完整测试验证约 5 分钟):
# 1. 安装依赖(约 60 秒)
pip install -r requirements.txt
# 2. 一键启动 UI(载入 5 组预设模拟案例,离线可跑)
python -m streamlit run ui/professional_app.py --server.port 8501
# → 浏览器自动打开 http://localhost:8501
# → 顶部案例选择器载入「乐视 2015 / 康美 2017 / 獐子岛 2016」等预设样本
# 3. 跑 386 项自动化回归(本地离线,无 LLM 调用)
python -m pytest -q
# → 期望输出:386 passed(360 项决赛基线 + 1 项 XSS 门禁 + 8 项身份门禁 + 1 项发布契约 + 16 项哈希链完整性)
昇腾环境证据:
- npu/final_20260821_r5.json — 2026-08-21 同版本正式验收汇合结果,六项门禁全部通过、
overall_pass=true;公开仓库仅保留复核后的证据文件,基础设施敏感元数据另在私有证据目录留档。 - docs/release-validation-status-v2.0.0.md — v2.0.0 回归、安全、Docker 与发布状态的公开单一真相表。
- docs/final-validation-status-2026-08-21.md — r5 与 T07 的历史验收证据记录。
- npu/ascend_layer1-4_evidence.json — 组合证据(
artifact_type: composite_evidence),Layer 1-3 来自 2026-08-09 ModelArts(Ascend 910B4)实测,Layer 4 为本地纯 CPU 重测(30 次重复perf_counter,avg0.141ms)。 - npu/ascend_llm_observation_2026-08-09.json — LLM 启用时的外部观察(avg
26.774s),已从 Layer 4 拆出独立归档,明确包含模型服务与网络延迟,不属于可复现的纯 CPU 口径。 - npu/historical_red_flag_llm_2026-08-09.json — 14/14 红旗 AI 解读的用户提供终端转录型历史观察(
evidence_type: user_supplied_terminal_transcription,原始转录原文留档于npu/transcripts/red_flag_llm_2026-08-09.txt,SHA-256c72e5840...;非机器可读 summary,华为云已关闭无法重跑)。 - npu/historical_pdf_e2e_2026-08-09.json — 6 份真实 PDF 批量分析摘要输出的截图转录型历史观察(
manual_pdf_observation_status: screenshot_verified,formal_end_to_end_success_count: null,截图仅证明产生可见分析摘要,不证明完整端到端+AI 解读;非机器可读 summary,华为云已关闭无法重跑)。 - 云端原始截图未纳入仓库,仅保留在本地
自留文件/华为云运行情况/(含 SHA-256 核验记录)。
详细量化验证:见 docs/quantitative-advantages.md — 含红旗 AI 解读 14/14、PDF 核心分析链验证(6/6 真实 PDF 均产生可见分析摘要,本地走离线降级路径不执行真实 LLM 解读)、三案例提前预警、雷达图数据、规则 vs AI 对比。
核心能力
| 能力维度 | 本项目实现 | 验证方式 |
|---|---|---|
| 懂行 | 本土红旗五因子 + 15 项 CAS 参考映射 + R2/R3/R4 部分行业阈值 | 规则、公式和参考来源公开;映射用于提示核查方向,不等于逐条执行准则 |
| 能干 | PDF 上传 → 三路信号 → 仲裁 → 证据 → HITL → 按门禁导出 | Docker 可复现部署;关闭在线 LLM 后仍可完成核心分析和规则兜底叙事 |
| 可信 | 原文线索 + 准则映射 + 可复算路径 + SHA-256 审计链 | 全项目 386 项自动化回归(360 项决赛基线 + 10 项发布安全门禁 + 16 项哈希链完整性);数据不足、未实测指标和能力边界显式披露 |
| 可衡量 | 18 种完整数据仲裁组合、8 组可复现场景、16 类 PDF 字段 | 8 项当前可核查指标;r5 昇腾正式验收与 T07 双端绝对指标已留证,抽取质量等未完成项继续标记待测 |
审探接受带文本层的年报 PDF,提取双期财务数据,运行 Beneish M-Score、本土红旗五因子和五因子项目异常分,再以确定性规则形成风险筛查等级。系统可整理年报原文线索、关联准则条目,并将真实上传报告送入 HITL 人工复核和底稿导出流程。
它不是舞弊认定、信用评级或自动审计工具。模型分数未经 A 股标签样本概率标定,证据匹配结果也不等于已取得充分、适当的审计证据;最终判断仍由具备相应职责的人员作出。
同一核心引擎,多场景核查功能
审探不为每个金融机构重新制造一套黑盒模型。不同机构面对年报时关注的业务结果不同,但底层工作具有相同结构:校验数据 → 识别风险 → 回到原文 → 关联监管事实 → 生成人工核查任务 → 留痕并导出。因此,同一套白盒内核可以按岗位组合成多套核查功能,同时保持公式、证据契约和审计链一致。
年报 PDF
→ 8 个关键科目 × 2 期数据门禁
→ M-Score / 本土红旗 / F-Score + 非财务披露事件
→ 年报原文页序、准则参考与监管案例
→ Agent 人工核查清单
→ HITL 确认、驳回或回滚
→ Markdown / Excel / 可打印 HTML(分别附 SHA-256)
| 使用对象 | 具体工作任务 | 复用的现有能力 | 可交付结果 | 明确边界 |
|---|---|---|---|---|
| 会计师事务所 / 企业内审 | 年报风险初筛、项目复核、重大异常核查准备 | 三路信号、原文证据、CAS 参考映射、HITL | 风险事项、证据页、复核记录、底稿草稿 | 不替代注册会计师判断,不自动形成审计意见 |
| 银行信贷与贷后风控 | 授信材料复核、贷后年报监测、风险会商准备 | 数据门禁、现金流/负债/收入质量红旗、审计意见与诉讼事件 | 客户核查问题、异常金额来源、人工处置记录 | 不自动授信、拒贷或生成信用评级 |
| 券商投行、质控与持续督导 | IPO 尽调辅助、持续督导、年报问询和信披风险排查 | 监管案例 Mini-RAG、关联依据、人工核查清单、可追溯导出 | 尽调核查方向、监管案例来源、待补证据清单 | 案例相似不得推导同罪,不替代保荐或合规意见 |
| 保险资管 / 机构投资风控 | 持仓发行人、债券发行人和交易对手年度风险复核 | 审计意见、持续经营、减值、现金流及财务结构信号 | 发行人风险线索、证据摘要、复核任务包 | 不输出买卖建议,不覆盖保险理赔反欺诈 |
| 金融科技与风险平台团队 | 将核查能力接入现有工作台或私有环境 | 模块化数据契约、RBAC、HITL、SQLite/SHA-256 链、离线规则兜底 | 可复算的核查组件与留痕接口 | 当前仓库未对接具体机构的核心业务系统,生产接入需重新验证 |
用户、使用部门与价值落点
| 一线使用者 | 典型负责部门 | 他们得到的直接价值 |
|---|---|---|
| 审计项目成员、复核人员、内审人员 | 审计质控、企业审计部 | 从“翻完整份年报”收敛为“复核有来源的异常事项和核查任务” |
| 客户经理、授信审查员、贷后风险经理 | 银行风险管理部、授信审批部、金融科技部 | 把财务异常转换为可分派、可确认、可回溯的贷后检查问题 |
| 投行项目组、持续督导和质控人员 | 券商投行、质控、合规与科技部门 | 用官方监管案例补充尽调方向,同时保留相似性边界和来源 |
| 信用研究员、发行人风险人员 | 保险资管、券商资管、机构投资风险团队 | 对持仓发行人的持续经营和信披风险进行统一年度复核 |
主演示仍聚焦一条可验证链路:真实年报上传 → 风险与证据 → 监管案例 → Agent 核查清单 → 人工确认 → 底稿导出。银行、券商和保险资管不是额外堆叠的独立产品,而是对同一核查任务包的岗位化使用方式。
系统架构
┌─────────────────────────────────────────────────────────────────────────┐
│ Layer 1 · PDF 预处理层 │
│ 可选 scan_corrector_adapter(版面旋转校正;三层熔断,不含 OCR) │
│ text_extractor(锚点定位法 · 16 项指标抽取) │
└────────────────────────────────┬────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ Layer 2 · 核心计算层 │
│ ┌──────────────┐ ┌─────────────────┐ ┌────────────────┐ │
│ │ M-Score 8 因子│→│ 本土红旗五因子 │→│ EvidenceCollector│ │
│ │ (系数不可改)│ │ + F-Score 五因子 │ │ + 15 项 CAS 映射│ │
│ │ │ │ + Altman Z-Score │ │ 三层证据匹配 │ │
│ └──────────────┘ └─────────────────┘ └────────┬───────┘ │
│ │ │
│ ┌───────────────────────────────────────────────┴─────────────────────┐│
│ │ HybridRiskAssessor 混合评估(含 arbiter.py 三路信号确定性仲裁) ││
│ │ 多期趋势分析(multi_year_trend.py)+ 会计调整(adjustment.py) ││
│ │ 可选:昇腾 LLM 归因叙事(S1-11 三级降级)+ 博弈解释叠加 ││
│ └─────────────────────────────────────────────────────────────────────┘│
└────────────────────────────────┬────────────────────────────────────────┘
│
┌──────────────────┴──────────────────┐
▼ ▼
┌──────────────────────────────┐ ┌─────────────────────────────────┐
│ Layer 3 · HITL 合规层 │ │ Layer 3 · CAS 准则匹配层 │
│ 五态 DFA + RBAC 五类角色 │ │ cas_tracer.py │
│ INSERT-only 审计日志 │ │ 15 项会计准则 + rapidfuzz │
│ SHA-256 哈希链校验 │ │ 确定性映射 │
│ 合同桥:后端扩展点(前端未接)│ │ │
└──────────────┬───────────────┘ └──────────────┬──────────────────┘
│ │
└──────────────┬───────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ Layer 4 · 展示与交付层 │
│ Streamlit professional_app(专业版 8-Tab UI)+ HITL 模态弹窗 │
│ 前端原型(8 个 Tab)+ 演示模式(8 组缓存;核心规则断网可用) │
│ 一键导出:页面快照 / 审计链 JSON / MD / Excel / PDF(缺库时为HTML) │
└─────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ Layer 5 · 博弈对抗层(A-0 初稿) │
│ defense_wrapper.py(叠加层)+ defense_agent.py(规则模板库) │
│ arbiter.py(三路信号确定性仲裁)+ 合同 / 行业 / 信用 / 证据 / HITL 联调 │
└─────────────────────────────────────────────────────────────────────────┘
模块化能力清单
下表是便于评审定位代码的能力索引,并非运行时插件注册表。
| # | 能力模块 | 主要输入 | 主要输出 | 当前实现 |
|---|---|---|---|---|
| 1 | PDF 文本与指标提取 | 带文本层的 PDF | 分页文本、双期财务字段 | pdf_processing/text_extractor.py |
| 2 | M-Score 计算 | 双期财务指标 | 八因子、M-Score、数据质量 | core/m_score.py |
| 3 | 五因子项目异常分 | 双期财务指标 | 分值、等级、触发明细 | core/f_score.py |
| 4 | 本土红旗五因子 | 财务指标、行业 | R1–R5 触发结果 | core/red_flags.py |
| 5 | 三路信号确定性仲裁 | M/红旗/F 三路等级 | 最终筛查等级、规则说明 | core/arbiter.py;完整数据 18 种组合 |
| 6 | 证据线索定位 | 年报文本、红旗结果 | 页码、关键词、截断片段 | core/evidence_collector.py |
| 7 | CAS 参考映射 | 风险线索、准则 JSON | 关联条目与匹配说明 | core/cas_tracer.py、data/standards/ |
| 8 | 数据可信度门禁 | 抽取结果、来源与勾稽状态 | 通过/阻断、缺失与修复记录 | core/financial_validation.py、ui/upload_analysis.py |
| 9 | HITL 人在回路 | 报告、角色、操作事件 | 五态流转、SQLite 日志、哈希链 | core/hitl_*.py;有状态模块 |
| 10 | 行业阈值覆盖 | 行业分类、通用阈值 | R2/R3/R4 部分行业覆盖值 | core/red_flags.py、data/industry_thresholds.json |
| 11 | AI 综合归因(可选) | 结构化模型摘要 | 归因短文、执行摘要或规则兜底文案 | core/ai_narrator.py、core/rule_based_narrator.py |
核心计算和仲裁是确定性模块;HITL 依赖持久状态,在线 AI 输出也可能随服务变化。关闭在线 LLM 后,系统仍可完成规则计算、人工复核与按门禁导出,叙事由规则模板兜底。
快速了解
| 项目 | 当前实现 |
|---|---|
| 输入 | 1–8 份电子文本版 PDF;单份不超过 50 MB、合计不超过 200 MB |
| 核心计算 | M-Score 8 因子、本土红旗五因子、五因子项目异常分、三路信号确定性仲裁 |
| 可信控制 | 数据来源/完整性/勾稽门禁 + HITL 最终状态/哈希链门禁 |
| 输出 | 页面审计快照、审计链 JSON、后端 Markdown/Excel(.xlsx 8 工作表,需 openpyxl,缺失时降级 CSV zip)/PDF(缺渲染库时为可打印 HTML) |
| 演示 | 5 组虚构基线 + 3 组公开历史事件索引(正式缓存 8 份);另存 8 份研究案例(data/research_cases/)仅用于阈值敏感性研究;数值和结论均为模拟演算 |
| 正式入口 | python -m streamlit run ui/professional_app.py --server.port 8501 |
1. 已实现能力与边界
| 能力 | 实现状态 | 边界 |
|---|---|---|
| 单份及多年年报分析 | 已实现 | 多年文件必须是同一主体、文件名含唯一报告年份;纯扫描件需先完成 OCR |
| 三路信号确定性仲裁 | 已实现 | 权重与阈值是项目决策策略,不代表舞弊概率或统计准确率 |
| 数据可信度硬门禁 | 已实现 | 通过仅代表可进入人工复核,不代表财报数据已获审计保证 |
| 年报证据线索与 CAS 映射 | 已实现 | 输出是定位线索和规则映射,需回看原文并由专业人员判断 |
| HITL、RBAC、SQLite 审计链 | 已实现 | 面向本应用业务操作;不等同于通用智能体安全平台或合规认证 |
| 身份鉴权分层(P0-3) | 演示边界已声明 | 角色/工号选择属于演示流程模拟,不构成生产身份鉴权;真实 HITL 操作必须先经侧栏「用户身份」区绑定身份(仅会话内 UI 交互可绑定),角色权限由 core/hitl_rbac.py 权限矩阵强制校验,URL 查询参数(含 ui_role)不得携带或覆盖身份,前端 header 角色下拉仅展示、不参与身份绑定;单机演示场景不接入 LDAP/OAuth 等真实登录 |
| 三格式后端底稿 | 已实现 | 只有数据门禁、最终复核和链校验同时通过才标记为正式底稿 |
| 非财务披露事件 | 已实现 | 与三路信号并列的第 4 类输入信号(如审计意见类型、重大事项、诉讼、担保、关联交易披露异常等非财务披露线索),仅做提示性展示,不参与数值评分;供人工核查时补充参考,不等于自动认定违规 |
| 监管案例核查 Agent | 已实现(用户主动触发) | 确定性离线检索(无 LLM),展示官方监管案例、关联依据与人工核查任务(CHK_* 清单);仅真实上传结果暴露该动作;案例相似不得推导同罪;输出未通过 verify_regulatory_agent_output 校验时标注"失败,以下结果不得采用";附录 8F-3 三端同步导出;当前版本已完成 r5 ModelArts Ascend 正式业务负载验收(见 5.3 与验收状态) |
| 合同风险 | 独立模块已实现,页面未接通 | 后端含 22 条合同风险合规规则(确定性关键词规则);前端规则库含 15 项完备性检查,每次只执行所选主要类型的 2–4 项。页面合同文本与类型不会传给后端,前端结果不进入底稿或 HITL |
| 在线 AI 解读 | 可选 | 只生成叙事,不参与数值计算;未配置或调用失败时使用确定性降级文案 |
| 扫描件 OCR | 未实现 | scan-corrector 仅保留校正适配和熔断接口,当前主路径要求 PDF 自带文本层 |
| 行业对标 | 探索性快照 | 仓库未附原始样本及逐行业样本量,不作为行业实证或外部基准结论 |
完整说明与实现入口见 产品能力与边界。
2. 计算口径
2.1 三路信号
- Beneish M-Score:使用公开八因子线性式。本项目选用
-1.78作为筛查阈值;只有八因子完整时才应用阈值,缺失时返回"数据不足"。 - 本土红旗五因子:R1–R5 五项确定性规则用于补充货币资金、存货、现金流和应收款等风险线索。
- 五因子项目异常分:受错报预测研究启发,但没有复刻论文逻辑回归,也没有经过 A 股错报标签标定;
1.0/1.3是项目内部阈值。
M-Score 八因子明细(实现见 core/m_score.py):
| 代号 | 名称 | 计算逻辑简述 | 权重 |
|---|---|---|---|
| DSRI | 应收账款周转指数 | 应收账款增长率 ÷ 营业收入增长率 | +0.920+0.920 |
| GMI | 毛利率指数 | 上期毛利率 ÷ 本期毛利率(毛利率恶化 > 1) | +0.528+0.528 |
| AQI | 资产质量指数 | 本期非流动资产占比 ÷ 上期(衡量资产软化) | +0.404+0.404 |
| SGI | 销售收入增长指数 | 本期营业收入 ÷ 上期营业收入 | +0.892+0.892 |
| DEPI | 折旧指数 | 上期折旧率 ÷ 本期折旧率(衡量折旧放缓) | +0.115+0.115 |
| SGAI | 销售管理费用指数 | 本期费率 ÷ 上期费率 | −0.172-0.172 |
| LVGI | 杠杆指数 | 本期资产负债率 ÷ 上期资产负债率 | −0.327-0.327 |
| TATA | 总应计资产比 | (净利润 − 经营活动现金流) ÷ 总资产 | +4.679+4.679 |
完整公式:
M-Score=−4.84+0.920,DSRI+0.528,GMI+0.404,AQI+0.892,SGI+0.115,DEPI−0.172,SGAI−0.327,LVGI+4.679,TATA\text{M-Score} = -4.84 + 0.920,\text{DSRI} + 0.528,\text{GMI} + 0.404,\text{AQI} + 0.892,\text{SGI} + 0.115,\text{DEPI} - 0.172,\text{SGAI} - 0.327,\text{LVGI} + 4.679,\text{TATA}
阈值:M>−1.78\text{M} > -1.78 判高风险。
本土红旗五因子(R1–R5)(实现见 core/red_flags.py,详见 风险指数算法说明):
| 代号 | 触发条件摘要 |
|---|---|
| R1 | 盈利时经营现金流/净利润 < 0.5;经营现金流为负时严重度更高 |
| R2 | 货币资金同比增长 > 70%(本期/上期 > 1.7)且存货同比增长 > 45%(本期/上期 > 1.45);或二者合计占流动资产 > 82%(可由行业参数覆盖) |
| R3 | 货币资金/总资产 > 20% 且有息负债/总资产 > 15% |
| R4 | 应收账款/总资产 > 18%(可由行业参数覆盖) |
| R5 | 存货同比增长 > 30% 且营业收入增长 < 10% |
红旗有两个不同统计量,不得混用:
triggered_count是实际触发项数。红旗模块的升级提示按 1 项"关注"、2 项"中高风险"、3 项及以上"高风险";RULE-A 仅在 5 项全部实际触发时生效。severity_score是严重度积分,普通项计 1 分、严重项计 2 分。仲裁器将其量化为 0=低风险、1=关注、2 及以上=高风险。
五因子项目异常分(F-Score)(实现见 core/f_score.py,详见 风险指数算法说明,采用确定性阈值规则引擎而非概率模型):
| 代号 | 名称 | 核心逻辑 | 阈值 | 权重 |
|---|---|---|---|---|
| F1 | RSST 应计质量变化 | (Δ流动资产 - Δ短期借款 - Δ货币资金 + Δ长期借款) / 平均总资产 | > 0.15 | 0.35 |
| F2 | Δ应收账款异常增长 | Δ应收账款 / Δ营业收入 | > 0.50 | 0.20 |
| F3 | Δ存货异常增长 | Δ存货 / Δ营业成本(含小分母与高毛利双重保护) | > 0.60 | 0.20 |
| F4 | 现金-营收背离 | Δ经营活动现金流 / Δ营业收入 | < 30% | 0.15 |
| F5 | ROA 盈利质量同比 | ROA 当前 - ROA 上年(高 ROA 企业智能收紧) | 下降 > 3pp | 0.10 |
F-Score = 1.0 + 各阈值超标贡献之和。F > 1.3 → 高风险;1.0 < F ≤ 1.3 → 关注;F ≤ 1.0 → 低风险。F3 含双重保护机制:Δ营业成本过小自动跳过;毛利率 ≥ 85% 的高毛利行业自动跳过。
2.2 仲裁分
完整数据下,M-Score 两档、红旗三档、五因子项目异常分三档,共形成 18 种确定性组合。仲裁分为:
score = M_level × 0.40 + RF_level × 0.35 + F_level × 0.25
其中各分量为离散等级编码,不是概率。分档为:
score < 0.6:低风险0.6 <= score < 1.4:关注score >= 1.4:高风险
RULE-A/B 可在满足明确条件时作保守升格。任一模型缺失时走"数据不足"路径,不把缺失误记为低风险。公式、编码和算例详见 风险指数算法说明。
2.3 双 Agent 协作(确定性 + ReAct)
审计解释层由两个只读、不改变风险等级的 Agent 协作完成:
① ReAct 归因 Agent(三阶段 LLM 闭环,共 3 次模型调用)
负责把三路信号的结构化数值,串成一段 ≤280 字的因果链归因与一段 ≤200 字的执行摘要。成功链路如下:
Step0 规划 LLM(工具选择 JSON)
↓ 解析白名单,LLM 从 3 类只读工具中正常选择 ≤3 个调用
· lookup_cas → CAS 编号 / 名称 / 条款 ID / 关联说明 / 条款正文(≤160 字截断,对齐 §6.3 CAS 准则依据披露要求)
· lookup_benchmark → 5 个精确行业 + 全市场兜底的 P25 / P50 / P75 分位
· lookup_evidence → 缓存证据片段按长度最多截断 180 字
↓ Python 本地真实执行所选工具(无网络,不产生额外 LLM 调用)
↓
Step2 归因 LLM(带上一轮工具真实执行结果的二次归因)
↓
Step3 摘要 LLM(独立生成 executive_summary)
降级策略:Step0 JSON 解析失败或 ReAct 链路整体异常 → 透明回落单轮 LLM → 再失败返回规则引擎模板。单个工具执行失败只跳过该工具,不影响其他工具或后续归因。
工具数量口径:第一轮 Prompt 约束 LLM 最多选择 3 个工具;解析层对异常模型输出做防御性截断(上限 5 个),正常运行不会超过 3 个。
超时口径:单次 HTTP 请求超时设为 60s;回落链路会追加调用,整条 ReAct 链不承诺 ≤60s 总上限。
② 监管案例核查 Agent(确定性检索,无 LLM)
输入风险红旗 ID 和行业关键词,在本地 20 条监管案例 Mini-RAG 中做词元切分 + 子串匹配 + 规则 ID 加权,生成 CHK_* 人工任务清单(核查方向、建议程序、待补证据、依据条款)。零网络调用,可完全离线。
两者都不修改核心风险结果或仲裁分;预计算脚本负责将叙事文本写入 demo_cache.ai_narrative,但不会写入 react_profile(实时链路每次启动重新生成)。
3. 数据与发布门禁
真实上传报告的正式输出采用两级门禁:
flowchart LR
A["PDF 预检与双期抽取"] --> B{"数据可信度通过?"}
B -- 否 --> C["仅待复核草稿"]
B -- 是 --> D["进入报告级 HITL"]
D --> E{"CONFIRMED/REJECTED 且哈希链通过?"}
E -- 否 --> C
E -- 是 --> F["允许标记正式底稿"]
数据门禁检查 8 个关键科目的本期/上期来源、两期 资产=负债+权益、指标完整率、估算标记,以及多年任务的跨年比较数。系统允许带理由的会话级人工修复,并在附录保留原值、新值、操作人与摘要哈希;原始 PDF 不会被改写。
HITL 采用五态 DFA、角色权限、INSERT-only SQLite 日志和 SHA-256 链式校验。哈希链用于发现链内修改,不等同于电子签名、可信时间戳或不可抵赖证明。
数据安全与 LLM 调用边界
本系统的 AI 综合归因为可选叠加层,不参与数值计算或最终仲裁。常规归因请求只发送结构化模型摘要;可选的证据语义解读会发送截断片段,因此接入外部模型前仍需由部署方完成数据分类、授权和接口安全评估。
| 安全措施 | 具体实现 |
|---|---|
| 最小化出站 | 常规归因 Prompt 包含 M-Score、异常因子数值、红旗 ID/严重度、行业和仲裁摘要,不发送年报全文、企业名称或股票代码 |
| 片段边界 | 可选证据语义解读最多向模型发送 200 字候选片段;正式底稿再次按 180 字上限截断。ReAct 证据工具读取缓存时按长度最多截断 180 字。长度限制不等于匿名化:赛事缓存案例使用模拟或预处理材料;真实用户上传的证据片段在生产部署前,仍须由部署方先完成姓名、证件号等敏感字段的机构侧脱敏。 |
| 输出约束 | System Prompt 要求用"目标企业""A 公司"等代号并禁止输出真实名称或代码;这是生成约束,不替代输入脱敏、访问控制或合规审查 |
| 合同隔离 | 合同审查页面输入文本与合同类型不传至后端,前端规则引擎独立执行;合同审查结果不进入 HITL 审计底稿或哈希链 |
| 离线边界 | 关闭 LLM_ASCEND_ENABLED 后,核心分析不调用模型 API,8 组缓存可离线读取;当前前端图标和页面快照库仍引用 CDN,完全断网时相关展示能力可能降级 |
4. 界面与导出
唯一正式入口提供 8 个 Tab:
| Tab | 内容 | 关键边界 |
|---|---|---|
| 1 | 风险总览 | 显示三路信号、仲裁分和可选 AI 归因 |
| 2 | 红旗因子 | 显示 R1–R5、触发项数、严重度和候选证据 |
| 3 | 模型透视 | 展示 M-Score 8 因子、五因子项目异常分、Altman Z-Score 探索性代理,以及不改变正式仲裁结果的规则化“指控—辩护—裁决”解释原型 |
| 4 | 关注金额 | R1/R4 关注金额敏感性情景,不是调整分录或已认定错报 |
| 5 | 行业风控 | 5 个部分校准快照,其余使用全市场兜底 |
| 6 | 合同审查 | 从 15 项前端规则库中按所选主要合同类型执行 2–4 项条款完备性预检,不调用后端 22 条规则 |
| 7 | 人在回路 | 后端 HITL 操作、审计时间线、页面审计快照和审计链 JSON |
| 8 | 趋势预警 | 真实多年上传趋势,或明确标识的模拟历史序列 |
页面底部的后端导出区生成同源的 Markdown、Excel(.xlsx 8 工作表,依赖 openpyxl,缺失时自动降级为 CSV zip)和 PDF;运行环境没有支持的 PDF 渲染库时,第三种格式自动降级为可打印 HTML。正式底稿包含 8 个组成模块,附录 8G 记录 HITL 状态和审计链。Tab 7 的浏览器 PDF 仅为页面审计快照,不能替代后端归档文件。
核心能力截图(决赛界面 · 2026-08-21)
以下正文引用
final_20260821/的六张基线界面截图;final_20260823/仅保留四张路演外壳与上传入口补充视图,不再作为 ReAct、真实上传门禁或证据三要素的正式发布证据。主案例使用公开历史事件索引「康美药业 2017」,但页面财务数值、趋势和证据片段均为模拟或脱敏演算,不能还原为对相关公司的审计判断或投资建议。
4.1 统一入口
首页将产品定位、能力边界、预设案例与真实上传入口集中在同一屏;正式 Logo、深蓝品牌色与各业务页保持一致。

4.2 三路信号与确定性仲裁(Tab 1)
页面并列展示 M-Score、红旗规则与项目异常分,并由可复算规则给出综合核查优先级;案例名称和年份只作公开事件索引。

4.3 红旗因子、阈值与核查依据(Tab 2)
每条规则展示触发条件、当前演算值、关注原因、建议程序与 CAS 参考方向。准则映射只帮助定位核查方向,不等于已经取得充分、适当的审计证据。

4.4 规则化博弈解释(Tab 3)
“指控—辩护—裁决”用于展示同一红旗的支持理由、规则模板反方解释与临界争议项。当前版本不是多模型自主辩论;这些解释不改变三路信号的确定性仲裁结果,争议项仍推送人工复核。

4.5 HITL 人工复核与审计链(Tab 7)
五态工作流、RBAC 操作约束、只追加审计日志与 SHA-256 哈希链共同保留人工责任。截图为尚未写入首条人工操作记录的初始状态,因此显示 verify_chain OK · 0 条记录。

4.6 多年趋势扫描(Tab 8)
模拟序列展示规则如何扫描多年趋势并标注首次触发年份;“距索引年份 3 年”仅是该模拟序列的规则回放结果,不构成真实样本提前预警能力证明。

发布演示材料
📋 v2.0.0 发布候选材料:
正式 v2.0.0 Release 同步附带以下两个版本化文件:
AuditProbe-v2.0.0-Presentation.pptx— 18 页发布演示文稿;保留决赛母版与视觉体系,更新 v2.0.0 截图、386 项回归和正式底稿边界。AuditProbe-v2.0.0-Demo.mp4— 24.149 秒、1080p、H.264/AAC 产品演示;画面内版本为 v2.0.0。
正式 v2.0.0 Release 链接将在干净 checkout、Python 3.11 Docker 实构建、凭据轮换和 annotated tag 完成后补入;当前不提供不存在的 Release 链接。
🎬 下列 5 分钟视频对应 v1.0.0 初赛发布版,不代表 2026-08-21 决赛界面与最终路演材料: AuditProbe.mp4(v1.0.0)
📦 v1.0.0 初赛交付物(视频、15 页项目介绍 PPT、源码归档)汇总于 Release 页: Release v1.0.0
评委可通过上方 §4 的 final_20260821/ 基线界面和 final_20260823/ 外壳/上传入口补充视图,以及 §6 Docker/Compose 部署说明,在本地复现核心界面与离线规则链;v2.0.0 PPT 与视频随正式 Release 同步发布。
5. 本地运行
5.1 环境
- Python 3.10 或更高版本(正式入口使用 PEP 604 联合类型注解)
- 建议使用虚拟环境
- 核心规则和内置演示不要求 GPU,也不要求在线 LLM
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
Copy-Item .env.example .env
python -m streamlit run ui/professional_app.py --server.port 8501
访问 http://localhost:8501。在线 AI、HITL、证据溯源和扫描校正均由 .env 显式配置;不要提交包含密钥的 .env。
常用开关:
LLM_ASCEND_ENABLED=false
HITL_ENABLED=true
EVIDENCE_TRACING_ENABLED=true
SCAN_CORRECTOR_ENABLED=false
5.2 验证
python -m pytest -q
python scripts\recompute_demo_cache.py
研究案例与正式演示缓存的隔离(data/ 双目录):
- 正式演示缓存
data/demo_cache/恰为 8 份(5 组虚构基线 + 3 组公开事件索引),_index.json不含研究条目,由scripts/recompute_demo_cache.py一键重建。 - 阈值研究案例
data/research_cases/(8 份demo_real_*.json)独立存放,仅含趋势/指标快照(trend_only: true、无financial_data),用于阈值敏感性研究,不冒充 PDF 分析结果、不写入正式_index.json。 - 隔离契约由
tests/test_research_cases.py(6 项)锁定:研究案例数量、trend_only 标志、不冒充 PDF 分析、正式缓存恰好 8 份且无研究文件、正式索引无研究条目、生成脚本指向研究目录。 - 研究口径边界:基础层 20 家/60 份真实年报文件 + 新浪 DEPI 补充层 20 家/40 份 + 派生层 M8 敏感性 18 家;链式证据锚定见
自留文件/阈值实测试点/。本项目不提出中国正式阈值,-1.78为项目公开的筛查决策线。
三层证据链与阈值研究边界(自留文件/阈值实测试点/_verify_all.py,34/34 PASS):
- 基础层:20 家上市公司 × 3 年 = 60 份真实年报文件(M-Score 全八因子可计算的样本),用于核心公式复算;新浪 DEPI 补充层:20 家 × 2 年 = 40 份(含四类变量窗口),用于 DEPI 分层验证;派生层:M8 敏感性分析 18 家(剔除缺失窗口后全链可复算),关键结论:M7(可读性与费用)与 M8(关联交易与账龄)同处"更高阶风险"区间,ST 派瑞在 M7 未越线、M8 越过 -1.78 的判别方向。
- 六类模型风险(阈值研究边界,不消除):① 公式版本差异(A 股常用版本与国外原版因子项不同);② 字段口径差异(研发费用、政府补助等归并口径不同导致分子分母可比性下降);③ 缺失因子处理(M8 等因子依赖附注数据,缺失时返回"数据不足"而非硬填);④ 标签错配风险(指数针对舞弊样本标定,非舞弊样本的结构差异不等于安全);⑤ 极端值影响(如高毛利行业、超大额补贴项放大或缩小单因子贡献);⑥ 伪稳定风险(因子同时被报表粉饰掩盖时,多因子同向"稳定"不代表真实健康)。
- 证据链锚定:
_verify_all.py输出三层独立锚定——基础层 manifestb5354fdf…(run_id20260815T050526Z)、新浪 DEPI 补充层 manifestc4401e9a…(run_id20260815T061446Z)、派生层 M8 结果2d130259…(m8_sensitivity.json的 detached result_sha256)——三层哈希链校验全部通过。
5.3 性能参考
赛事要求提供可量化结果。本节把当前已经可核查的规模指标与待 ModelArts 实测的性能/质量指标分开,避免把目标值写成测试结论。
当前可核查指标
| 指标 | 当前值 | 核查方式 |
|---|---|---|
| 自动化回归 | 386 passed | 2026-08-28 当前工作树完整执行(360 项决赛基线 + 1 项 XSS 门禁 + 8 项身份门禁 + 1 项发布契约 + 16 项哈希链完整性;2026-08-26 基线为 370 passed);覆盖模型、PDF 端到端、门禁、HITL、导出、Docker、Mini-RAG 评测与公开口径,耗时随环境变化不作为性能指标 |
| 演示案例 | 8 组 | 5 组虚构基线 + 3 组公开事件索引;模型输入与结论均为模拟演算。另存 8 份研究案例(data/research_cases/)仅用于阈值敏感性研究 |
| PDF 双期字段 | 16 类指标 | 每类尝试抽取本期/上期,最多形成 32 个期别数值;正式门禁检查其中 8 个关键科目 × 2 期 |
| 仲裁组合 | 18 种 | 完整数据下 2 × 3 × 3 种三路信号组合,另有缺失数据路径 |
| 产品界面 | 8 个 Tab | 总览、红旗、模型、关注金额、行业、合同、HITL、趋势 |
| 合同规则 | 22 条后端规则 + 15 项前端规则库 | 前端每次只执行所选主要类型的 2–4 项;两者尚未接通,不合并计算命中率 |
| 底稿结构 | 8 个组成模块 | Markdown、Excel、PDF或可打印HTML同源导出 |
| 正式底稿范围 | v2.0.0 收敛(2026-08-29 冻结) | 正式底稿仅在合并报表交叉验证通过时生成;部分真实上市公司年报可能因来源验证不足被安全阻断(fail-closed,预期安全行为),仅导出待复核草稿、不输出错误的正式结论;模拟 PDF 证明正式流程可运行、真实年报证明安全阻断有效;扩大真实年报正式路径覆盖率列入 v2.1.0 |
监管案例 Mini-RAG 评测(20 问冻结集,2026-08-15)
监管案例检索为确定性离线规则(词元切分 + 子串匹配 + 规则 ID 加权,无嵌入、无 LLM、零网络调用)。为量化为检索质量,建立了 20 问审计短问句冻结测试集(data/regulatory_cases/mini_rag_eval_questions.json,冻结哈希 freeze_sha256=6964906c4d0c…),先冻结后运行。以下 20/20 指标均为冻结 20 问测试集结果,不代表一般用户查询的召回率:
| 指标 | 结果 | 样本量 |
|---|---|---|
| Top-1 召回(预期案例出现在首条) | 20/20 = 1.0000 | 20 问 |
| Top-3 召回(预期案例出现在前三条) | 20/20 = 1.0000 | 20 问 |
| 引用完整性(答案引用可追溯到证据文件) | 20/20 = 1.0000 | 20 问 |
| 越权断言率(剥离否定语境后仍含"同罪/已确认舞弊"等肯定式表述) | 0/52 = 0.0000 | 52 条边界断言 |
| 双跑一致性(两次独立运行摘要逐字节一致) | 1.0 | 2 次 |
复现:python scripts/eval_mini_rag.py --freeze(先校验冻结哈希再运行);原始逐问结果、汇总与 detached SHA-256 归档于 data/regulatory_cases/eval_output/;复算逻辑由 tests/test_mini_rag_eval.py(7 项)锁定。
演示案例的组合规则响应
下表读取当前 5 组虚构基线缓存,直观展示单独 M-Score 与三路信号确定性仲裁的差异。它验证的是预设场景下的规则响应,不是性能测试、真实检出率或"纠偏率"。
| 案例 | M-Score | M-Score 分级 | 触发红旗 | 综合等级 |
|---|---|---|---|---|
| demo_001 某制药公司 2017 | -1.849 | 低风险 | R1、R3、R4 | 关注 ↑ |
| demo_002 某新材料公司 2017 | -1.950 | 低风险 | R1、R3 | 关注 ↑ |
| demo_003 某水产公司 2017 | -2.297 | 低风险 | R5 | 关注 ↑ |
| demo_004 某白酒企业 2025 | -2.677 | 低风险 | 无 | 低风险 |
| demo_005 某中药公司 2019 | -2.041 | 低风险 | R1 | 关注 ↑ |
↑ 表示项目仲裁规则把人工核查优先级由"低风险"提升为"关注"。5 组数据均为虚构输入,不反映真实主体;8 组完整对照及口径见量化优势说明。
ModelArts 昇腾验证(2026-08-08 ~ 09 历史实测)
当前版本边界:2026-08-21 r5 已完成 ModelArts Ascend 910B 系列在线推理服务正式业务负载验收,finalizer 六项门禁均通过;服务详情与请求日志完成交叉关联。该结论不表示整套系统所有组件均运行在 NPU,也不构成生产 SLA。公开摘要见决赛验收状态。
T05/T06 实跑门禁(fail-closed):npu/run_t05_t06_ascend.py 在同一会话采集五元组并执行 ≥30 次固定短任务微基准,另可启用
--require-backend-evidence正式昇腾验收(要求服务调用、运行机 NPU 观察、远端后端部署证据关联三状态全部成立,缺一即返回非零;不启用时只声称"ModelArts 端点调用及客户端性能观察")与--business-load限量固定业务场景合约负载(2 个公开案例索引下的模拟演算快照(康美2017/獐子岛2016,源自data/demo_cache,页面数值为模拟数据)+ 1 个 manifest 固定参考快照(康得新2017)× 5 次 = 15 次,报告成功率/p50/p95/输出引用契约通过率/越权率/财务与 severity 哈希回显一致率;回显仅证明模型输出复述输入哈希,不证明上游对象未被修改)。--formal-ascend-run可一键强制全部验收门槛(--require-backend-evidence+--business-load+ 30 次基准 + 100% 成功/契约门槛)。部署证据字段名为deployment_evidence_linked(对外称"与 ModelArts 部署证据交叉关联",非密码学意义上的 attested),必须提供 ModelArts 原始导出物(--deployment-artifact-type支持modelarts-api/modelarts-service-log/modelarts-console,source由解析器确定、JSON 不得自报)。解析器兼容官方顶层 schema(新版ShowInferService:id/predict_url(数组,元素为{"type": "PUBLIC", "urls": ["..."]})/status/update_at(13 位毫秒时间戳)/version(资源规格在instance_groups[].unit_configs[].flavor);旧版ShowService:service_id/access_address/config[](含 specification)/operation_time)。官方服务详情响应不含request_id,故部署证据拆为两份:服务详情(证明service_id+endpoint+resource_spec)+ 请求日志(证明request_id+service_id/deployment_id+调用时间),verifier 经 service/deployment ID 连接(P0-2:log.service_id == 服务详情 service_id,或log.deployment_id属于服务详情version.instance_groups[].id部署实例 ID 集合;部署 ID 不得直接等同 service ID);请求日志解析以 provisionalrequest_id为锚只解析该 ID 的单条结构化日志(防跨记录拼接)。要求endpoint_sha256与客户端路由指纹一致,并记录原始证据文件 SHA-256。时间语义(P0-2)拆分:artifact_retrieved_at_utc(本次采集时间)与请求日志时间参与 ±30 分钟窗口校验,service_updated_at(平台服务更新时间,如update_at/operation_time)仅作信息、不参与窗口校验(服务可能已稳定运行数天);P0-1:标准 ISO 采集时间(含+00:00)以"能成功解析为 ISO 时间"为判据被接受(归一结果与输入相同也采用),HTTP Date 仅作 fallback;建议用专用采集脚本保存{"retrieved_at_utc": "...", "http_status": 200, "response_headers": {"date": "..."}, "body": {官方原始响应}}包装,正式服务详情证据必须经采集包装明确记录 HTTP 200(P1:非 200 或缺失状态 → fail-closed,拒绝"错误响应外壳 + 人工拼接 body")。真实request_id在请求前不可知,须按二阶段流程:--provisional-output生成阶段 A provisional 后,从 ModelArts 导出对应request_id的原始服务日志与服务详情,再用--verify-evidence(支持--request-log-artifact双份证据)独立 verifier 交叉绑定;--finalize-formal-run使用固定正式门槛(阶段 A 必须meta.formal_ascend_run=true、business_load_enabled=true、p1_business_load恰好 15 次;30 次基准、成功率/质量率/业务率均 1.0),复算阶段 A 结果 detached hash、双份证据重判部署门禁、重算全部门禁,生成唯一overall_pass且最终输出自身携带 detached result_sha256 的最终验收证据;非正式阶段 A 不得被汇合为通过。P0-3:任何云端调用前先预检 output/provisional 均不存在、父目录可写、两路径不同、O_EXCL 预留成功,provisional/输出写入失败立即 fail-closed;--formal-ascend-run必须在任何云端调用前强制--provisional-output(P1:无条件,即使直接提供--deployment-evidence也不能省略——否则用旧服务详情可绕过预检;强制 provisional 允许二阶段回退,否则退出码 2,避免完成昂贵调用后无 provisional 可供二阶段关联)。--probe-only提供 Stage 0 环境探针(仅 1 次推理,检查响应头是否含request_id、保存脱敏响应头键名),避免为探查字段执行 49 次调用。
测试环境:ModelArts Notebook · Ascend 910B4 (32 GB HBM) · CANN 8.5.2 · PyTorch 2.7.1 · torch_npu 2.7.1.post2 · Python 3.12.0
测试脚本:python npu/modelarts_full_test.py(一键复现;2026-08-08 历史运行总耗时 53.3s,该次 pdf_end_to_end=skipped,耗时不作为当前性能承诺)
四层昇腾适配证据(全部通过)
| 层级 | 验证项 | 实测结果 | 证据文件 |
|---|---|---|---|
| Layer 1 | NPU 硬件信息 | Ascend 910B4 · HBM 32 GB · npu-smi 25.5.1 |
npu/ascend_layer1-4_evidence.json |
| Layer 2 | PyTorch→Ascend 适配 | torch_npu 2.7.1.post2 · is_available(): True · 设备名 Ascend910B4 |
同上 |
| Layer 3 | CANN 算子执行 | MatMul (1024×1024) + Softmax on npu:0 · 命中 CANN 日志文件 |
同上 |
| Layer 4 | 确定性规则链 timing | 纯 CPU 规则链平均 0.141ms(30 次重复,perf_counter);历史参考 0.194s(2026-08-08) |
同上 |
| LLM 观测 | 启用 AI 解读后的 timing | 含 LLM 解读平均 26.77s(2026-08-09 华为云,已关闭) | npu/ascend_llm_observation_2026-08-09.json |
回归测试
| 测试 | 结果 |
|---|---|
| pytest 自动化回归 | 386 passed(2026-08-28 当前工作树实测:360 项决赛基线 + 10 项发布安全门禁 + 16 项哈希链完整性;2026-08-26 基线 370 passed);云端历史记录 128 passed |
| PDF 核心分析链 | 云端 ModelArts ✅ 6/6 真实 PDF 均产生可见分析摘要(康美/康得新/獐子岛造假年份 + 茅台/宁德时代/格力 2025,对照案例不称为‘正常样本’;manual_pdf_observation_status: screenshot_verified);本地 pytest ✅ 6 passed(5 份模拟 PDF + 6 个测试用例,tests/test_pdf_e2e.py 走离线降级路径不执行真实 Qwen3-8B 解读,不称为‘AI 解读全链路’;result_status: locally_reproducible;此前文档声称 302.27s 耗时,elapsed_s_claim_status: historical_claim_without_retained_raw_output,原始 summary 未保留,但 6 passed 本身可本地复跑) |
Layer 4 纯 CPU timing(30 次重复,
perf_counter高精度计时,LLM 强制关闭)
Demo M-Score 红旗触发 F-Score avg_ms median_ms 调整金额 乐视 2015(模拟·高风险) −1.153-1.153 R1, R4 1.0521.052 0.107 0.102 −614.72-614.72 某白酒企业 2025(模拟·低风险) −2.329-2.329 无 1.0801.080 0.093 0.087 00 某制药公司 2017(模拟·低风险+红旗) −1.860-1.860 R1, R3 1.2731.273 0.224 0.098 −1857.14-1857.14 LLM 启用时的 timing(补充外部观测,非 Layer 4 可复现口径):见 ascend_llm_observation_2026-08-09.json,含 LLM 调用时平均 26.77s(华为云 ModelArts,2026-08-09 实测,华为云已关闭暂无法重跑)。
口径说明:Layer 4 timing 为纯 CPU 规则链耗时(
perf_counter高精度计时,30 次重复),不含 PDF 解析和 LLM 调用;LLM 启用时的 timing 归档到独立的ascend_llm_observation_2026-08-09.json,不属于 Layer 4 可复现口径。
结论边界:四层证据证明昇腾 910B4 + CANN 8.5.2 + torch_npu 2.7.1 适配链路完整可用,Layer 4 timing 为模拟结构化输入的全链耗时,不代表真实 PDF 端到端性能。
红旗因子 AI 解读验证(2026-08-09 实测)
推理服务:ModelArts 在线推理 · Qwen3-8B (Ascend-vLLM) · OpenAI 兼容协议
| 测试范围 | 结果 | 耗时 |
|---|---|---|
| 8 份 demo × 14 条触发红旗 | ✅ 14/14 全部成功 | 各 demo 显示值之和 285.7s(终端总耗时 285.8s)· 平均 20.4s/条 |
每条解读约 69–100 字符(多条超过 80 字),含红旗财务含义 + 虚构案例 + 审计核查建议。详见 量化说明 §2.4。
NPU LLM 25 次质量+延迟基准(2026-08-10 补充实测)
推理服务:ModelArts 在线推理 · Qwen3-8B (Ascend-vLLM) · OpenAI 兼容协议 · 本次部署配置为 ModelArts VPC 内推理服务(该字段为部署配置说明,不是 25 次文本基准可测量的指标)
基准脚本:python npu/benchmark_npu_qwen3_8b.py(路径自适应,兼容 -v2 等多版本目录名;5 prompts × 5 trials = 25 次,system prompt + 用户指令双重强制中文;脚本含 summarize_results() 纯函数,见 tests/test_benchmark_summary.py 的 4 个离线单测)
证据文件:npu/npu_llm_benchmark.json(post_run_metadata.artifact_type: post_run_augmented_machine_benchmark;不能声称当前发布脚本直接产出该 JSON,JSON 与脚本的派生关系与哈希见 post_run_metadata.published_benchmark_script.relation_to_original)
| 指标 | 实测值 | 统计口径 |
|---|---|---|
| 成功率 | ✅ 100%(25/25) | 5 道财务审计题 × 5 次重复 = 25 次调用全部成功 |
| 延迟 p50 | 15.36 s | statistics.median(25 个成功样本排序取中,奇数样本与 nearest-rank 中位一致) |
| 延迟 p95 | 18.82 s | nearest-rank:ceil(25 × 0.95) = 24 位样本 |
| 延迟 avg / min / max | 15.47 / 10.27 / 22.81 s | 全部 25 次调用统计 |
| 中文率(平均) | 94.7% | 中文字符数 / 总字符数(含数字标点);最低单条 91.8% |
| 中文可用率 (≥70%) | 25/25 = 100% | 中文字符占比 ≥ 70% 判定为可用 |
| 英文术语次数 | ✅ 0 次 | 9 个英文关键词(cash/flow/inventory/receivable/deficit/liability/asset/profit/revenue)全程零命中 |
| 金融关键词平均命中 | 2.8 项 / 条 | 实际 10 个通用金融关键词(风险/舞弊/异常/增长/下降/可能/虚增/造假/现金流/利润) |
| 相关问题关键词平均命中 | 3.5 项 / 条 | P1 专属关键词集 7 个,P2–P5 各 6 个(共 5 道题);统计与各题真实集大小一致 |
| 综合达标率 | ✅ 100%(25/25) | 四重门限:成功 ∧ 中文率 ≥ 70% ∧ 英文术语 = 0 ∧ 相关关键词命中 ≥ 1 |
| 延迟在 [10 s, 20 s) 区间占比 | 24/25 = 96% | 仅最大 22.81 s 超过 20 s |
三层部署观察(降级为非完全同口径参考):上表 NPU 结果与旧仓库
finreport-risk-agent中的两组历史基线——Ollama DeepSeek-R1:1.5B(本地 Windows,仅覆盖前 3 题 × 3 次,中文用户指令不含「禁止英文」) 与 竞赛 API Qwen3-30B-A3B(公网 HTTP,25 次;模型为 30B 总参数 MoE,约 3B 激活,不是 Dense)——在 prompt 文本的题目内容上有高度重叠,但三者样本覆盖(3 题 9 次 vs 5 题 25 次 vs 5 题 25 次)、中文用户指令、模型规模与架构(1.5B Dense / 30B MoE / 8B Dense)、部署路径(本地/公网/VPC 内)均不一致,且两个基线 JSON 与生成脚本未纳入本发布仓库,因此不得解读为同配置延迟加速比或严格科学基准。三层对比仅用于「部署取舍观察」,不构成任何性能、合规或生产适用性结论。详细降级说明、脚本派生关系、复算证明见 量化说明 §2.4B 与 JSONpost_run_metadata字段。
增强方案量化验证(3 项)
| 方案 | 核心结论 | 详见 |
|---|---|---|
| 「提前 N 年预警」量化验证 | 3 组爆雷案例均在爆雷前 2–3 年首次触发红旗,平均提前 2.7 年;红旗一旦触发便连续多年持续,风险等级逐步升级 | §2.5 |
| 3 案例多维度风险维度对比 | 6 维归一化数据表显示三案例风险轮廓各异:乐视偏"盈利质量"、康美偏"资金真实性"、獐子岛偏"存货真实性" | §2.6 |
| 规则判定 vs AI 解读增强对比 | AI 解读使每条红旗信息量 +133%,新增舞弊手法提示、审计程序建议和历史案例关联;规则仅知"触发了什么",AI 增强后知"为什么+怎么查" | §2.7 |
以上三方案均基于 demo_cache 模拟数据,展示规则响应和系统多维检测能力,不构成真实回测准确率或预测性能。
待补充:性能与质量指标
| 待测指标 | 最低测试方法 | 报告指标 | 当前状态 |
|---|---|---|---|
| CPU/NPU LLM 推理参考 | 同 context · 同 Prompt · 同生成参数 · 客户端 HTTP 端到端耗时 | 分别报告 p50/p95 | T07 已完成:CPU 24/25(p50 64.986s),NPU 25/25(p50 16.502s);完整权重摘要未证明一致,禁止相除或声明加速比 |
| 关键字段抽取准确率 | ≥10 份 PDF 人工标注真值(16 类指标的本期/上期数值) | 准确率(目标 ≥95%) | 待测 |
| AI 归因可用率 | 固定案例集 · 记录超时/失败/降级 | 可用率 | 超时已调整为 60s;content 为空时不读取 reasoning_content 思考链,适配器抛 RuntimeError 后调用方安全失败(返回通用提示,不影响规则结论);长稳 24h/≥200 次统计待测 |
"准确率 ≥95%"仅作为关键字段抽取的测试目标,不能写成舞弊识别准确率。最终对外数值必须同时附样本数、输入范围、硬件/模型、统计口径和测试日期;未完成测试的项目继续标记为"待测"。
一键复现:在 ModelArts Notebook (Ascend 910B4) 中运行
python npu/modelarts_full_test.py,可同时产出四层证据、pytest 结果和汇总报告。2026-08-08 历史运行总耗时 53.3s,该次pdf_end_to_end=skipped,耗时不作为当前性能承诺。详细说明见 量化说明。
6. Docker / Compose
Docker 镜像使用 Python 3.11、非 root UID 10001、tini、健康检查和独立的 HITL 持久卷。默认 Compose 不接收在线模型密钥,核心演示按离线模式运行。
docker compose build
docker compose up -d
docker compose ps
打开 http://localhost:8501。停止服务:
docker compose down
docker compose down 不删除命名卷;只有显式加入 -v 才会删除 HITL 持久化数据。在线 AI 建议使用独立、最小权限的环境文件:
docker run --rm -p 8501:8501 `
--env-file .env.production `
-v auditprobe-hitl:/app/runtime/hitl `
auditprobe:2.0.0
镜像仅安装 requirements.docker.txt 中的当前运行依赖。浏览器中的图标和页面快照库仍有 CDN 依赖;完全隔离网络部署时,核心分析和后端导出可用,但页面图标/快照可能降级,后续可将这些静态资源本地化。详细检查见 Docker 部署审核。
复验实测(2026-08-08 历史记录)
⚠️ 以下为 2026-08-08 的历史构建记录;本轮提交前未重新构建验证(Docker 未运行),精确数值仅作参考基线,不作为当前已复核结论。重新构建后将以
docker image inspect实测值替换。
在 Docker Desktop 29.5.3 + Compose v5.1.4 + WSL2 内核 6.6.87.2 上完成端到端复验:
| 指标 | 历史实测值 | 核查方式 |
|---|---|---|
| 镜像 tag | auditprobe:1.0.0(历史) |
当前 v2.0.0 必须重新构建 auditprobe:2.0.0 后填写镜像 digest |
| 镜像大小 | 约 1.1 GB(历史) | Python 3.11-slim 基础 + 7 类核心依赖;本轮未重新构建验证 |
| 构建耗时 | 约 9.8 分钟(历史) | pip install 阶段 554s(含 PyMuPDF / pyarrow / numpy 大包下载) |
| 容器启动 | 2.1 秒(历史) | docker compose up -d 总耗时 |
| 健康检查 | healthy |
Docker HEALTHCHECK 探针返回通过 |
| HTTP 探测 | 200 OK |
GET http://localhost:8501/_stcore/health 返回 ok |
| HITL 持久卷 | auditprobe_hitl -> /app/runtime/hitl |
命名卷挂载确认 |
| 容器重启次数 | 0 | RestartCount=0,ExitCode=0 |
| 默认运行模式 | 离线模式 | LLM_ASCEND_ENABLED=false,核心规则不依赖在线 LLM |
复验环境为开发者本地 Windows 11 + Docker Desktop;生产环境构建耗时与镜像大小会因基础镜像层缓存、网络代理与 CPU 配额而异,上述数值仅作为参考基线,不作为生产部署的 SLA 承诺。
可配置与可扩展设计
当前模块边界支持复用,但迁移到新的准则体系、文档版式或机构流程时仍需适配和回归验证,不能理解为"只改配置即可无改造成本复用"。
| 维度 | 当前已实现 | 扩展边界 |
|---|---|---|
| LLM 后端 | .env 可选择 DeepSeek、Qwen、GLM 或 ModelArts provider |
新 provider 需实现兼容接口并验证认证、超时与数据出站策略 |
| 行业阈值 | core/red_flags.py 对 R2/R3/R4 提供部分行业覆盖,data/industry_thresholds.json 提供展示快照 |
新行业需补充样本依据、阈值配置和回归测试,不能直接沿用现有快照 |
| 准则映射 | data/standards/ 保存 15 项 CAS JSON,core/cas_tracer.py 读取并匹配 |
IFRS/US GAAP 尚未实现;替换时还需调整字段、映射逻辑、界面和文档 |
| HITL 组织配置 | .env 可设置 HITL_COMMITTEE_MEMBER_IDS 联签名册 |
五类角色及职责分离规则写在代码中,改变流程需同步修改和测试 |
| 扫描件处理 | 可选 scan_corrector_adapter 只做版面旋转校正 |
OCR 未内置;扫描件需外部 OCR 生成文本层后再分析 |
| 演示场景 | data/demo_cache/ 可由 scripts/recompute_demo_cache.py 重算 |
缓存是演示夹具,不是机构知识库或真实效果基准 |
Docker 镜像提供一致的运行基线和独立 HITL 持久卷;核心规则在关闭模型 API 后仍可运行。面向其他审计场景复用时,应按数据、规则、流程和合规要求重新验证。
7. 项目结构
| 路径 | 作用 |
|---|---|
core/ |
抽取、模型、仲裁、证据、HITL、合同规则和导出 |
ui/professional_app.py |
唯一正式 Streamlit 入口 |
frontend-prototype/index.html |
嵌入式高保真前端 |
config/ |
环境与模型配置 |
data/ |
演示缓存、行业快照与运行数据目录 |
tests/ |
模型、门禁、HITL、导出、Docker 与公开口径回归测试;含 5 份随仓库发布的 KB 级虚构 PDF 端到端夹具 |
docs/ |
算法、能力边界、部署审核、演示与迭代文档 |
8. 合规与发行边界
- 中注协《审计准则问题解答第19号》 是执业参考和示例,不是对本项目的认证;本项目仅作设计映射。
20263116-Q-252《智能体应用安全基本要求》目前是国家标准计划,不是已发布实施的标准;本项目不宣称"符合国标"或通过安全认证。- 金融监管文件中的相关要求主要面向受监管机构。本项目把其中的人为监督、日志和异常处置方向作为设计参考,不代表监管合规结论。
- CAS 条目库用于风险线索关联,不是自动执行审计准则,也不是法律或执业意见。
- 内置历史案例仅保留公开事件名称和年份作为教学索引;页面财务数值、趋势、证据片段和模型输出均为模拟数据,不构成对相关主体的事实判断。
9. 文档导航
10. 技术栈
| 技术 | 版本/名称 | 用途 |
|---|---|---|
| Python | Docker 3.11;本地 ≥3.9 | 主运行时 |
| Streamlit | 1.60.0 | 专业版 Web UI |
| PyMuPDF / MuPDF | 1.28.2 / 1.28.2 | PDF 文本层提取、测试 PDF 与导出支持;升级以避开 CVE-2026-7233 受影响范围 |
| NumPy / Pandas | 2.3.5 / 2.3.3 | 数值计算与表格处理 |
| RapidFuzz | 3.14.5 | CAS 条目模糊匹配 |
| OpenPyXL | 3.1.5 | Excel 底稿导出 |
| Requests / python-dotenv | 2.32.5 / 1.1.0 | 可选模型 API 与环境配置 |
| SQLite3 / hashlib | Python 标准库 | HITL INSERT-only 日志与 SHA-256 链式校验 |
| HTML / CSS / JavaScript | 嵌入式前端 | 8-Tab 交互、图表和页面快照 |
| Docker + Compose | 发行配置 | 可复现运行环境与 HITL 持久卷 |
| pytest | 测试工具 | 当前 386 项自动化回归(360 项决赛基线 + 1 项 XSS 门禁 + 8 项身份门禁 + 1 项发布契约 + 16 项哈希链完整性) |
| torch / torch_npu | ModelArts 2.7.1 环境 | 仅用于昇腾算子与环境证据采集,不是发行镜像依赖 |
源码公开与授权边界
Copyright © 2026 Lyn Li(@LynLi)。
本仓库为赛事评审、演示复现和非商业学习公开源码,采用 Competition-Only Source License,不是 MIT,也不是 OSI 认可的开源许可证。 知识产权归参赛者所有;主办方享有赛事评审、展示、存档和非商业宣传所需的非独占授权。 未经书面许可,不得将本项目用于商业服务、生产部署、SaaS、客户交付、转售或二次商业包装。
PyMuPDF/MuPDF 等第三方组件继续适用其自身许可证,本仓库不对其重新授权。 主要运行依赖及 PyMuPDF 的 AGPL/商业双许可边界见 第三方依赖声明。