18 KiB
背景
当前 leaudit-platform 已经完成第一阶段原生执行链接入:
- 文档文件已开始支持
ossUrl -> 本地临时文件 -> NativeRunner - 规则文件已开始支持
run -> rule_source_oss_url -> 本地临时 YAML -> NativeRunner - 执行核心已经切到原生
AuditCtx/AuditService leaudit核心不修改,平台继续通过 bridge 适配
但当前仍有三个关键缺口没有真正完成闭环:
- 还没有统一 OSS 服务,文档/规则下载仍是临时实现
- 还没有完整的规则 YAML 管理后端能力
- 还没有把“上传 → OCR → 抽取 → 评查 → 查询结果”整条链路正式联调跑通
因此需要制定一份统一实施计划,按依赖顺序把这三块一起完成。
总目标
本轮实施的目标分为三部分:
目标 1:统一 OSS 服务
把当前 bridge 中分散的下载逻辑收敛成统一的 OSS / MinIO 能力层,供文档文件、规则 YAML、运行产物三类对象复用。
目标 2:补齐规则管理后端
支持规则 YAML 的:
- 内容校验
- 新版本上传
- 版本持久化
- 当前版本发布
- 历史版本回滚
- 版本正文读取
并为后续在线编辑界面提供稳定后端。
目标 3:打通完整评查流程
跑通最小完整业务闭环:
上传文档
-> 文档入库
-> 文件入 OSS / 或存在可访问真源
-> 创建 run
-> 下载文档到本地临时文件
-> 下载规则 YAML 到本地临时文件
-> Native AuditCtx 执行
-> OCR / 抽取 / 评查
-> 结果写回 leaudit_*
-> 查询运行状态和结果
当前已完成基线
已完成
AuditServiceImpl.Run()已可创建leaudit_audit_runs并触发执行AuditServiceImpl.GetResult()已可读取leaudit_rule_results- 文档文件执行链已接入:
LeauditDocumentFile.localPathLeauditDocumentFile.ossUrl
- 规则文件执行链已接入:
LeauditAuditRun.ruleVersionIdLeauditAuditRun.ruleSourceOssUrlrun -> oss_url -> 本地临时 YAML -> RulesLoader -> NativeRunner
- bridge 层已经新增:
auditCtxBuilder.pyauditServiceFactory.pynativeRunner.pyfileSourceResolver.pyruleVersionResolver.py
尚未完成
- 统一 OSS client / path utils 还未落地
- 规则上传 / 发布 / 回滚 / 读正文接口还未落地
- YAML 语法校验和 DSL 语义校验还未形成正式服务
run_metrics/run_errors/rescue_outcomes持久化还未补齐- 全流程 E2E 还未完成真实联调
当前实施进展(2026-04-27)
M1已开始落地:- 已补
OSS_USE_SSL/OSS_PRESIGN_EXPIRE_SECONDS等配置项 - 已新增统一
OssClient与OssPathUtils fileSourceResolver.py/ruleVersionResolver.py已开始接统一 OSS 服务
- 已补
M2已开始落地:- 已新增
ruleValidator.py - 已补
ruleServiceImpl.py - 已新增
ruleController.py - 已补规则版本创建 / 校验 / 发布 / 回滚 / 正文读取接口骨架
- 已新增
M3已开始落地:- 已按
docs/AuditCtx深度解读-2026-04-27.html复用原生AuditCtx语义 - 已开始把
ctx.timing/ctx.fallback_tasks/ 抽取错误落库到运行级表
- 已按
M4仍待继续实施
总体实施分期
建议分 4 个里程碑实施:
M1:统一 OSS 基础设施M2:规则管理后端能力M3:执行链正式化与结果持久化补齐M4:全流程联调与验收
实施顺序必须按依赖推进,不建议跳步。
M1:统一 OSS 基础设施
M1-1 配置模型标准化
目标
统一 OSS / MinIO 的配置读取方式,为后续文档和规则服务提供底层能力。
需要处理
- 新增或确认 OSS 配置项
- 保证配置能从
app.toml/ 环境变量进入 Settings - 补齐
__init__.pyi类型声明
建议配置项
OSS_ENDPOINTOSS_BUCKETOSS_ACCESS_KEYOSS_SECRET_KEYOSS_REGIONOSS_USE_SSLOSS_PUBLIC_BASE_URLOSS_PRESIGN_EXPIRE_SECONDS
需要修改的文件
fastapi_admin/config/_settings.pyfastapi_admin/config/__init__.pyi- 环境配置文件(如有)
完成标准
- 业务代码可以统一 import OSS 配置
- IDE 类型可识别
- 开发 / 测试 / 生产环境可分离
M1-2 统一 OSS Client
目标
提供平台统一的上传、下载、presign 和对象存在性判断能力。
建议新增文件
fastapi_common/fastapi_common_storage/oss_client.pyfastapi_common/fastapi_common_storage/oss_path_utils.py
最低能力要求
- 上传 bytes
- 上传文本
- 上传本地文件
- 下载 bytes
- 下载到本地临时文件
- 判断对象是否存在
- 生成 presigned URL
- 统一返回 object key / url
完成标准
- 规则和文档两条链都能复用同一套 OSS 接口
- bridge 代码中不再直接写
urlopen
M1-3 统一 OSS 路径生成工具
目标
把文档中约定的路径规范落实为代码工具,避免业务层散写路径字符串。
路径规范
bdocs/{region}/{type_code}/{doc_id}/{version}/{file_role}.{ext}
artifacts/{region}/{run_id}/{artifact_type}/{detail}.{ext}
rules/{rule_type}/{version_no}/rules.yaml
rules/{rule_type}/{version_no}/validation_report.json
需要实现的方法
BuildBusinessDocKey(...)BuildArtifactKey(...)BuildRuleYamlKey(...)BuildRuleValidationReportKey(...)
完成标准
- 上传文档、上传规则、记录产物时统一生成 key
- 路径规范不再散落在业务代码中
M1-4 接管当前 bridge 下载逻辑
目标
把 bridge 中当前临时下载逻辑接到统一 OSS 服务。
需要修改的文件
fastapi_modules/fastapi_leaudit/leaudit_bridge/fileSourceResolver.pyfastapi_modules/fastapi_leaudit/leaudit_bridge/ruleVersionResolver.py
完成标准
- 文档下载统一经 OSS client
- 规则下载统一经 OSS client
- 支持正式私有桶而不只依赖公开 HTTP/HTTPS
M2:规则管理后端能力
M2-1 补规则服务接口
目标
把规则服务从当前骨架扩展为完整规则生命周期服务。
建议能力
- 查询规则集列表
- 查询规则版本列表
- 查询指定版本正文
- 校验 YAML
- 创建新规则版本
- 发布规则版本
- 回滚规则版本
需要修改或新增的文件
fastapi_modules/fastapi_leaudit/services/ruleService.pyfastapi_modules/fastapi_leaudit/services/impl/ruleServiceImpl.py
完成标准
- Service 层接口稳定
- 后续 controller 只做 DTO 拆值与返回
M2-2 补 DTO / VO / BO
目标
为规则管理接口提供规范化入参与出参。
建议新增文件
fastapi_modules/fastapi_leaudit/domian/Dto/ruleVersionCreateDto.pyfastapi_modules/fastapi_leaudit/domian/Dto/ruleValidateDto.pyfastapi_modules/fastapi_leaudit/domian/Dto/rulePublishDto.pyfastapi_modules/fastapi_leaudit/domian/vo/ruleVersionVo.pyfastapi_modules/fastapi_leaudit/domian/vo/ruleContentVo.pyfastapi_modules/fastapi_leaudit/domian/bo/ruleVersionCreateBo.py
完成标准
- 字段统一 lowerCamelCase
- Controller 只接 DTO
- Service 返回 VO / BO
M2-3 实现规则校验服务
目标
为在线编辑和发布提供保存前 / 发布前的双层校验能力。
校验层次
第一层:YAML 语法校验
- 缩进
- 基本结构
- 能否解析
第二层:LeAudit DSL 语义校验
metadata是否完整type_id/name/version是否有效- rule / extract / stage 结构是否合法
- 字段引用是否一致
- phase / risk / score / activate_if 是否符合 DSL 约束
建议新增文件
fastapi_modules/fastapi_leaudit/leaudit_bridge/ruleValidator.py
完成标准
- 非法 YAML 不能发布
- 校验错误可返回给前端展示
M2-4 实现规则版本上传与落库
目标
让规则版本真正以“OSS 存正文、DB 存索引”的方式保存。
处理步骤
接收 YAML 文本
-> 语法校验
-> DSL 校验
-> 计算 sha256 / file_size
-> 生成 rules/{rule_type}/{version_no}/rules.yaml
-> 上传 OSS
-> 写 leaudit_rule_versions
-> 需要时写 validation_report.json
需要修改的文件
fastapi_modules/fastapi_leaudit/services/impl/ruleServiceImpl.pyfastapi_common/fastapi_common_storage/oss_path_utils.py
完成标准
leaudit_rule_versions中完整记录:oss_urlfile_sha256file_sizemetadata_type_idmetadata_namemetadata_version
M2-5 实现发布与回滚
目标
通过切换 leaudit_rule_sets.current_version_id 管理当前生效版本。
处理要求
- 发布时更新当前生效版本
- 回滚时切换回历史版本
- 保留审计信息
- 不影响历史 run 对旧版本的追溯
完成标准
- 新 run 会自动使用新版本
- 老 run 仍保留历史规则来源
M2-6 暴露规则管理控制器
目标
为后续规则编辑页面提供 API。
建议新增文件
fastapi_modules/fastapi_leaudit/controllers/ruleController.py
建议接口
GET /api/leaudit/rule-setsGET /api/leaudit/rule-sets/{ruleType}/versionsGET /api/leaudit/rule-versions/{versionId}/contentPOST /api/leaudit/rule-sets/{ruleType}/validatePOST /api/leaudit/rule-sets/{ruleType}/versionsPOST /api/leaudit/rule-sets/{ruleType}/publishPOST /api/leaudit/rule-sets/{ruleType}/rollback
完成标准
- 前端可直接基于这些接口做查看、编辑、发布、回滚
- 响应统一走
Result
M3:执行链正式化与持久化补齐
M3-1 文档来源解析正式接入 OSS 服务
目标
把 fileSourceResolver.py 从临时 URL 下载升级为正式存储接入。
处理优先级
- 优先
localPath - 否则走
ossUrl/ object key - 落本地临时文件或 bytes 交给执行链
需要修改的文件
fastapi_modules/fastapi_leaudit/leaudit_bridge/fileSourceResolver.py
完成标准
- 文档来源解析不再直接依赖
urllib - 后续换 OSS 实现无需改业务层
M3-2 规则来源解析正式接入 OSS 服务
目标
把 ruleVersionResolver.py 升级为正式的规则版本来源解析器。
标准链路
run_id
-> leaudit_audit_runs.rule_version_id
-> leaudit_audit_runs.rule_source_oss_url
-> 下载规则 YAML
-> sha256 校验
-> 写本地临时 YAML
-> RulesLoader.load(local_path)
需要修改的文件
fastapi_modules/fastapi_leaudit/leaudit_bridge/ruleVersionResolver.py
完成标准
- 执行优先绑定具体规则版本
- 不再主要依赖
_TYPE_ID_RULES_MAP
M3-3 补全运行结果持久化
目标
把 NativeRunner 当前未落库的数据继续补齐。
需要补的内容
leaudit_run_metricsleaudit_run_errorsrescue_outcomesfinishedAtresultStatus- 必要的 artifact 索引
需要修改的文件
fastapi_modules/fastapi_leaudit/leaudit_bridge/nativeRunner.pyfastapi_modules/fastapi_leaudit/leaudit_bridge/storage_adapter.py
完成标准
- 一次 run 的关键结果和错误都能追溯
- 不再只落
ocr/extract/evaluate/rule_results
M3-4 明确 run 状态机
目标
统一 run 的状态与 phase 更新逻辑。
建议状态
pendingrunningcompletedfailed
需要修改的文件
fastapi_modules/fastapi_leaudit/leaudit_bridge/tasks.pyfastapi_modules/fastapi_leaudit/services/impl/auditServiceImpl.py
完成标准
- 前端轮询可看到真实运行进度
- 失败时能准确落状态和错误信息
M4:全流程联调与验收
M4-1 梳理上传入口
目标
确认现有上传能力到底走哪些 controller / service,以及上传后是否已形成:
leaudit_documentsleaudit_document_files- 文件来源记录
- 当前活跃版本标记
需要重点检查的位置
fastapi_modules/fastapi_leaudit/controllers/fastapi_modules/fastapi_leaudit/services/- 文档上传相关 service / controller
完成标准
- 明确上传后如何进入评查系统
当前进展(2026-04-28)
- 已确认当前仓库原先没有现成的 LeAudit 文档上传入口
- 已补最小可用上传接口:
POST /upload - 已新增上传服务链:
DocumentControllerIDocumentServiceDocumentServiceImpl
- 当前上传链已实现:
multipart file
-> 上传 OSS
-> 写 leaudit_documents
-> 写 leaudit_document_files
-> autoRun=true 时直接进入 AuditServiceImpl.Run()
M4-2 接通上传后触发评查
目标
形成稳定用户操作路径。
最小可接受路径
路径 A:两步操作
上传文档
-> 手工点击触发评查
路径 B:一步自动触发
上传文档
-> 自动创建 run 并触发评查
完成标准
- 至少有一种路径可稳定跑通
当前进展(2026-04-28)
- 路径 A“上传后手工触发评查”已具备
- 路径 B“一步自动触发”已补最小实现:
POST /upload
-> autoRun=true
-> DocumentServiceImpl.Upload()
-> AuditServiceImpl.Run()
M4-3 补结果查询展示所需字段
目标
确保前端能拿到完整结果展示数据。
至少要能查到
- run 基本状态
- 总分 / 通过数 / 失败数 / 跳过数
- 规则明细
- 失败原因
- 产物地址(如有)
需要重点修改的文件
fastapi_modules/fastapi_leaudit/services/impl/auditServiceImpl.py- 对应 controller / VO
完成标准
- 前端拿
runId可以完成结果展示
M4-4 准备联调样例
目标
准备一套可重复使用的联调数据。
至少需要
- 1 份真实文档样例
- 1 条有效规则绑定
- 1 份可访问规则 YAML
- 1 套可运行配置
完成标准
- 能稳定复现成功链路
- 能稳定复现失败链路
M4-5 完成一次真实 E2E 验证
验证目标链
上传文档
-> document / file 入库
-> 文件可下载
-> 规则 YAML 可下载
-> Native AuditCtx 执行
-> OCR / 抽取 / 评查完成
-> 结果写回 DB
-> 查询结果成功
完成标准
- 至少成功跑通 1 个真实样例
- 至少验证 1 个失败样例
- 形成一份验收记录文档
推荐实施顺序
本轮开发建议严格按以下顺序执行:
第一阶段:先做 M1
- M1-1 配置模型
- M1-2 OSS client
- M1-3 路径工具
- M1-4 接管现有 bridge 下载逻辑
原因:
- 这是后续规则管理和全流程联调的共同底座
第二阶段:做 M2
- M2-1 规则服务接口
- M2-2 DTO / VO / BO
- M2-3 规则校验
- M2-4 新版本上传
- M2-5 发布 / 回滚
- M2-6 控制器接口
原因:
- 先把规则后端能力做实,再给前端接口
第三阶段:做 M3
- M3-1 文档来源正式接入
- M3-2 规则来源正式接入
- M3-3 持久化补齐
- M3-4 run 状态机
原因:
- 这是把“能跑”升级为“可维护、可观察”
第四阶段:做 M4
- M4-1 上传入口梳理
- M4-2 上传后触发
- M4-3 结果查询补齐
- M4-4 样例准备
- M4-5 E2E 联调
原因:
- 最后做整体验收,避免中途反复返工
高优先级文件清单
一定会修改的文件
fastapi_admin/config/_settings.pyfastapi_admin/config/__init__.pyifastapi_modules/fastapi_leaudit/leaudit_bridge/fileSourceResolver.pyfastapi_modules/fastapi_leaudit/leaudit_bridge/ruleVersionResolver.pyfastapi_modules/fastapi_leaudit/leaudit_bridge/tasks.pyfastapi_modules/fastapi_leaudit/leaudit_bridge/nativeRunner.pyfastapi_modules/fastapi_leaudit/leaudit_bridge/storage_adapter.pyfastapi_modules/fastapi_leaudit/services/ruleService.pyfastapi_modules/fastapi_leaudit/services/impl/auditServiceImpl.py
大概率新增的文件
fastapi_common/fastapi_common_storage/oss_client.pyfastapi_common/fastapi_common_storage/oss_path_utils.pyfastapi_modules/fastapi_leaudit/services/ossService.pyfastapi_modules/fastapi_leaudit/services/impl/ossServiceImpl.pyfastapi_modules/fastapi_leaudit/services/impl/ruleServiceImpl.pyfastapi_modules/fastapi_leaudit/controllers/ruleController.pyfastapi_modules/fastapi_leaudit/leaudit_bridge/ruleValidator.pyfastapi_modules/fastapi_leaudit/domian/Dto/ruleVersionCreateDto.pyfastapi_modules/fastapi_leaudit/domian/Dto/ruleValidateDto.pyfastapi_modules/fastapi_leaudit/domian/Dto/rulePublishDto.pyfastapi_modules/fastapi_leaudit/domian/vo/ruleVersionVo.pyfastapi_modules/fastapi_leaudit/domian/vo/ruleContentVo.pyfastapi_modules/fastapi_leaudit/domian/bo/ruleVersionCreateBo.py
验收口径
M1 验收
- 文档和规则都经统一 OSS 服务访问
- bridge 中不再散落临时下载逻辑
M2 验收
- 可以新建规则版本、读内容、发布、回滚
- YAML 正式存 OSS,元数据正式存 DB
M3 验收
- run 与 rule version 绑定关系稳定
- 运行结果持久化完整
- 运行状态与 phase 可查询
M4 验收
- 真实上传到评查结束可跑通
- 查询结果成功
- 有联调 / 验收记录
实施结论
本轮开发不再继续扩散平台手写评查逻辑,而是坚持以下原则:
leaudit核心不改- 平台负责 DB / OSS / API / 权限 / 任务入口
- bridge 负责把平台语义转换成原生
AuditCtx输入 - 文档与规则都采用“OSS 真源 + 数据库存索引 + 本地临时文件执行”的模式
按本计划推进后,既能保证当前原生执行链继续稳定,也能为后续 YAML 在线编辑界面和完整评查业务闭环打下正式基础。