Files
mini-openclaw-v2/docs/v2/02-architecture.md
T
qiaoqichaoandClaude Code d56c699ce6 chore(v2): 从兴邦预审v2白名单抽取独立可运行基座
按 docs/v2/05-implementation-plan.md §1 候选迁移表与 claude_use/T00 白名单,
从 55e2cdb 抽取 224 个文件(2.48 MB)到独立目录 F:/mini-OpenClaw-v2。

- 排除:凭据(.env/server-deploy.conf/旧DELIVERY.md)、运行数据(xingbang_data 等
  4 个 SQLite)、依赖(venv/node_modules 符号链接)、归档(_backup*/test-evidence/
  ori_file)、Office 临时文件
- 目标目录独立 git 仓库,初始恢复点;Gitea 远程与分支待 OQ-06 Q2 定案
- 未部署、未启动服务、未调用模型

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-29 12:58:26 +08:00

120 lines
9.6 KiB
Markdown

# 兴邦预审 v2 架构设计
状态:候选设计 0.2,产品方向已确认、工程门禁待审阅;本文件严格区分当前事实与拟议架构。
## 1. 概览与已核验基线
代码快照 4d5a420 已保存在 Gitea。当前架构从代码确认如下,图中不包含尚未实现的新模块:
```mermaid
flowchart LR
U[业务用户] --> W[Next.js 项目工作台]
W --> P[同源 Route Handler]
P --> A[FastAPI 路由与权限]
A --> S[ProjectAssistantService]
S --> Q[DurableWorker]
Q --> X[Skill 与规则执行]
X --> M[受限模型 Agent Loop]
S --> DB[SQLite 对象与审计]
```
| 已有能力 | 已检查代码 | 复用限制 |
|---|---|---|
| 项目快照/证据/问题契约 | backend/contracts/project_assistant.py | 本期复用,不另造同名概念 |
| 项目/任务/事务对象 | backend/services/project_assistant.py、assistant_store.py、assistant_worker.py | 巨大 service 不继续堆新领域,新增模块通过现有入口调用 |
| 数据卡/材料 | backend/services/assistant_data.py、assistant_materials.py | 继续冻结来源与人工确认候选 |
| 受限模型核查 | backend/services/assistant_model.py | 目前提示词禁止作审批决定;新增预审意见要单独设计并测试,不放宽旧版完整核查的权限 |
| 可审核经验 | backend/services/assistant_experiences.py | 已有范围、有效期、条件、审核发布;不能等同已学到客户历史经验 |
| 历史案例 | backend/data_layer/history_store.py | 实际是 JSONL + 行业/金额等简化筛选;文件注释不证明已建向量库 |
| 默认团队模式 | backend/data_layer/team_experience.py | 内置频次/阈值为代码默认样例,不是真实兴邦统计 |
| 模型与组件治理 | backend/services/component_registry.py、component_evaluation.py | 复用版本和验证机制 |
## 2. v2 拟议模块边界
以下是设计目标,尚未生成对应文件或调用链。owner 指代码唯一职责,人员待项目负责人分配。
| 模块 / 拟议落点 | 职责 | 依赖 / 禁止 |
|---|---|---|
| history_cases / backend/services/history_cases.py | 提炼历史事件、来源及未知项 | 依赖材料与存储;不直接批准经验 |
| experience_catalog / backend/services/experience_catalog.py | 关联案例与经验版本、先授权过滤再相关性比较 | 复用既有经验生命周期,不建立平行发布路径 |
| prescreen / backend/services/prescreen.py | 主审制定核查、调用专业能力、综合意见 | 只访问冻结授权上下文;不直接操作通用 terminal/SQL |
| judgment_provider / backend/services/judgment_provider.py | 统一窄问题契约、Jev/本地适配、schema 校验、预算、失败状态 | 通过出口策略;不写审批或综合结论 |
| prescreen_policy / backend/services/prescreen_policy.py | 硬规则、证据、缺证及概率输出约束 | 不依赖页面,不以模型高分绕过硬约束 |
| scenario_service / backend/services/prescreen_scenarios.py | 保存独立情景与差异 | 引用不可变基线;不覆盖真实事实 |
| prescreen_evaluation / backend/services/prescreen_evaluation.py | 冻结样本、版本、预测及专家对照 | 标签与推理侧隔离 |
| prescreen contracts / backend/contracts/prescreen.py | 新对象与错误契约 | 后端单一定义,前端由 OpenAPI 生成;生成器待建设 |
拟议数据流:材料/授权数据 → 标准事实和来源 → 冻结快照 → 硬规则和计算 → 检索有效经验 → 主审提出具体核查问题 → 专业 Skills/可切换专项判断 → 验证证据与规则 → 主审综合预审 → 独立复核/正式审批入口。
历史经验用于选择核查动作和比较适用条件,不能用“相似案例通过”直接推出当前项目通过。专项模型的判断置信与主审解释都不是独立的真实性认证。
## 3. 数据模型与持久化
P0 候选使用现有 SQLite 事务存储承载新增对象类型。历史事件、经验版本、运行、判断、模拟和评测各有唯一 owner。schema 变更追加迁移,保留旧表;完整 DDL 与兼容策略在详细设计阶段定案。
本轮“v2”指产品代际。既有 xingbang_v2.py 和 schema_v2 是历史实现命名,不应重命名或删除。
材料保存原件哈希、段落/页码、发生时间和录入时间。经验同时记录来源事件、制度版本、专家确认及有效期。只持有最终批复的案例应标“过程不完整”。
演示和真实数据域分别存储或通过受测权限边界隔离;生产隔离架构未确认前只运行演示数据。版本冻结后撤回经验不删除历史记录,但新运行不得再应用;旧结果需标记失效经验并提示复核。
## 4. 关键流程与恢复
- 历史导入失败:保留原件和失败事件,允许补充/重新提炼,不伪造缺失过程。
- 主审识别矛盾:记录待核查事项,使用授权证据工具验证,达到预算停止为 partial/awaiting_input。
- 所选专项模型不可用或关闭:缺失项进入 degradations;主审只能依据已完成检查给出有限意见。
- 硬规则冲突:结果校验阻断建议推进,保留模型原始结构化提案供审计。
- 新证据进入:产生新快照、新运行,旧结果保留;模拟不进入这条正式更新路径。
- Worker 恢复:复用持久任务机制;幂等范围包含 actor/project/operation/key,禁止重复生成运行。
## 5. 接口与集成
内部 API 以 /api/prescreen 为候选命名空间;沿用当前项目鉴权和同源代理。前端不能直接访问模型厂商。现有 assistant_model 的受信端点规则不自动适用于 Jev,专项模块需独立出口与域策略;local 也只能使用管理员批准的端点,不能从浏览器传入任意 URL。
Jev 接口概念参考 TypeSafe 官方文档:https://docs.typesafe.ai/introduction 、https://docs.typesafe.ai/confidence 。当前没有 SDK 安装、Key、版本或延迟实测;实施前重核版本与中文金租样本效果。Jev 是可选提供方,本地开源模型通过独立适配器执行同一业务任务;拿不到 Jev Key 不阻塞本地路径。统一契约和差异处理见 [专项判断模型切换](11-judgment-providers.md)。
概率预测为后续独立模型,输入仅使用预测时可得事实和判断特征。主审解释模型输出但不能改写原始概率;目标事件已明确为公司评审会通过;结果代码/时点/样本偏差和校准验证未明确前 probability=null。
## 6. 副作用边界
真实数据外发、经验发布、正式审批是不同权限。模型只能读冻结事实和生成候选意见;发布经验由授权人操作,正式审批不在 v2 自动化范围。普通聊天的终端/文件工具不能进入预审工具白名单。
2026-09-29本轮更新仅为文档写入;Gitea备份需另以本轮SHA核验记录为准;没有模型数据外发、云端部署、数据库迁移或镜像发布。
## 7. ADR
ADR-01 保留现有技术基线,按模块增量扩展,否决全面换框架。
ADR-02 主审综合判断+确定性约束+可切换专项复核,否决单模型 yes/no 审批。
ADR-03 经验以过程和来源为核心,否决只按最终结果记忆。
ADR-04 经验发布复用现有治理,否决自动从反馈直接生效。
ADR-05 先做验证和数据合作,再建设概率校准,否决专家分数转百分比。
ADR-06 v2 独立目录与资源,旧版保留;本轮先文档后迁移,目录尚未创建。
状态、影响和未决项统一维护在 [决策记录](09-decisions.md)。
## 8. 拟建立的架构验证
业务 service 不导入 src;预审工具集合不含 terminal/任意 SQL;跨域经验不可检索;引用必须属于授权快照;模拟不修改真实快照;无校准时概率为 null;经验发布只能经过一个治理入口。专项模型只能通过统一接口接入;local 不依赖 Jev 凭据;配置冻结且故障不自动切换。映射 AC-04/06/08/10/11/12/16/17/18/19/20/21。
这些是待实施的机器检查;现有测试覆盖另列,不能标成 v2 已通过。
## 9. 三模块目标分层(未实现)
```text
文件集合/授权数据源 → 证据与事实层 → 冻结快照
历史开发案例 → 时间线/经验候选 → 人工编辑与统一发布 → Skills/Rules
数据卡 + 已发布Skills/Rules → 评审方案与维度 → miniOpenClaw受控编排
受控编排 → 确定性Tools/Rules + 可选专项判断 → 主审建议与补件
冻结运行 → 独立沙盘 / 可回放trajectory
trajectory + 对应材料版本的会议结果 → 改进候选 → 固定对照/审核 → 新版本
概率模块:独立消费当时可得事实与核查特征,P0真实概率为空
```
新增职责:material_import负责集合清单而不另造上传链;review_plan负责装配与维度版本;trajectory复用运行审计;review_outcomes拥有会议原始结果和映射;improvement复用经验/组件发布入口。详细对象owner见03第9节,不再为每个页面建立一套业务服务。
本地Laya部署为独立模型服务,后端通过judgment_provider的任务契约访问;其依赖不混入旧版venv。主审、专项、概率三类模型配置彼此独立。厂商模型不能写正式规则、概率或审批状态。每次run固定方案、证据和全部模型配置,撤销权限在实际调用前重验。
编排可以在方案授权范围内由模型决定先查什么、调用哪个Skill;必查项、硬规则、工具权限、预算和发布门禁由程序强制。初期改进针对知识/题库/编排配置,训练主审权重不在P0。
对应ADR-09–14;当前没有新增服务/迁移/模型进程,目标图不能作为运行事实。