feat: 完成项目助手与监控演示并修复聊天及云部署配置

This commit is contained in:
NathanAlex7
2026-09-11 15:56:28 +08:00
parent c57d291f65
commit af1a1027d7
75 changed files with 5215 additions and 101 deletions
+649
View File
@@ -0,0 +1,649 @@
# 兴邦金租对公项目助手——系统改造书
版本:v1.0|日期:2026-09-10|基线提交:`c57d291`
适用仓库:`F:/mini-OpenClaw-local-stable`
文档性质:基于会议原稿、当前代码与本轮讨论形成的实施设计。本文中的“新增”“目标”“验收”均指待实施工作,不代表功能已经完成。本次仅交付改造书,不实施业务代码变更。
阅读建议:产品与范围看第 1—4 章;核心架构和组件实现看第 5—12、15—17 章;经验进化与演示看第 13—14 章;实施排期、验收和回退看第 18—22 章。当前可用能力与缺口集中在第 3 章。
## 1. 改造决策与项目定位
在现有 Python mini-openclaw 上增量改造,保留 `AgentManager` 作为模型与工具调用核心,保留 Next.js + FastAPI 技术栈。将现有按四 Agent 展示的工作台,整合为以项目为中心的对公业务助手。
产品承诺:选择项目,自动整理材料、执行检查、指出有依据的问题;补件后更新结果,支持方案比较,形成可修改的底稿,并把人员处理经验用于后续适用项目。
系统的灵活性由可插拔的数据源、Skills、规则、自然语言要求、报告模板和业务方案提供。业务人员看到简单入口,管理员维护组件,mini-openclaw 组织组件执行。
### 1.1 已确认约束
1. 必须使用本项目自己的 mini-openclaw;不换成外部 Agent 平台,也不另建绕过核心的生成链路。
2. 目前拿不到兴邦真实数据;先用完整模拟档案贯通业务,真实对接不作为开发前提。
3. 模拟的是输入资料和演示制度,查询、检查、计算、版本对比、导出和经验复用必须真实执行。
4. 保留可用模块,小步迁移;当前不存在的旧页面不恢复。
5. IT 统一配置连接与访问策略,业务人员不反复配置。权限在后台持续执行。
6. 自然语言可表达本次任务、编辑配置草案,不能静默改变正式制度或扩大工具权限。
7. 首版必须包含可展示的经验闭环;自动生成改进建议可以先做,模型训练和自动修改生产代码后置。
### 1.2 首期范围与后置范围
| 首期必须交付 | 后续扩展 |
| --- | --- |
| 项目材料接入、统一快照、问题清单、补件更新 | 全公司所有数据域的治理与迁移 |
| 有限参数的方案比较、可追溯底稿、Word 导出 | 完整定价优化、自动授信审批和 ERP 写回 |
| 可配置业务方案、原生 Skills、规则与模板 | 任意可视化工作流搭建和插件市场 |
| 人工反馈、经验提炼、审核、适用场景复用 | 自动生成并上线可执行代码、模型微调 |
| 模拟数据包、配置替换演示、版本回放 | 全量租后监控、外部付费征信持续订阅 |
“完整业务流”在首期指助手范围内的检查—补件—方案—底稿—经验闭环,不意味着复刻合同、放款、会计和催收等整个 ERP。
## 2. 会议需求依据及优先级
来源:仓库 `ori_file/兴邦金租会谈-2026.8.18 (1).md`。以下时间为录音时间,转写含有错字,涉及正式业务口径时仍需客户确认。
| 时间 | 会议事实或共识 | 改造要求 |
| --- | --- | --- |
| 03:34—05:16 | 有客户保护权、权限分配、项目全生命周期信息 | 复用项目身份与关联关系,不做全员共享大库 |
| 10:19—14:46 | 现有评级模板主要线下使用,评级以参考为主 | 预留既有模型与模板适配,不自创权威评级 |
| 39:54—45:24 | 人员紧缺,耗时集中在资料、测算和报告;判断尺度有差异 | 统一事实、检查要求与证据表达,保留专业裁量 |
| 43:18—43:27 | 财报已有导入能力 | 重点在导入后的核对、分析、复用 |
| 48:01—51:14 | 尽调报告正在标准化,行业手册主要在线下 | 将手册转成有版本的检查要求 |
| 48:45—50:01 | 提前提供风险关注点,让业务经理先核实,不预先下审批结论 | 首发场景为送审前检查和补件 |
| 01:00:56 | 评审周期约 16—17 工作日 | 分开衡量人工处理、等待、补件;不承诺全周期压缩至一天 |
| 01:57—02:03 | IT 关注个人/共享资料、权限和数据体系;已有公司级数仓 | 数据源优先复用可用数仓或只读视图,附件纳入同一权限体系 |
| 02:04—02:14 | 接受先用小助手,逐步扩展 | 首期界面简单,保持原业务审批责任体系 |
| 02:21:09 | 提效、积累经验、减少人员审查差异 | 验收同时覆盖效率、经验复用和检查一致性 |
保险条款检查保留为专业 Skill 扩展;会议未确认其是主要损失来源,不作为唯一卖点。120% 等会议提及数值不得直接写成通用正式标准;演示规则必须显式标注。
## 3. 当前系统审计与保留清单
本节为静态代码核查结论;真实 ERP 连通、模型质量和客户业务适用性均未因存在代码而得到验证。仓库已有历史测试留痕,但历史通过不等于新功能验收通过。
| 现有位置 | 已核实能力 | 处理决定 |
| --- | --- | --- |
| `backend/graph/agent.py` | `build_task_agent`、`invoke_scoped` 共用 Agent 工厂;显式模型/工具输入;通用聊天流式事件 | 必须保留;增加异步业务任务上下文和统一结构化结果适配 |
| `backend/graph/risk_task.py` | 业务任务调用 `AgentManager.invoke_scoped`,读取所选原生 Skills,并检查必需工具调用 | 保留为兼容适配器;逐步接到通用任务执行服务 |
| `backend/tools/risk_task_tools.py` | 只读授权快照,工具不直接操作生产数据库,任务输入深拷贝 | 保留隔离设计;扩展项目附件、经验和计算工具 |
| `backend/tools/skills_scanner.py` | 发现原生 `SKILL.md`,生成目录 | 保留格式兼容;新增 manifest 校验、版本和内容哈希 |
| `backend/api/risk_agent_config.py` | 连接/数据卡/Skills/规则/方案配置、发布审核、运行存档、自然语言规则 | 保留 API 和数据迁移入口;按服务拆出注册、执行、存储职责 |
| `backend/api/risk_agent_connectors.py` | PostgreSQL/MySQL/SQLite 连接路径、只读 SELECT、允许表、限行超时、服务端凭据引用 | 保留;新增统一数据源适配接口及连接验收,不宣称 ERP 已接通 |
| `backend/api/risk_agent_alignment.py` | 期间、口径、单位、项目标识检查,多期数据保留 | 保留并补强精确金额和字段级来源冲突处理 |
| `backend/api/report_agent.py` | 快照底稿、章节锁定、模型候选稿、版本检查、Word 导出、经验状态流转 | 保留;将模板配置化,补章节依赖、更新差异和统一经验实体 |
| `backend/api/coordination_agent.py` | 补件任务、人员推荐、人工流转、方案版本及摘要 | 复用任务和方案结构;人员分配不作为首期主入口 |
| `backend/api/collateral_agent.py`、`collateral_checks.py` | 租赁物及增信核验、版本失效、PDF/图片/TXT 读取、条件式本地 OCR、材料下载 | 复用核验和文档能力;提取通用附件服务,避免只在租赁物模块能上传 |
| `backend/api/xingbang_projects.py` | 跨模块项目索引和快照关联 | 作为新项目总览的迁移起点 |
| `backend/api/risk_agent_access.py` | 服务器令牌身份、manager/reviewer/admin,manager 项目范围限制 | 保留接口;升级所有业务角色的资源授权。当前不是完整 ERP 权限继承 |
| `backend/data_layer/history_store.py`、`team_experience.py` | 案例存储、频次统计、经验 JSON 更新 | 作为旧数据导入来源;不能视作已经实现自学习 |
| `backend/graph/memory_indexer.py`、`raw_trace.py` | 通用记忆检索、调用轨迹记录 | 复用技术;业务记忆不能直接混入全局个人 MEMORY |
| `src/app/*-workbench`、`data-access`、`trajectory` | 已存在项目、配置、报告、协同、核验、轨迹页面 | 复用组件,逐步统一入口和项目上下文 |
| `scripts/verify.py`、部署配置 | 后端测试、前端构建、Compose 校验、可选容器验证与日志留痕 | 保留为每阶段验证门槛 |
### 3.1 必须解决的结构缺口
1. 配置化执行集中在风险 API 的固定分支;还不是通用 Skill 注册与依赖执行机制。
2. 当前工具读取校验只能证明“调用过”,不能证明输出逐条正确;需要结构校验和有效证据检查。
3. 数据卡、多期记录和报告已有快照,但尚缺统一项目附件、字段依赖和问题延续机制。
4. 新数据导致结果失效已有局部实现,尚未贯通问题、方案和报告章节。
5. 经验卡有审核状态,缺少反馈分类、适用条件检索、实际执行关联及对照评测。
6. 旧 `xingbang_*` 等 API 仍在 `backend/app.py` 注册。须盘点调用方后兼容迁移,不能因前端不显眼就直接删除。
7. 通用聊天与业务任务采用不同模型配置和工具范围。业务界面必须走受控业务链路,避免绕到通用终端/文件工具。
## 4. 产品信息架构与日常使用
### 4.1 业务入口
首页:我的项目、待处理事项、新建演示项目/上传材料。项目详情采用同一个页面框架,保留项目名称、数据时间、当前运行状态和身份上下文。
项目页提供“概览、材料与问题、方案比较、报告、经验记录”五个页签。前三个主操作固定为“检查项目”“补充材料”“生成底稿”;方案比较在项目方案区展示。自然语言输入作为辅助,可说“重点核对现金流”,不要求用户会写提示词。
结果默认展示未处理问题、依据、建议下一步;技术执行日志折叠到“查看执行依据”。系统只展示记录到的事实、工具动作和解释,不承诺暴露模型内部思考。
### 4.2 角色体验
| 角色 | 高频动作 | 配置职责 |
| --- | --- | --- |
| 客户经理 | 检查本项目、补件、说明、生成尽调草稿 | 无需配置 SQL、Skills 或模型 |
| 主审员 | 核对证据、处理分歧、测算、评审底稿、贡献经验 | 提出规则/模板/经验调整 |
| 业务规则负责人 | 核对规则适用条件、发布业务方案与经验 | 维护业务口径,不负责数据库凭据 |
| IT 管理员 | 数据源、映射、模型、权限与系统运行 | 不凭管理员身份自动获得所有项目资料 |
首期演示使用预置身份与项目授权;权限职责与业务角色分开建模,之后接 ERP 身份系统。
### 4.3 不增加使用负担的要求
- 从项目进入时自动携带项目 ID、默认方案和当前材料版本。
- 缺数据直接列明缺什么,支持继续完成不依赖该数据的检查。
- 补件后显示“已解决、仍待核实、新增、需重新判断”,不整页覆盖结果。
- 报告候选更新按段落查看,已经人工确认的内容保留。
- “保存为经验”由系统预填;用户只核对关键内容和共享范围。
- 真实调用慢或失败时展示阶段和可重试操作,不使用虚构进度百分比。
## 5. 目标架构:在 mini-openclaw 内扩展业务运行能力
```mermaid
flowchart TD
UI[项目工作台与自然语言入口] --> API[FastAPI 身份与项目 API]
ADMIN[配置后台] --> REG[版本化组件目录]
API --> RUN[业务任务服务:冻结版本、检查依赖、保存状态]
REG --> RUN
RUN --> CORE[现有 mini-openclaw AgentManager]
RUN --> DET[确定性 Skill 与规则执行器]
CORE --> TOOLS[本次任务授权工具]
TOOLS --> DATA[统一数据与附件快照]
TOOLS --> EXP[已发布且有权访问的经验]
TOOLS --> DET
DET --> VALID[结果结构与证据校验]
CORE --> VALID
VALID --> OUT[问题、方案、底稿与执行记录]
OUT --> UI
DATA --> SOURCES[模拟数据 / 文件 / ERP / 数仓适配器]
UI --> FB[人工修改与反馈]
FB --> CAND[经验与组件改进候选]
CAND --> EVAL[隔离评测与业务审核]
EVAL --> REG
EVAL --> EXP
```
业务任务服务是现有核心外围的执行保障,负责状态、依赖、检查、预算和结果保存,不替代 Agent。模型选择、工具调用循环和模型型 Skill 统一由现有 AgentManager 入口承载;确定性计算直接调用 Python 执行器。
首期采用模块化单体:FastAPI、现有数据库/附件存储、一个可恢复的业务任务 worker。无需先引入微服务、分布式消息集群或图数据库。SQLite 可用于单机模拟环境;多实例或较大并发时再迁移业务存储到 PostgreSQL,这与“连接客户 ERP 数据库”是两件事。
## 6. 可插拔组件协议
### 6.1 统一元数据
所有组件声明 `id、kind、version、schema_version、status、owner、description、content_hash、effective_from、scope、dependencies`。发布版本不可原地覆盖,运行记录保存准确版本和内容哈希。
组件种类:`data_source、data_card、skill、rule_set、plan、template、experience`。草稿可编辑;发布后修改产生新版本。系统配置数据库维护发布内容快照,磁盘 SKILL.md 是编辑和导入来源,避免两套可变内容同时成为运行事实来源。
### 6.2 原生 Skills 与业务能力统一
保留 `backend/skills/*/SKILL.md`。为缺少 manifest 的现有 Skills 提供兼容默认值;新 Skills 增加结构元数据,正文保留自然语言方法。目录里的 skill_id 作为旧别名,发布后使用稳定组件 ID。
```yaml
id: corporate.financial_consistency
kind: skill
version: 1.0.0
schema_version: 1
status: draft
executor: hybrid
description: 对照财报与尽调材料,形成有来源的数据差异
input_schema: ProjectSnapshot.v1
output_schema: SkillResult.v1
required_inputs: [financial_statements, documents]
optional_inputs: [historical_findings]
allowed_tools: [read_project_snapshot, read_document, compare_fields]
depends_on: [corporate.document_extract]
timeout_seconds: 60
max_tool_calls: 12
side_effects: none
```
该 YAML 为目标示例,当前扫描器不会执行其中的全部字段。`executor` 首期支持 python、model、hybrid;规则执行器单独注册。Python 入口从服务器受控映射表解析,不接受上传字符串任意 import/eval。安装新的代码执行器需走开发测试;已有执行器参数和原生方法正文支持后台配置。
### 6.3 Skill 输出协议
```json
{
"schema_version": 1,
"run_id": "run-demo-001",
"step_id": "step-finance-01",
"skill": {"id": "corporate.financial_consistency", "version": "1.0.0"},
"status": "completed",
"input_snapshot_id": "snapshot-demo-v1",
"outputs": {},
"findings": [{
"code": "financial.liabilities.conflict",
"result": "issue",
"severity": "attention",
"title": "负债金额来源不一致",
"evidence_ids": ["e-finance-b12", "e-report-p3"],
"basis_ids": ["demo-rule-consistency@1.0.0"],
"suggested_action": "确认报表期间、口径及材料版本"
}],
"missing_inputs": [],
"errors": []
}
```
步骤状态 `completed/partial/failed/skipped` 与检查结果 `pass/issue/unknown/not_applicable/error` 分离;执行完成不等于业务检查通过。重要数字使用计算输出,引用必须在授权证据集中存在。校验失败时允许有次数限制的结构修复;仍失败则保存未完成状态,不把自由文本当成合格结果。
### 6.4 规则协议及自然语言入口
| 类型 | 执行与维护方式 |
| --- | --- |
| 硬规则 | 字段、运算符、阈值、单位、期间、适用条件,确定性执行 |
| 语义规则 | 明确检查问题、所需依据、输出状态,模型辅助判断 |
| 专家裁量项 | 汇总证据及不同处理思路,留待授权人员判断 |
| 经验提醒 | 匹配适用场景后提出核实动作,不自动变为制度 |
自然语言入口分为本次要求和配置草案。“报告简短些”作用于本次输出;“以后增加一项检查”生成规则草案,展示解释后的条件、影响范围和测试结果。草案在发布前不修改正式方案。正式规则的强制要求优先于经验和本次偏好;无法同时满足时指出冲突,不能静默折中。
### 6.5 业务方案协议
方案包含适用项目、数据卡、必做 Skill、可选 Skill、规则、模板、停止条件和运行预算。发布前校验依赖存在、版本已发布、输入类型兼容、循环依赖、输出字段冲突和工具权限。
首期使用带依赖的步骤列表,无需拖拽画布。必做步骤由程序调度和核查,Agent 仅能在方案允许的可选能力中选择或追加。数据卡仍是平级数据来源;依赖图描述处理步骤,不强迫所有数据卡构成串行链。
## 7. 数据层:模拟到真实的统一合同
### 7.1 数据对象
| 对象 | 主键与主要内容 |
| --- | --- |
| Project | 内部 ID、外部项目号、客户 ID、行业、阶段、归属 |
| Customer / RelatedParty | 客户、集团成员、担保人及关联类型;不以名称作为唯一键 |
| FinancialStatement | 主体、期间、合并/母公司口径、币种、单位、版本、科目值 |
| FinancingScenario | 金额、期限、利率、还款方式、假设及关联基准方案 |
| LeaseAsset / Guarantee | 设备标识、评估记录、担保或保证金证据,避免重复计入 |
| CreditEvent | 事件、来源和截至日期;空集合不直接等于已查无异常 |
| Document | 文件哈希、类型、版本、页/段/单元格定位、所属项目、可见范围 |
| ProjectSnapshot | 本次运行冻结的事实、附件版本、来源和映射版本 |
连接器合同至少包含:连接测试、能力描述、项目读取、对象读取、附件清单和读取、源版本/更新时间信息。API、SQL、文件和模拟适配器返回同一协议。只读 SQL 路径复用当前实现,模型不自行拼 SQL 查询生产库。
### 7.2 口径、时点及来源
每条事实记录原始值、标准值、单位、币种、期间、口径、来源标识、抓取时间、源更新时间、证据定位和转换版本。金额内部用 Decimal 或整数最小单位,JSON 用十进制字符串;比例精度、舍入方式由指标定义。
未知值用 null 加原因;0 是明确数值。不能静默把母公司与合并口径、不同币种、不同期间相加。无汇率来源时不进行跨币种折算。多来源不一致保留双方证据,通过明确来源优先级或人工确认产生覆盖记录,不删除原始材料。
ERP 多表不一定支持一致性读取:能用事务快照就采用;否则记录各源读取时间和最大时间差,超出配置容差则标记混合时点待核实。数据层切换真实来源须做合同测试和对账,不宣称换一个连接字符串就完全完成。
### 7.3 一次配置的实际边界
IT 首次配置连接、只读视图、字段映射、附件地址、同步策略和权限来源;业务人员之后复用。字段结构变化、组织变动、凭据轮换和新数据域仍需维护。
接入顺序:先询问已有数仓/专项视图是否满足;其次 ERP 只读视图或接口;临时文件接入始终保留。只接首期所需数据,不要求先完成全公司的统一数据平台。
## 8. 附件与证据服务
从现有租赁物模块提取通用材料服务,旧接口继续委托调用。首期支持 PDF、DOCX、XLSX/CSV、TXT 和图片;每种支持程度通过 capability 返回,解析器未安装或 OCR 不可用时明确标记。
流程:接收文件 → 计算哈希和版本 → 识别类型 → 读取文本/表格或 OCR → 生成可定位证据 → 提取候选字段 → 校验 → 纳入新项目快照。
PDF 使用页码及必要坐标;DOCX 使用段落/表格/单元格位置,不虚构稳定页码;Excel 使用工作表和单元格。表格公式保留公式及缓存值,缺少可靠值时不编造计算结果。扫描识别不确定的关键金额需人工核对。
文件处理与执行脚本分离,不运行附件宏。证据、原件、提取文本、向量索引和下载均继承项目可见范围。材料含有指令性文字时仍按证据处理。
演示附件必须可真实打开、解析、定位;不能只在前端显示文件名,后端读取另一份预写答案。
## 9. mini-openclaw 运行机制
### 9.1 一次任务的执行顺序
1. 校验身份、项目、操作和组件权限,创建 run_id,记录用户要求。
2. 解析方案并冻结所有依赖版本、模型配置标识、经验版本和任务预算。
3. 读取授权数据,生成不可变项目快照;尚未取得的数据标注缺失。
4. 检查依赖,执行必做的数据校验、提取和确定性计算。
5. 检索适用经验;Agent 在可用工具集合内追加必要核实与分析。
6. 语义分析、报告草稿等模型型步骤通过 AgentManager 执行。
7. 检查结构、证据、计算引用与必做项覆盖;不完整步骤如实记录。
8. 保存问题、计算、建议和执行事件,发布运行完成/部分完成状态。
### 9.2 运行状态与恢复
`queued → running → completed / partial / failed / cancelled`;等待补充材料为 `waiting_input`。waiting_input 不占 worker;补件后创建带 parent_run_id 的新运行,旧快照和结果保留。
同步接口逐步改为“创建任务返回 202 + run_id”。任务状态持久化,支持 SSE 和断线后的事件补读。SSE 断线不取消任务。客户端显式取消只阻止后续执行;无法中止的外部调用结果不再发布到已取消任务。
首期 worker 使用数据库领取任务和租约心跳;重启后识别中断状态。读取、计算步骤可重试;写入任务、保存报告等副作用使用幂等键,禁止因重试重复创建。模型请求超时不假装成功,已完成的确定性结果仍可展示。
每个步骤记录输入摘要、输入哈希、执行器版本、尝试次数、开始/结束时间、状态、输出位置和错误码。对不确定完成状态保留 interrupted,不盲目重放副作用。
### 9.3 固定要求与灵活执行
程序负责强制检查、权限、计算和状态;Agent 负责理解补充意图、选用可选能力、解释材料、组织结果。预算包括超时、模型调用次数、工具次数、输入长度和输出大小,不允许无界自循环。
现有 `invoke_scoped` 的工具隔离原则保留,新增业务上下文含 `actor_id、project_id、run_id、snapshot_id、allowed_tools、component_versions`。不得修改全局模型/工具来切换项目,避免并发任务互相影响。
### 9.4 模型与演示运行模式
- 正式演示使用真实模型调用,记录所用端点配置标识和模型名称,不硬编码品牌依赖。
- 优先兼容已有 ChatOpenAI 内网路径;把配置从风险 API 提取到业务模型适配服务,旧入口继续调用。
- 企业模式只使用经 IT 配置的数据处理路径;推理、OCR、嵌入、日志分别列明部署位置。内网地址不能单独证明服务下游没有外发。
- 无模型时运行确定性检查,并标记语义部分未完成。固定回放可用于测试或讲解,但必须显示“回放”,不能伪装实时智能分析。
- 单元测试可用当前 ToolModel 风格的可控模型;演示验收另跑真实模型,不用单元测试替代质量验证。
## 10. 问题清单、补件与增量更新
### 10.1 问题是业务实体
Finding 保留稳定 ID、项目、对象、规则/经验来源、证据、首次/最近出现运行、当前状态、责任人、处理意见和处理记录。标题文字不是唯一键。
初始业务状态:待处理、待补件、待复核、已解决、不适用。机器检查状态与人工处理状态分离。用户关闭问题必须留下处理依据;“不适用”要记录原因,不能默默删除。
### 10.2 补件如何闭环
用户在问题上点击“补充材料”,自动关联问题和项目;同一文件可关联多项问题。系统解析新材料生成新版本,触发受影响检查,产生“解决、保留、新增、重新打开”的差异摘要。
问题匹配采用对象 ID + 稳定检查 code + 适用范围;涉及规则版本语义变化时标记需迁移匹配,不仅比较标题字符串。不能仅因新结果没提到旧问题就关闭,必须确认原检查仍执行且有解决依据。
### 10.3 增量执行与保守回退
维护依赖链:字段/材料 → Skill → 规则/经验 → Finding → 报告章节。输入或组件版本变化时,将下游标记 stale。无明确依赖声明的语义 Skill 先视为依赖整个项目快照,宁可重跑,不遗漏影响。
复用旧计算仅限输入哈希、执行器/规则版本、权限范围一致。复用结果明确记录来源 run_id;最终输出是新快照下的新结果包,不改写旧包。人工覆盖值和确认意见若受变化影响,提示重新确认,不直接覆盖。
## 11. 方案比较与租赁物能力复用
保留现有 coordination 的方案版本及 collateral 的确定性核验能力,将方案建模为独立 Scenario。用户通过表单或自然语言提出调整,系统先展示识别出的参数变化,再创建情景版本。
首期最低范围:调整融资金额,比较同一评估时点下的租赁物价值覆盖比例;条件具备后增加期限、利率和明确还款方式下的还款计划、现金流覆盖比较。
每个指标明确分子、分母、单位、期间、公式版本和必要假设。“租赁物价值/融资金额”与“可用于还款现金流/应偿本息”是不同指标,界面不可混称覆盖率。保险、担保、保证金不能无依据简单相加后宣称风险已覆盖。
对比结果显示原方案、情景方案、指标差异、问题变化、仍缺材料和假设。没有回款时间表时不输出精确偿债结论;没有客户内部模型和口径时,不声称计算结果已符合兴邦实际租金测算。
用户确认前不改变原方案;确认采用后生成新方案版本,并使相关底稿和检查失效待更新。首期不写回 ERP 正式授信或审批结果。
## 12. 底稿与报告服务
保留现有 Word 导出、人工章节锁定和模型候选稿机制。将代码内固定模板逐步转成版本化模板,首期提供尽调草稿、评审底稿和上会摘要三种交付形态。
模板定义章节、必需事实、引用方式、适用角色、可编辑区域、篇幅和缺失值表示。明确“尽调材料”与“主审内部判断”的访问范围。
生成过程从同一次运行的结构化结果取值;事实数字由程序填充,模型只撰写允许的文字部分。导出包含数据截至时间、方案版本、来源摘要、草稿/定稿状态和演示标识。不得在正文中混入 SQL、插件路径、模型参数等技术信息。
数据更新后按章节依赖生成修改建议;已确认章节保留旧内容并标记可能过期,由人员选择接受或继续保留并说明理由。正式报告保留当时快照,不因后续规则升级而被后台改写。
Word 导出验收包含页面渲染和视觉检查:表格不越界、长中文正常换行、证据标号可对应、草稿/演示标签清晰。报告文字质量用业务检查表评价,不仅检查能下载文件。
## 13. 经验沉淀与可验证进化
### 13.1 反馈来源与分类
FeedbackEvent 记录项目/run/问题/章节、修改前后、作者、原因、证据、发生时间和共享意愿。支持主动“保存为经验”和系统在定稿后自动提出候选,不要求每个动作都弹窗。
分类:表达偏好、事实纠正、补充数据、规则遗漏、规则误报、专业判断、流程建议。修改文字不自动等于纠正了专业结论;多次重复意见只作为候选信号。
### 13.2 经验卡结构与状态
经验卡包含标题、适用行业/阶段/对象、触发条件、建议动作、不适用条件、原始依据、支持与反例、共享范围、版本、审核者、有效期、替代关系、审批结果及租后观察窗口。
状态:草稿 → 待确认 → 已发布 → 暂停/过期/归档。业务共享审核复用现有机制;“有租后观察”单列证据状态,不仅凭填写一段结果就给经验永久贴上“正确”的标签。
批准案例、否决案例、待定案例及失败案例都可以记录;批准不等于好经验,否决不等于坏经验。不得从审批结果直接推断因果。
### 13.3 应用方式
先按主体权限、模拟/真实域、状态、有效期、行业和阶段过滤,再检索语义相似内容。项目私有经验默认不跨项目泄露;发布可共享经验时核查其中可识别资料并限定可共享内容。
经验被使用时生成 ExperienceApplication:经验版本、匹配理由、触发输入、调用的 Skill/新增检查、执行结果和用户反馈。可见提示为“依据某条已确认经验,增加了哪些核实动作”。只引用一段案例文字不计为执行改进。
同类专家意见冲突保留不同条件与来源,提交负责人处理;不得自动投票改成正式规则。现行制度优先,过期经验可保留历史回放但不默认参与新任务。
### 13.4 组件改进闭环
系统复盘反馈 → 提出 ImprovementProposal → 创建候选组件版本 → 在隔离样例集回放 → 比较旧版与新版 → 业务/技术审核 → 发布 → 观察 → 必要时回退。
ImprovementProposal 包含目标组件、原版/候选版、修改理由、支持案例、例外场景、差异、评测结果和风险范围。首期自动候选限定为规则条件、Skill 方法说明、方案步骤和模板要求;可执行代码变更通过开发流程处理。
个人偏好由用户明确表达后仅在个人范围生效;团队经验与正式规则需发布。正式规则发布复用现有编辑/审核分离,不额外给日常每次检查增加审批。
### 13.5 评测设计
固定留出集不用于提炼候选,包含正例、反例、缺材料、过期规则及相似但不适用场景。比较检查召回、误报、引用有效性、人工修改、延迟和调用成本;不同目标不合成来源不明的“智能分”。
确定性任务要求固定结果;模型输出允许措辞差异,按结构与业务条件评价并多次运行观察波动。候选不得仅由同一模型自行打分通过。真实业务经验生效后仍需真实观察,模拟评测不能证明降低坏账。
每次发布冻结组件版本;正在执行任务和历史定稿不跟随变化。回退切换后续运行的发布版本,已生成报告和记录保留。
## 14. 模拟数据与演示剧本
### 14.1 模拟体系
新增版本化 fixture 包,放在专用测试/演示目录。每个包包含结构数据、可打开附件、检查规则、业务方案、预期结果、变更事件和生成脚本。数据按固定种子生成,金额/报表勾稽由程序校验。
预期结果仅供测试使用,业务 Agent 不得读取 ground truth。演示重置只作用于明确的演示实例;模拟 ID、经验、索引和报告均携带 data_domain=demo,不能混入真实域。
### 14.2 三类项目与受控变化
| 项目 | 初始场景 | 后续事件 | 预期能力 |
| --- | --- | --- | --- |
| DEMO-A 标准制造项目 | 材料齐全、口径一致 | 仅改一处报告表达 | 正常完成,不硬找风险;只学习表达偏好 |
| DEMO-B 设备项目 | 财报与尽调冲突、现金流缺项、重复设备 | 补交新版财报,修正设备清单 | 引用定位、部分解决、重新测算、保留未完成项 |
| DEMO-C 回款依赖项目 | 存在某种收入确认但到账依据不足 | 专家提出补件经验,随后新建符合条件/不符合条件的变体 | 提炼经验、审核、跨项目复用及适用边界 |
建议演示金额:设备去重后价值 5,400 万元,原融资金额 5,000 万元,覆盖比例 108%;模拟阈值 120%。情景金额调整为 4,000 万元后比例 135%。界面标明示例阈值,且这一变化不能自动解决缺失现金流资料的问题。
至少再准备数据源失败、模型不可用、OCR 失败、无权项目和中途重启五种异常,用于验收与解释边界。
### 14.3 一次演示顺序
1. 打开 DEMO-B,点击检查,展示实际执行步骤。
2. 点开金额冲突,定位原附件或单元格;让客户看到依据。
3. 上传补件,展示问题差异,保留仍需人工核实事项。
4. 调整融资金额,比较指标与问题变化,原方案保留。
5. 导出 Word 底稿,展示已核实事实和未解决事项。
6. 专家补充一条处理经验,查看系统提炼的条件,完成演示审核。
7. 新建适用项目触发经验,再打开反例展示不机械套用。
8. 管理后台替换规则/模板/Skill,展示同一数据上的可解释变化。
真实模型耗时受端点和材料规模影响,演示时展示实际耗时,不预写秒数。可准备固定回放用于故障讲解,但入口清晰区分“实时运行”和“历史回放”。
## 15. 权限、数据使用与操作边界
一次配置是用户体验目标,后台每次读写仍校验主体、项目、操作及数据域。以现有 authorize 为迁移入口,对所有角色应用资源范围,不继续沿用“仅 manager 限项目、其他角色自然全可见”的简化模式。
权限资源包含项目、附件、运行结果、报告、经验、检索索引、执行轨迹、下载和后台任务。后台任务继承发起者权限;运行期间权限被撤销时,后续读取/发布重新检查。已冻结的数据不因此自动允许向失去权限的用户返回。
IT 连接凭据仅留服务端;组件内容不携带密码。通用聊天、文件浏览及调试日志保留为受限开发功能,正式业务入口不得绕过业务资源边界。项目会话与全局 MEMORY 分离,生成结果、缓存、检索和日志均携带范围信息。
模型调用和长日志可能包含业务数据。生产配置记录必要证据与动作摘要,原始报文访问、脱敏及保留周期由 IT 配置;不把 API key 过滤等同于业务资料已脱敏。
首期所有 ERP 接入只读,外部邮件/消息、审批、放款、写回等副作用不在默认能力范围。系统可生成补件文本和本地任务,不自动向客户发送。
## 16. 数据存储与接口设计
### 16.1 逻辑实体
| 实体组 | 建议实体 |
| --- | --- |
| 项目与数据 | projects、external_id_mappings、project_members、documents、document_versions、snapshots、evidence |
| 配置 | components、component_versions、release_records |
| 执行 | runs、run_steps、run_events、run_component_versions、artifact_dependencies |
| 业务产物 | findings、finding_events、supplement_tasks、scenarios、report_versions |
| 经验进化 | feedback_events、experiences、experience_versions、experience_applications、improvement_proposals、evaluation_runs |
以上是逻辑模型,不要求首期全部建立独立大表。先复用现有 SQLite 与 JSON body;为查询、授权、关联、版本和状态建立必要列/索引。正式报表事实与组件发布版本不可被随意覆盖。
### 16.2 新增接口建议
使用统一前缀 `/api/xingbang/project-assistant`;旧 `/api/xingbang/risk-agent` 保留适配。以下为待实现契约,不是现有可调用接口。
| 接口 | 用途 |
| --- | --- |
| `GET /projects`、`GET /projects/{id}` | 授权项目列表和详情 |
| `POST /projects/{id}/documents` | 上传、关联问题并创建解析任务 |
| `POST /projects/{id}/runs` | 选择方案/快照及本次要求,返回 202 |
| `GET /runs/{id}`、`GET /runs/{id}/events` | 状态和 SSE/增量事件 |
| `POST /runs/{id}/cancel` | 显式取消 |
| `GET /projects/{id}/findings`、`POST /findings/{id}/actions` | 问题清单与人工处理 |
| `POST /projects/{id}/scenarios`、`POST /scenarios/{id}/compare` | 创建情景并比较 |
| `POST /projects/{id}/reports`、`GET /reports/{id}/export` | 创建报告和导出 |
| `POST /feedback`、`POST /experiences/extract` | 反馈和经验候选 |
| `POST /experiences/{id}/publish` | 授权审核共享 |
| `POST /improvements/{id}/evaluate`、`POST /components/{id}/release` | 候选评测和发布 |
写操作使用对象 revision/If-Match 和必要幂等键;冲突返回 409,权限 403,输入 422。结果未完整不只依赖 HTTP 成功码判断,必须读取业务状态。
### 16.3 旧数据兼容
建立旧项目、run、报告和经验 ID 到新实体的映射;旧报告保留 source_id。新字段缺失以 legacy/unknown 标注,不猜造过去的组件哈希、页码或审核人。旧草稿经验不得默认迁移为已发布。
迁移脚本支持 dry-run、数量统计、引用完整性检查、重复执行幂等和事务回滚。快照复制不会自动扩大共享范围。避免同一对象在新旧存储双向写入;迁移后确定唯一写入口,旧接口委托调用。
## 17. 文件级改造方案
新增目录与文件名是建议位置,实施前检查最新工作区和调用方,避免机械照抄造成重复模块。
| 工作项 | 保留/修改位置(backend 内) | 建议新增位置(backend 内) | 注意事项 |
| --- | --- | --- | --- |
| 核心上下文 | graph/agent.py、graph/risk_task.py | graph/project_task.py | 沿用 AgentManager 工厂,旧 invoke_risk_task 保留适配 |
| 协议与注册 | tools/skills_scanner.py、api/risk_agent_config.py | contracts/、services/component_registry.py | 保持旧 SKILL.md 和目录 ID 兼容 |
| 业务执行 | api/risk_agent_config.py 的 run 分支 | services/run_service.py、skill_executor.py、run_worker.py | 迁出已有质量/比例规则后做输出对照 |
| 模型服务 | api/risk_agent_config.py 的 local_model | services/model_provider.py | 风险、报告、协调、租赁物调用方一并检查 |
| 数据适配 | api/risk_agent_connectors.py、risk_agent_alignment.py | services/project_data.py、data_layer/adapters/ | 保留 SQL 校验,旧 erp_connector 不直接当真实已接通路径 |
| 材料服务 | api/collateral_agent.py 的 extract_pages/upload | services/document_service.py、evidence_service.py | 保留旧鉴权和限制,再扩格式 |
| 问题与补件 | api/coordination_agent.py | services/finding_service.py、change_impact.py | 复用任务流转,不增加并行补件台账 |
| 方案比较 | api/coordination_agent.py、collateral_checks.py | services/scenario_service.py | 基准与情景分开,公式版本固定 |
| 报告 | api/report_agent.py | services/report_service.py、模板组件目录 | 保留 Word 导出和章节锁定测试 |
| 经验 | api/report_agent.py、data_layer/team_experience.py | services/feedback_service.py、experience_service.py | 导入旧经验后唯一存储 |
| 评测与发布 | 配置审核及 test-evidence 机制 | services/evaluation_service.py、improvement_service.py | 候选评测不污染正式环境 |
| 项目 API | api/xingbang_projects.py、app.py | api/project_assistant.py | 新路由使用同一授权层 |
前端:复用 `src/app/xingbang-workbench` 及现有工作台,提取到 `src/components/xingbang/project/`;旧地址保留项目参数导航。演示与测试:新增 `backend/fixtures/xingbang_demo/` 和对应 test_*.py,运行数据使用独立临时目录,fixtures 可以进入版本管理。
不立即删除 `review_assist.py、xingbang_router.py、xingbang_v2.py、xingbang_unified.py、xingbang_workspace.py、risk_assess.py`。它们仍被注册,需核查前后端、脚本、测试和外部使用后再决定归档;当前阶段停止将新能力写入重复旧链路。
## 18. 分阶段实施与交付门槛
所有阶段在同一 mini-openclaw 基线上前进。估时采用人日作为初步规划,并非固定交付承诺;模型兼容、文件质量及真实系统对接另行测量,业务审核等待不计入开发人日。
| 阶段 | 主要工作 | 交付物与退出条件 | 初步工作量 |
| --- | --- | --- | --- |
| P0 基线和协议 | 调用链、备份、协议、验收样例、功能开关 | 测试留痕;可恢复基线;旧核心继续运行 | 2—3 人日 |
| P1 组件与数据 | manifest、发布快照、适配器、三类模拟包、授权入口 | 数据源可换;旧 Skill 可跑;新规则可发布;无跨项目数据 | 4—6 人日 |
| P2 执行与检查 | worker、步骤状态、工具范围、结构校验、基础 Skills | 一次点击得到有证据的问题;失败可见;重启可恢复 | 5—8 人日 |
| P3 材料与补件 | 通用解析、证据定位、问题生命周期、变化影响 | 补件实际改变结果;未执行检查不被当成通过 | 5—7 人日 |
| P4 方案与底稿 | 有限情景比较、模板、章节更新、Word QA、UI 整合 | 检查—补件—方案—报告完成端到端验收 | 4—6 人日 |
| P5 经验与演示 | 反馈、经验审核/检索、候选评测、演示重置与异常 | A 项目经验在 B 应用,C 反例不误用;脚本可重复 | 4—6 人日 |
首版合计初估 24—36 人日,阶段间存在依赖,不能按人数简单相除。P3 后可展示“检查与补件”;完整首版定义包含 P5,不能把体验样片当成全部交付。
### 18.1 首批任务顺序
1. 固定 DEMO-B 项目和端到端预期,明确现有输出与目标差异。
2. 新增 ProjectSnapshot、SkillResult、Evidence、Finding 协议及兼容适配测试。
3. 将现有 quality/ratio 执行迁入注册表,验证旧结果一致,再增加新 Skill。
4. 将 API 中内嵌 SAMPLES 提取为可复位模拟适配器与 fixtures。
5. 打通项目页到新运行任务,核心仍为 AgentManager。
6. 扩通用附件、补件对比,再接现有报告导出。
7. 增加情景比较和经验闭环,统一业务导航。
先确保纵向业务闭环,再扩组件数量,避免先做大量配置页面却没有可运行结果。
### 18.2 每阶段验证顺序
在本仓库根目录执行,使用项目虚拟环境;不要直接采用旧文档中另一工作目录。修改前先 status、log,再搜索相关调用方;每次行为修改新增或更新对应测试。
```powershell
git status --short
git log --oneline -6
# 修改完成后,先在 backend 工作目录运行相关测试。
Push-Location backend
.\venv\Scripts\python.exe -m unittest test_risk_core test_risk_agent_config -v
Pop-Location
# 然后在仓库根目录执行统一验证。
.\backend\venv\Scripts\python.exe scripts/verify.py
git status --short
git diff --stat
git diff --check
```
相关测试名单随改动扩展。统一脚本按 backend 工作目录运行全部 test_*.py,随后前端生产构建和两套 Compose 配置校验。涉及镜像运行/部署变更时追加 `scripts/verify.py --docker`;其会操作容器与端口,应在隔离验证环境使用。
计划、命令、完整日志与结果保留在 `test-evidence/`。失败必须修复或缩小改动,不发布镜像。文档设计、离线单元测试、真实模型联调、真实 ERP 验收分别记录,互不替代。
## 19. 功能验收矩阵
以下为目标验收条件,尚未执行新功能测试。全部固定模拟用例必须通过;模型语义质量由已标注评测集度量,不宣称现实业务零错误。
| ID | 场景 | 通过标准 |
| --- | --- | --- |
| CORE-01 | 检查、报告、经验提炼 | 模型调用经过现有 AgentManager,无旁路生成 |
| CORE-02 | 两项目并发 | 快照、工具、对话、经验和结果无交叉 |
| COMP-01 | 新增方法 Skill | 按协议注册并执行,不修改主业务分支 |
| COMP-02 | 替换规则/模板 | 新任务应用新版,正在执行任务与历史报告保持旧版 |
| COMP-03 | 缺失/循环依赖 | 发布或执行前明确报错,不进入无限执行 |
| NL-01 | 本次自然语言与必查规则冲突 | 说明冲突并保留必查项;正式变更只生成配置草案 |
| DATA-01 | 模拟换本地 SQLite 测试源 | 同一标准数据得到相同确定性指标和问题 |
| DATA-02 | 混合口径、单位、重复、空数据 | 换算或明确拒绝,不静默汇总、不把缺失当 0 |
| DOC-01 | PDF/DOCX/XLSX/扫描件 | 支持格式可定位;识别失败明确显示,无伪页码 |
| RUN-01 | 模型或数据源失败 | 已完成结果保留,整体标记 partial/failed |
| RUN-02 | 刷新、断线、重启 | 可查询/恢复,不重复创建报告或任务 |
| FIND-01 | 补交材料 | 预期问题解决,其余保留,状态改变有依据 |
| FIND-02 | 新材料再造成矛盾 | 问题可重新打开,保留历史人工意见 |
| SCEN-01 | 5,000 调至 4,000 万元 | 示例比例 108% 到 135%,原方案不变,缺现金流仍提示 |
| REPORT-01 | 生成导出 | 数字与快照一致,未核实项保留,Word 页面无溢出 |
| REPORT-02 | 已确认章节受变化影响 | 更新候选和过期提示,不直接覆盖人工正文 |
| EXP-01 | 专家纠正 | 草稿包含适用/例外条件及来源,不自动全员生效 |
| EXP-02 | 新项目使用经验 | 产生实际检查动作;反例不误用 |
| EXP-03 | 过期/冲突/私有经验 | 正确过滤或提示,不泄露、不覆盖制度 |
| EVO-01 | 候选规则或 Skill | 留出集对比可查,失败候选不发布 |
| EVO-02 | 版本回退 | 后续任务使用旧版,新旧运行均可追溯 |
| AUTH-01 | 越权项目、文件、报告、日志、经验 | 全路径拒绝越权,覆盖 worker 和下载 |
| DEMO-01 | 重置与现场改数 | 只重置指定演示实例,改数实际改变结果 |
| UX-01 | 普通用户首次使用 | 不输入 SQL/JSON/Skill 名即可完成主流程 |
### 19.1 性能与质量测量
固定机器、模型和材料规模建立基准,例如单项目 10 份材料、合计 50 页、3 期财报,单任务和 3 任务并发分别记录首个状态、解析、检查、模型、导出及总耗时。
建议交互目标:创建任务后 2 秒内显示已接收,状态查询 p95 小于 1 秒;P0/P1 测量后确认实际阈值。模型完成时间先测再设目标,不承诺未知硬件固定速度。
金融数值计算在指定精度下与基准完全一致;引用 ID 有效性在固定测试集中 100%;关键漏检和越权用例不得通过。语义误报/漏报报告分项数量和分母,质量门槛在标注后确定。人工效率先量处理用时与修改量,不将模拟测试换算成未经验证的坏账节省。
## 20. 迁移、发布与回退
### 20.1 变更前留存回滚点
以当前分支/提交留回滚点,不提交凭据或客户运行资料。SQLite 使用一致性备份方式,不在写入时简单复制单个文件;同时备份附件、配置、运行和版本。按项目惯例建立备份目录,并核对绝对路径在目标工作区内。
### 20.2 兼容迁移顺序
1. 增加新协议与服务,旧 API 可用,先通过旧测试。
2. 功能开关下启用新模拟项目路径,做结果对照。
3. 旧接口逐一委托新服务,检查风险、报告、协同和核验调用方。
4. 新项目页复用组件,旧页面保留带项目参数的导航。
5. 迁移 dry-run 和引用检查通过后,切换指定对象的唯一写入口。
6. 确认旧路由无使用方且回退窗口结束,单独任务决定删除或归档。
功能开关建议:新执行器、新项目 UI、经验应用、候选评测、演示数据域。默认值纳入发布记录,不能依赖个人浏览器状态决定业务规则。
### 20.3 回退
出现结果回归、旧数据无法读取、鉴权绕过或迁移引用丢失时停止切换。先停新任务写入,切回兼容接口或旧组件版本;数据库不兼容时执行已演练恢复流程。
上线后已有新业务写入时,先保留新事件,采取前向修复或合并,不能直接恢复旧备份丢弃新数据。回退演练要打开旧项目、报告、附件和经验来源,不仅检查服务启动。代码、数据库 schema、组件发布集合与迁移记录组成同一发布清单。
## 21. 真实数据接入的交付边界
模拟闭环完成后,真实接入作为独立阶段,不推迟当前建设。届时收集:数据字典、只读方式、项目/用户映射、附件读取规则、正式手册和模板、部署与数据处理要求。
实施顺序:最小只读视图/接口 → 映射一个授权项目 → 字段与附件对账 → 单位/期间/来源核对 → 替换演示规则 → 验证权限 → 影子运行和人工复核 → 小范围启用。
模拟配置不能自动升为正式配置,模拟经验不自动进入生产;旧 run 保留 demo 标记。真实模型端点、硬件规模、ERP 类型和附件质量当前未知,影响对接工作量,不影响上层协议和现在的开发。
客户已有评级模板时,适配其输入输出和计算流程,对账后作为受控 Skill;不依赖模型复述模拟模板计算。正式行业阈值、风险偏好及审批流程由客户确认。
## 22. 完成定义与交付清单
完整首版完成必须同时满足:
1. 自有 mini-openclaw 贯穿模型任务,组件可替换,有版本和执行证据。
2. 三类虚构项目、真实附件、规则及预期可复位,能现场改数据运行。
3. 检查—补件—比较—底稿—经验复用通过验收。
4. 业务用户无需理解技术组件;管理员可配置数据、方案、规则、Skills 和模板。
5. 经验适用边界可见,改进候选可验证、可审核、可回退。
6. 旧功能和历史数据可用,规定测试、构建和部署校验留痕。
7. 真实接入合同、权限适配及待确认事项已文档化,演示与生产能力清楚区分。
交付物:系统代码、组件协议与样例、模拟档案与生成脚本、演示规则/模板、数据迁移和恢复脚本、评测集、测试证据、操作手册、配置说明、演示脚本、真实对接清单及已知限制。
第一轮实施从 P0/P1 和一个纵向项目闭环开始。评判改造是否成功,要看用户能否完成工作、能否解释结果和变化、能否将已确认经验带到下一个项目。
## 附录 A:设计来源
- 用户本轮讨论:自有 mini-openclaw、模拟数据先行、组件可插拔、体验简单、经验沉淀与进化。
- 本仓库 AGENTS.md:最小改动、先读调用方、联动检查、测试留痕和失败不发布。
- `ori_file/兴邦金租会谈-2026.8.18 (1).md`:业务痛点与试用意向,定位见第 2 节。
- 当前代码及测试:清单见第 3、17 节;根目录 ARCHITECTURE.md 描述通用聊天基础,不能单独代表最新业务实现。
- [LangChain Memory overview](https://docs.langchain.com/oss/python/concepts/memory):案例、知识与操作方法分层参考,不要求采用其外部平台。
- [Anthropic Agent evals](https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents):程序及人工评价 Agent 的工程参考。
- [OWASP Authorization Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html):持续执行资源授权的参考。
外部资料仅作为工程方法参考,兴邦正式规则不从公开文章推断。设计数值与工作量均为规划值;未获客户确认的规则属于演示规则。
+35
View File
@@ -0,0 +1,35 @@
# 原始聊天连接修复
2026-09-11,本地开发版已修复;未替换8002/3200的Docker稳定版,也未搬迁或删除旧会话。
## 已定位的原因
原始聊天的src/lib/api.ts固定使用8002,工作台使用RISK_AGENT_BACKEND_URL指向8003,导致两套后端混用。
对当前已配置模型服务发送最小连通性请求:默认参数返回HTTP200,但正文content为0字符、推理字段5字符;显式thinking.disabled后正文为5字符、推理为0字符。因此不能把推理字段直接作为答案展示,应使用该服务支持的正文输出模式。
前端原SSE解析器按网络数据块重置事件名,event和data分在两个块时会漏掉token事件;原后端允许空正文正常结束并保存空助手消息。
## 本地生效配置
backend/.env增加`CHAT_THINKING_MODE=disabled`,只用于原始聊天和聊天标题。该文件仍被Git忽略,凭据未提交。留空表示沿用上游默认,enabled表示显式启用;其他模型服务是否支持该参数必须另行验证。业务评审invoke_scoped仍使用调用方显式传入的模型,不受此选项修改。
原始聊天、会话、文件和轨迹请求使用同源`/api/core/*`代理。目标按CORE_BACKEND_URL、RISK_AGENT_BACKEND_URL、8002默认值依次选择;当前本地启动脚本使用8003。代理直接传递流,不缓存完整回答。由于原始聊天包含通用文件与工具能力,此新增代理仅允许本机Host,不作为对外业务入口。
已在本地重启8003加载配置。打开 http://127.0.0.1:3000/ 使用修复后的聊天;原Docker的3200界面未同步修复。旧Docker历史仍在原后端,不会自动出现在新后端的会话列表中。
## 错误与等待
- 空正文、断流、超时和HTTP失败均显示明确提示;失败时保留已接收正文,不保存空助手消息。
- 不用推理内容替代最终答案,不自动重试可能已执行工具的请求。
- 模型单次请求超时60秒、无自动重试;业务聊天事件最长空闲75秒、总计180秒;前端额外有90秒事件空闲/180秒总等待保护。
- 标题生成最多等待8秒,不影响已经成功完成的正文。
- 事件解码支持跨任意字符分片、CRLF、多行data以及仅有最终正文的兼容返回。
## 验证
backend/test_chat_repair.py覆盖空响应、最终正文补发、工具分段、故障保留、超时取消和配置隔离,并调用scripts/test_chat_stream.cjs验证真实TypeScript解析器与代理。
scripts/probe_chat_model.py为手动最小诊断工具,使用既有配置只发送连通性文本,不发送项目、附件、历史或工具;输出仅为字段计数、HTTP状态和时间,不打印凭据或推理内容。使用时会产生真实模型调用,单元测试不执行它。
统一验证日志:test-evidence/20260911-154025-c57d291,103个后端测试、前端构建、两套Compose配置通过。浏览器验收结果另外保存在test-evidence/chat-repair/。
+47
View File
@@ -0,0 +1,47 @@
# 运行中心最小演示版
本版为本地开发部署,非生产发布。业务入口从“四 Agent 工作区”调整为项目工具;旧业务页和数据保留在“兼容入口”,不表示旧能力已全部迁移。
## 本地启动
在仓库根目录运行 `powershell -ExecutionPolicy Bypass -File scripts/start_operations.ps1`。
脚本使用项目 backend/venv,隐藏窗口启动前端 3000、后端 8003,不停止占用端口的进程,也不改已有 8002 Docker 稳定版。端口已有服务时验证接口,不会覆盖其他服务。日志写入 test-evidence/local-operations-*。
打开 http://127.0.0.1:3000/operations-center?domain=lab&view=lab 。本机未配置身份时使用现有回环预览机制;配置身份后需先登录,演示写操作仅管理员且须有 LAB-001 权限。项目工作区的监控仍按每个项目授权过滤。
## 独立数据库和真实数据流
`backend/xingbang_data/operations_demo.sqlite3` 与现有 `project_assistant.sqlite3` 隔离。源表为 lab_project(1行)、lab_finance(1行)、lab_asset(3行,EQ-01重复1次)。修改只允许预置项目和字段,不接受任意 SQL、数据库路径或外部凭据。
保存源表后,不会自动改变已同步项目或历史运行。确认同步时事务读取 SQL 记录,按设备编号去重计算,保存来源表、列、行标识、版本和内容哈希;随后使用现有 ProjectAssistantService、DurableWorker、Skill 执行器创建并处理持久任务。检查输出、步骤、租约、问题和事件保存在该隔离库。
演示数据源写入不是 ERP 写回。两者不可混淆。现场数据和阈值均为虚构样例,不是兴邦正式制度。
## 四步演示
1. 初始融资5000、设备唯一价值5400、财报负债13200、尽调12800、现金流缺失、有重复设备。点击“确认同步并检查”:覆盖率1.0800,4项待处理,技术状态部分完成。
2. 尽调改13200,取消设备重复,保存并再检查:2项待处理。
3. 现金流填900,融资改4000,保存再检查:覆盖率1.3500,0项待处理,确定性步骤执行完成。
4. 切换演示规则v2.0.0(阈值140%),再检查:出现1项覆盖问题。查看旧任务,其采用的仍是v1.0.0(120%);可在“检查依据与对比”比较新旧检查结果。
暂停数据源再同步会明确失败,不创建虚假运行;恢复启用后可重试。每次数据保存和规则切换均留审计记录,不提供清空当前项目按钮。历史显示最近100个任务、50个问题和10次验收;汇总基于所有获授权记录,适用于最小数据集,不宣称大规模并发性能。
## Skills 与规则
默认复用 corporate.consistency、corporate.cashflow、corporate.assets、corporate.coverage 四个确定性业务 Skills,不依赖模型即可演示。
lab.coverage预置不可变的v1.0.0和v2.0.0;切换仅修改隔离库发布指针,不更改正式配置。运行冻结实际组件版本与内容哈希。
可选“真实模型核查”复用 corporate.analysis、原生 risk_evidence/SKILL.md 和 AgentManager 受控工具循环。需配置内网模型;未配置时步骤如实失败,其他结果保留。自然语言只在该模式解释,确定性模式不假装理解提示词。
## 看板与验证边界
运行与待办:展示真实排队、执行、部分完成、失败、取消、时间与运行中租约心跳,技术完成与业务问题分离。页面每2.5秒刷新,不创建后台定时项目重跑或外部通知。
检查依据:步骤、数据来源、当次组件版本、当前发布版本、事件及同项目历史比较。未执行检查不当作通过。主项目区只读,隔离演示区管理员可取消任务。
隔离验收:在临时SQLite里执行四个用例,实际问题码和覆盖率必须符合预期,不修改演示源或原项目。不是模型质量评测,也不是生产业务验收。
系统自检:后端请求到达、SQLite quick_check、模型配置状态。已配置不代表连通或质量通过;本版不检测OCR/Word版式/ERP,不虚构Token、费用和可用率。
本次自动化验证入口:`backend/venv/Scripts/python.exe scripts/verify.py`;新用例位于 backend/test_operations_center.py。完整命令、日志和结果写入test-evidence。无需安装外部Agent或浏览器商店插件。
+133
View File
@@ -0,0 +1,133 @@
# 兴邦项目助手实施与验收说明
更新日期:2026 年 9 月 11 日。对应《兴邦金租系统改造书 v1.0》。本说明区分已实现、已离线验证和仍需联调的能力,不将模拟结果当作真实业务验收。
## 当前交付状态
项目工作台已接通可配置检查、真实材料解析、补件与来源确认、情景比较、报告章节操作、反馈及经验评测发布。新检查复用现有 AgentManager 的受控工具循环,确定性计算使用 Decimal。旧四 Agent 页面和接口保留。
尚未达到改造书“全部完成”的验收条件:
- 未提供内网模型地址及模型名称,真实语义质量、真实模型并发耗时和模型方法候选的语义评测没有完成。离线测试使用测试模型执行真正的 AgentManager 工具循环,不是对真实模型质量的证明。
- 当前运行环境没有可用的 LibreOffice 文档渲染器。DOCX 导出结构和引用已自动检查,Word 逐页视觉验收尚未通过;不能据此宣称页面无溢出。
- 经验支持人工填写和通过 AgentManager 从反馈提炼结构化草稿,真实模型提炼质量仍待联调。模型生成规则候选尚未实现。新业务页的人工经验表单覆盖回款依赖案例,更多条件可由受控 API 定义。
- 模型型 Skill 候选目前在发布门槛中明确阻断,需要补充真实模型与标注集的评测执行器。非演示数据源的组件发布也保守阻断;已存在的只读连接测试及接入管理仍可使用。
- 旧 API 与新项目助手使用相互隔离的业务对象,新助手原型数据已迁移为只读档案;尚未把全部旧业务对象转换成同一业务模型或将全部旧 API 委托到新服务。
- 中文扫描件 OCR 需要配置本地语言包;已覆盖未配置、空白页和解析失败的明确提示,尚未完成真实扫描件识别质量验收。
以上是实际剩余工作,不属于已经完成的功能。真实 ERP、正式制度阈值和客户模板的接入按改造书第 21 节独立推进。
## 客户经理使用流程
1. 打开 `/xingbang-workbench`,选择已授权项目。
2. 可填写“本次检查要求”,选择业务方案并点击“检查项目”。服务返回已排队状态,页面自动轮询。离开页面不取消任务;可在概览中主动取消。
3. 在“材料与问题”上传材料。查看解析位置和候选字段,填写核对说明后确认来源。上传不等于自动接受候选,旧值与旧来源始终保留。
4. 对缺件可选择字段人工补充,必须写明依据。保存后重新检查,在运行变更摘要中查看解决、保留和重新打开的问题。没有执行或没有证据的检查不能使旧问题自动解决。
5. 在“方案比较”填写金额。比较仅保存情景,不改融资基线。填写理由并明确采纳才更新项目并使相关底稿过期。
6. 在“报告底稿”选择运行和模板,生成尽调草稿、评审底稿或上会摘要。事实与检查清单来自冻结快照,需通过补件修正;人工意见章节可编辑。确认、锁定的章节重新生成时保留正文,并产生候选。所有章节确认且未过期后,审核人才能定稿。
7. 在“反馈与经验”记录纠正类型及来源运行。表达、事实和数据纠正不自动转为规则。核查遗漏等可以创建经验草稿,经过正反例评测、独立审核后生效。
本机预览允许一人演练不同角色;正式环境不允许编辑人审核发布自己的经验或组件。
## 演示档案与演练
所有金额均为虚构演示数据,默认币种 CNY、单位万元、2025 年度、合并口径。120% 不代表兴邦正式制度。
| 项目 | 初始情形 | 预期 |
| --- | --- | --- |
| DEMO-A | 完整标准制造项目 | 已配置的确定性检查不产生问题;模型缺失时整体仍为部分完成 |
| DEMO-B | 财报负债 13200、尽调 12800;现金流缺失;重复设备;融资 5000、唯一设备价值 5400 | 四项待处理;补充尽调 13200、重复数 0 后解决两项;金额情景 4000 得到 1.3500,现金流仍缺失 |
| DEMO-C | 存在回款依赖,回款凭证缺失 | 发布匹配的团队经验后,产生实际回款凭证检查及 ExperienceApplication;DEMO-A 不匹配,不应用 |
演示源数据和设备清单均有真实 CSV 文件内容、内容哈希及行号。设备清单按唯一编号去重,重复行不增加价值分子。同编号价值冲突时不计算总额。
可重复的离线验收及演示材料生成:
```powershell
.\backend\venv\Scripts\python.exe scripts/assistant_acceptance.py
```
该脚本在临时 SQLite 中运行,不更改当前页面的数据。输出位于 `test-evidence/assistant-acceptance-*`,包括 CSV、三种 DOCX 及 JSON 验收结果。模型强制关闭,计时只代表离线确定性路径。
重置接口为 `POST /api/xingbang/risk-agent/project-assistant/demo/reset`,必须为有三个演示项目权限的管理员,并提供 `{"confirmation":"RESET-DEMO-A-B-C"}`。先归档,再只重置三个演示实例;不删除组件发布版本、旧审计或正式项目。
## 配置及模型调用关系
默认方案 `corporate.default` 组合新项目检查及旧目录的已发布 `plan-default`。因此旧配置页选中的数据卡、确定性 Skills、规则集会进入新运行,而不是只在页面上展示。每次排队会冻结配置、原生方法文本、当前资料、任务要求和服务端开关;之后编辑配置不改变已排队运行。
模型型检查通过 `services/assistant_model.py` 调用现有 `agent_manager.invoke_scoped`。模型只能读取本次快照、允许的材料、程序检查、已选方法和已授权经验;没有 SQL、终端或外部写入工具。结构化返回需要校验枚举、检查码、字段及证据 ID。模型未执行必需读取、超时、返回未知证据或缺少配置时,步骤失败并保留其他已完成结果。
组件治理页面支持草稿、隔离评测、发布和回退。已发布内容不允许覆盖。模型型候选不能冒充通过离线确定性评测,现阶段保持阻断。自定义确定性 Skill 使用 allowlist 中的执行器;不执行任意 Python、动态导入或 eval。
原生方法保留 `risk_evidence/SKILL.md` 旧路径别名,新增稳定 ID `risk.evidence_review`、版本、manifest;新旧工具协议分别读取各自被允许的工具。
## 运行与数据协议
- `assistant_objects` 存储项目、材料、输入快照、最终快照、运行、问题、情景、报告、经验及发布版本。
- `assistant_jobs` 为持久任务队列。工作进程用租约、心跳和 owner 检查防止迟到进程发布;最多恢复三次。已持久化完成步骤可复用。
- 运行状态有 queued、running、completed、partial、failed、cancelled。当前未实现 waiting_input 的原位恢复,缺输入以 partial 和补件后的新运行处理。
- `assistant_idempotency` 用于运行和报告请求去重。同一身份、操作和键若对应不同请求内容,返回 409。
- `assistant_events` 记录项目操作及步骤事件。项目页面展示最近 100 个事件。
- 快照中的金额用十进制字符串,缺失为 null。金额来源保留原值及单位;元/万元/亿元可归一到万元,币种、期间、口径不兼容时不跨口径计算。
- 机器 result 与人工状态、说明、历史分别保存。运行时项目已更新则标记 superseded,不覆盖当前问题状态。
- 每次报告生成引用明确的运行、快照和模板版本,不能使用历史运行搭配当前事实。定稿另存不可变副本。
## 文件解析限制
单文件最大 10 MB,文本总量 30 万字,PDF 每份最多 40 页。DOCX 使用正文段落及表格行定位,不伪造页码;XLSX 保存单元格位置、公式及已有缓存,不计算公式、不运行宏。旧 XLS/XLSM 不支持。CSV/TXT 需 UTF-8。
PDF 和图片复用本地 PyMuPDF 提取。OCR 可配置 `XINGBANG_OCR_TESSDATA`,需要 `chi_sim` 与 `eng` 本地语言包。无文字或 OCR 失败时显示部分完成及原因,不当作空白证明。
当前结构化候选优先识别标准字段的键值行和明确的设备清单格式,任意非结构化材料不会被伪装成已自动理解。
## 身份与开关
`XINGBANG_AUTH_USERS` 在服务器配置身份、令牌、role、projects、teams。不要把令牌提交 Git。管理员和审核人也必须有明确项目授权,不能因为能管配置而读取客户材料。新增项目接口、附件和 Word 下载以及 worker 发布前均执行项目边界。
```text
XINGBANG_REQUIRE_AUTH=1
XINGBANG_LOCAL_MODEL_URL=http://内网IP:端口/v1
XINGBANG_LOCAL_MODEL_NAME=模型名
XINGBANG_LOCAL_MODEL_KEY=由服务器安全配置
XINGBANG_ASSISTANT_ENABLED=1
XINGBANG_ASSISTANT_DEMO_ENABLED=1
XINGBANG_ASSISTANT_EXPERIENCES=1
XINGBANG_ASSISTANT_EVALUATION=1
```
模型连接仅允许 localhost/回环或私有网段 IP,不把项目材料发送到公共模型地址。`XINGBANG_ASSISTANT_ENABLED=0` 停止新助手入口和启动新 worker;旧业务入口保留。若要停止正在执行的进程任务,应先取消任务并有序重启,不能只修改启动后的环境文件。
## 迁移与回退
迁移前使用一致性 SQLite backup,不在写入期间裸拷贝单个数据库文件。实际迁移前已建立 `_backup_pre_full_assistant_20260911` 和带时间戳的 `_backup_pre_assistant_migration_*`。
```powershell
# 默认只读检查
.\backend\venv\Scripts\python.exe scripts/assistant_migrate.py --dry-run
# 一致性备份后迁移;建议先停止旧后端写入
.\backend\venv\Scripts\python.exe scripts/assistant_migrate.py --apply
# 从指定备份恢复到新文件,绝不覆盖当前库
.\backend\venv\Scripts\python.exe scripts/assistant_migrate.py --database _backup_pre_assistant_migration_时间戳/project_assistant.sqlite3 --restore-copy test-evidence/recovered-assistant.sqlite3
```
旧原型表保留,历史记录复制到 `legacy_archive`,ID 为 `原表名:原ID`,来源标记 `legacy_unknown`。不把旧原型伪定位升级成真证据。重复迁移不重复写入。新助手只写新对象表;旧原型运行、底稿、经验表只读保留。
已有新写入时不可直接恢复旧库覆盖它。先保留当前库与事件,检查恢复副本、引用和旧资料,再决定前向修复或受控合并。脚本刻意不提供破坏性的原地恢复。
## 验证与发布纪律
```powershell
.\backend\venv\Scripts\python.exe scripts/verify.py
```
统一脚本先后运行 diff 检查、全部后端单元测试、前端生产构建和两套 Compose 配置验证。开发缓存已隔离到 `.next-dev`,生产构建继续使用 `.next`,验证不会再覆盖正在运行的开发页面资源。
测试覆盖真实 AgentManager 工具循环、引用伪造拒绝、项目并发隔离、配置冻结、发布门槛、失效租约恢复、取消、权限撤销、真实格式解析、十进制换算、SQLite/mock 一致性、补件状态、底稿锁定候选、经验正反例以及迁移幂等。具体运行次数及日志以 `test-evidence` 中最后一次报告为准。
本轮未发布镜像,未执行真实 ERP 接入或真实模型质量验收。文档渲染失败也单独记录,不会被绿色单元测试掩盖。
## 真实对接前需要确认
内网模型地址、模型名、工具调用及 JSON 输出能力;标注的语义检查正反例和误报漏报门槛;正式规则、评级模板和报告格式;只读数据字典及项目/用户/团队映射;材料访问与保密要求;OCR 语言包;服务器资源、并发规模、备份保留期及发布审批人。