Files
mini-openclaw-v2/docs/v2/21-sqlite-implementation.md
T

61 lines
9.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SQLite 工作台实施基线
日期:2026-10-01。需求来源:用户确认 Superdesign 重建原型,并授权「直接开发,数据库用 SQLite」。恢复点:9c351b0;开发分支 codex/sqlite-experience-workbench。本记录是新增实施切片,不把旧草案当成真实部署或概率验证。
## 1. 范围与术语
三模块沿用现有独立路由与 miniOpenClaw 受控执行链。第一期使用 240 条虚构金融租赁公司对公案例;承租人是法人,标的是设备、工程机械、医疗设备、能源设备、物流车辆,不混入个人贷款。正式通过是评审会结果。案例库是经验来源;已发布卡片是运行配置;草稿不执行;概率演示是人工情景表,真实概率仍未校准。评审员退出新版登录与配置入口,独立审核由另一位配置管理员承担;历史评审身份保留为审计事实。
## 2. 数据与接口契约
数据库复用 backend/xingbang_data/project_assistant.sqlite3。新增幂等迁移 lease_library_v1:lease_cases(id TEXT PRIMARY KEY, lessee TEXT, industry TEXT, mode TEXT, asset TEXT, amount REAL 万元, term INTEGER 月, outcome TEXT, year INTEGER, guarantee TEXT, issue TEXT, supplements TEXT, meeting_reason TEXT, data_domain TEXT固定demo)。所有字段非空。模拟来源与生成版本固定保留;交易金额是生成值,不用于真实财务计算。
API 前缀 /api/xingbang/risk-agent/project-assistant/library:GET /cases 返回案例和 count、total、schema、模拟说明;POST /queries {mode:filters|natural|sql,filters?:object,text?:string}返回preview_id、实际结果items、count、规范化条件;POST /selections {preview_id,selected_ids?:string[]}保存不可变确认selection;POST /extractions {project_id,selection_id,kind:skill|rule_set,requirement:string}真实调用既有模型,返回status、candidate_id|null、degradations;GET /cards?project_id 返回现有注册表当前草稿/发布索引。POST /skills/import {project_id,files:[{path,content_base64}]},返回注册表草稿;GET /skills/{draft_id}/package 返回清单和标准文件文本;GET /skills/{draft_id}/download返回ZIP;POST /skills/{draft_id}/open仅允许本机预览打开托管包;GET /cards/{draft_id}获取治理体与示例测试;发布/评测沿用既有prescreen transitions。权限、项目范围、域每次验证。历史库仅启用演示身份且demo开关开启;真实身份不能从模拟提炼出production卡片。
SQL仅一条SELECT、仅lease_cases、无PRAGMA/ATTACH/写入/系统表;authorizer与进度预算兜底,上限240行。查询确认由服务器保留完整匹配ID与主体/时间,30分钟过期;提炼只能取确认后的非空集合。自然语言先转成已知枚举/金额条件,未知要求报错,不静默扩大。
Skills磁盘根 backend/xingbang_data/skill_packages/{UUID},数据库保存版本哈希、文件清单与来源;导入保留完整标准SKILL.md及可选references/scripts/assets。路径无绝对、穿越、链接;≤100文件、单文件≤2MiB、总计≤10MiB;SKILL.md UTF-8、合法YAML且name/description非空,name与所选目录名一致。脚本只保存不运行;模型Skill的工具集合由服务端固定,导入不能扩大白名单。
## 3. 表面规格与状态
历史页:深绿导航+浅色工作区,上方数据库指标,中间筛选/可见表格/详情,右侧单独提炼Skills/Rules与自然语言要求,下方红色AI/蓝色人工卡片池及文件树。保留旧项目过程加工为折叠高级入口。客户经理只读案例、使用已发布卡片;配置管理员筛选、确认、提炼、人工导入及评测,发布须独立身份与当前哈希评测。
预审:项目上下文+五种输入+已发布方案冻结+既有执行结果、动态雷达、概率环与完整情景变化依据。轨迹:看判断过程/比较两次预审/核对会议结果,展示实际步骤与版本差异。
状态:idle→loading→ready|empty|error;ready→submitting→ready|error。提交中保留旧内容并禁用重复操作。筛选或项目变化清空确认/选择;过期重新预览。请求晚到不覆盖新查询。按钮有文字状态、错误role=alert、焦点可见、reduced-motion。
设计 token沿用批准原型:nav #102B27,workspace #F3F5F4,primary #17634C,AI #A33C38/#FBEFEC,manual #226A7A/#EDF5F7。新增样式限定 .xb-v2,不改无关页面。
## 4. 业务规则
- BR-61:240条对公金融租赁案例经幂等迁移入SQLite,每条能查看来源与会议依据。
- BR-62:三种筛选只读且确认完整匹配集合,提炼不跨选择/项目/主体。
- BR-63:两个提炼动作调用真实模型并产出有来源的独立草稿;无模型失败、无候选。Rule默认advisory,不从频次制造制度。
- BR-64:人工文件夹导入保留标准包、不可覆盖同名版本,能下载及在托管文件夹查看,任何脚本不执行。
- BR-65:新版界面仅客户经理和配置管理员;经理不能加工/发布,管理员发布仍须独立身份与隔离评测。
- BR-66:实际预审硬规则命中且result=issue才阻断,失败/缺证不能建议无条件推进;条件和例外由受控执行器验证。
- BR-67:新版三页实际连接数据库和既有运行,动态雷达面积不换算概率,情景不覆盖基线,真实域不显示演示概率。
## 5. 异常
- E-36 / LIBRARY_QUERY_INVALID:筛选无法解析或SQL越权;「筛选条件不受支持,请修改后重新预览」。无数据更改。
- E-37 / LIBRARY_SELECTION_INVALID:无确认/越权/过期/空集合;「请重新预览并确认要加工的案例」。拒绝提炼。
- E-38 / SKILL_PACKAGE_INVALID:非法路径/超限/非法标准格式/同名重复;「Skills 文件夹格式不正确,请检查 SKILL.md 与目录」。清理本次未完成暂存,旧包不改。
- E-39 / LIBRARY_MODEL_UNAVAILABLE:模型未配置/失败/输出非法;「本次未能完成经验提炼,请稍后重试或改为人工创建」。失败记录保留,无候选。
- E-40 / LIBRARY_FORBIDDEN:无角色/域/项目权限;「当前身份无权进行经验加工」。HTTP403。
- E-41 / SKILL_FOLDER_UNAVAILABLE:远程部署无本机打开能力;「当前部署不支持打开本机文件夹,请下载标准包」。包仍可下载。
## 6. Given/When/Then 验收映射
- AC-70(BR-61):Given空/已初始化SQLite When重复初始化 Then始终240条且全为对公租赁,重开连接数据仍在。
- AC-71(BR-62/E-36):GivenSQL/自然语言筛选 WhenSELECT或未知条件/写入/系统表 Then返回真实集合或明确拒绝,数据库无变更。
- AC-72(BR-62/E-37):Given查询确认 When越主体/空/过期提炼 Then拒绝;有效确认仅用选中ID。
- AC-73(BR-63/E-39):Given配置/未配置模型 When分别提炼Skills/Rules Then真实调用并可追溯草稿,失败不产候选、不发布。
- AC-74(BR-64/E-38/E-41):Given标准/非法文件夹 When导入 Then保留文件和哈希或拒绝;重开SQLite后可读取下载,导入脚本不执行。
- AC-75(BR-65/E-40):Given经理/管理员/旧reviewer When加工或发布 Then仅管理员可加工,独立发布与评测继续验证。
- AC-76(BR-66):Given失败步骤/硬规则/条件例外 When运行 Then保留失败、不误判推进;只有适用且已确认的硬规则阻断。
- AC-77(BR-67):Given实际项目运行 When查看三个页面/切换情景 Then调用真实接口、动态维度与情景对照可定位来源;缺证/未校准如实呈现。
测试所有权:backend/test_lease_library.py、test_skill_packages.py、现有预审执行/策略测试、前端生产构建与源码守卫;实际浏览器视觉验收需单独证据,构建不等于视觉通过。
## 7. 决策与阶段证据
SQLite用于当前单机本地磁盘,短事务、busy_timeout,文件单独存盘;不把模型耗时放在写事务内。WAL须在可控连接初始化并测试后启用,不使用网络共享盘;以后多实例大量并发写再迁移数据库。[SQLite适用场景](https://www.sqlite.org/whentouse.html)、[WAL](https://www.sqlite.org/wal.html)。实际数据未获取,真实模型、概率校准、Jev接入、生产发布均独立验收,不作本切片完成证据。
需求/架构/详细设计/UI:以上合同、规则与批准原型构成定案;用户2026-10-01授权实施。实现/验证/交付:完成后在22-implementation-delivery.md记录真实测试结果、入口与限制,当前尚未完成。无阻塞本切片的未决项。
## 8. 本轮补充的数据与执行事实
SQLite 迁移采用 lease_library_v1 / lease_library_v2 两个标记。第二次迁移仅追加经营现金流、租赁物估值、收入、负债、资产与初始材料快照字段,不清空既有记录。财务金额单位为万元,快照单独保存初始可得信息;正式评审结果不能混入初始输入。240条均为明确标注的虚构对公金融租赁案例。
新版界面仅提供客户经理、配置管理员两个身份;新案例库拒绝旧 reviewer 身份。旧业务 API 的历史权限兼容仍保留,不能据此宣称全平台旧身份已删除。Skill 本机打开仅限受控本机演示或 preview,远程环境使用标准 ZIP 下载。实际文件按哈希校验,脚本只存储、不执行。
新增轨迹对照使用两个冻结运行的材料、组件版本与核查结果;配置改变时提示不能直接归因于补件。模型提炼是真实调用链,但本轮模型输送测试使用替身,不证明真实提供商已接通或结果质量已校准。