diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..0ce8ab2 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,11 @@ +@AGENTS.md + +# Claude Code 开发入口 + +统一规则由上面的 AGENTS.md 导入,不在这里复制另一套规则。 + +开发兴邦预审 v2 前,阅读 [文档入口](docs/v2/README.md) 和 [开发交接与任务包](docs/v2/15-development-handoff.md)。只执行用户指定的一个任务包;没有指定时从 T00 的文档与依赖核对开始,不直接实现全部里程碑。 + +Claude Code 所用模型与产品运行时主审模型、专项判断模型是三种独立配置;开发时使用 DeepSeek 不意味着业务系统也必须使用 DeepSeek。不要读取、输出或写入仓库任何真实模型密钥。 + +每次交接记录任务编号、改动文件、验证命令和结果、未完成项及下一步。实际状态以代码、Git 和 test-evidence 为准。 diff --git a/docs/v2/01-requirements.md b/docs/v2/01-requirements.md index dae5232..229e9ca 100644 --- a/docs/v2/01-requirements.md +++ b/docs/v2/01-requirements.md @@ -1,13 +1,15 @@ # 兴邦预审 v2 需求规格 -状态:0.1 评审草案,尚未通过六道完备性门;后续设计为候选方案。规则编号作用域为本文。 +状态:0.2 · 2026-09-29。产品目标和三模块方向已经用户确认;规格与工程门禁仍待审阅。规则编号作用域为本文,原编号保留,新增 BR-21–44 / E-16–26 / AC-22–45。 ## 1. Requirement Overview -来源:[URD](URD.md) 的 FR-FACT/HIST/EXP/REV/JEV/JUD/SIM/EVAL/PILOT-01。目标是把历史项目的争议、调查、证据和判断变化用于新项目预审。P0 使用模拟或经授权的脱敏数据,不连接未知生产库,不执行正式审批,不展示未经校准的通过概率。 +来源:[URD](URD.md) 的 FR-FACT/HIST/EXP/REV/JEV/JUD/SIM/EVAL/PILOT-01。目标是把历史项目的争议、调查、证据和判断变化用于新项目预审。P0 使用明确标注的模拟数据;经授权脱敏数据进入 P1,不连接未知生产库,不执行正式审批,不展示未经校准的通过概率。 角色沿用 URD。补充术语:快照=不可变输入版本;来源域=data_domain,演示或生产;证据引用=可定位材料片段的 ID;有效经验=已发布、未过期且适用条件成立的版本;硬性规则=经业务确认且由程序执行的约束;幂等键=同一用户请求去重标识;版本冲突=客户端依据旧 revision 更新;专项判断=边界明确的局部判断;降级=保留可用结果并标识未完成检查;运行预算=限制轮数、调用量和耗时;保留集=开发时不可使用的验收样本;提供方(provider)=具体执行专项问题的模型后端;判断配置(profile)=已批准的提供方、模型、端点、数据范围与版本组合;能力声明=该配置已验证支持的题型;原生指标=提供方返回且带原语义的指标,不代表跨模型可比。 +新增术语:评审会通过=公司项目评审会作出通过决定(结果代码映射见 OQ-05);初期预审=初步材料收集阶段;评审方案=数据卡、已发布 Skills/Rules 及核查维度的版本化装配;trajectory=完整运行,step/span=其中一步;人工干预=本次要求或候选修改,不自动成为永久规则;origin=知识创建来源,与 data_domain 正交;改进候选=待测试审核的知识/编排修订;shadow=旁路评价,不影响当次业务结果。 + “证据支持”不等于材料真实可信:材料真实性核验是单独的核查结果。风险严重程度、数据完整性、模型确定性、审批概率互不替代。 ## 2. Data Model & Interface Contract @@ -24,6 +26,8 @@ | Simulation | id、base_run_id、assumptions[]、changed_findings[]、unresolved_findings[]、formal_result=false | 推进沙盘 | | Evaluation | id、dataset_version、split_id、run_versions、locked_at?、status、metrics | 验证看板 | +新增 ImportBatch、KnowledgeCard、ReviewPlan、DimensionSpec、TrajectoryStep、ReviewOutcome、ImprovementCandidate、ProbabilityView 契约见详细设计第9节;闭环语义见 [三模块设计](14-experience-loop.md)。 + API 候选命名空间 `/api/prescreen`,通过同源 `/api/core/prescreen` 代理访问;下列端点尚未实现。请求/响应、错误、界限及 owner 见详细设计。P0 `probability` 必须为 null,并附原因 `not_calibrated`。 ## 3. Surface Specification @@ -56,6 +60,30 @@ API 候选命名空间 `/api/prescreen`,通过同源 `/api/core/prescreen` 代 | BR-18 | 统一输出只接受题目规定的答案或 unknown;提供方原生指标保留语义且不得互换阈值或补造缺失概率。owner:判断结果归一化 | | BR-19 | 选择仅限当前用户/数据域获准的已验证配置;不支持所需题型的配置拒绝执行该题。owner:判断配置校验 | | BR-20 | 运行创建时冻结专项配置修订;切换仅影响新运行,故障不得自动切换提供方。owner:运行配置解析 | +| BR-21 | 预测目标绑定公司评审会结果及材料时点;未送审/待定/撤回不映射为会议否决。owner:结果标签映射 | +| BR-22 | 材料集合导入逐文件保留来源、定位、解析版本和状态;未确认候选不进入冻结事实。owner:导入清单 | +| BR-23 | 多来源事实冲突保留候选并要求显式处理,不按上传先后覆盖。owner:事实冲突服务 | +| BR-24 | 卡片保留 origin 与 data_domain;历史提炼后人工修改仍保留历史谱系。owner:来源存储 | +| BR-25 | 自然语言运行要求只影响当前作用域,变为持久知识必须生成待审候选。owner:指令作用域 | +| BR-26 | 历史归纳 Rule 默认 advisory;缺少正式制度/授权依据和审核不得发布 hard 规则。owner:规则资格校验 | +| BR-27 | 运行只能装配获准且有效的已发布方案依赖,冻结数据/Skill/Rule/经验版本。owner:方案解析 | +| BR-28 | 维度按方案依赖的 dimension_id 去重;同 ID 不同刻度/语义拒绝合并。owner:维度解析 | +| BR-29 | 演示估计仅在 demo 域以独立字段显示,真实 probability 未校准仍为 null,导出保留来源标识。owner:概率呈现契约 | +| BR-30 | 沙盘按完整动作组合重算,结果须匹配当前选择;失败/乱序不改基线。owner:情景状态 | +| BR-31 | 一次运行保存一条轨迹与多个可追溯步骤,记录可观察动作与版本,不伪造隐藏推理。owner:轨迹存储 | +| BR-32 | 会议结果追加保存并按材料版本对齐;更正引用旧记录,无匹配快照不倒填初期预测标签。owner:会议结果服务 | +| BR-33 | 改进候选只有通过固定对照与独立审核后才可发布;原运行和原版本不覆盖。owner:改进治理 | +| BR-34 | 批量模拟案例必须有多类结果、可复现种子与生成版本;全过程标 demo,不声称真实准确率。owner:模拟数据生成 | +| BR-35 | 开发/校准/保留集在经验提炼前按客户/项目关联分组并结合时间划分;保留材料及其衍生知识不进入开发。owner:数据集隔离 | +| BR-36 | 高预测组实际通过比例同时报告覆盖率、可观察标签数与未观察数,分母为零返回不适用。owner:业务指标 | +| BR-37 | 专项配置按业务任务及题型登记已验证能力,某任务合格不自动授权其他任务。owner:专项准入 | +| BR-38 | 本地判断运行固定具体模型/checkpoint及映射版本;内部路由不得静默切换权重。owner:本地适配 | +| BR-39 | 输入超出已验证上下文预算不得静默截断;返回未完成并保留所选证据范围。owner:证据预算 | +| BR-40 | 判断模型的效果以固定专家标注集比较,不把模型自评或自身生成标签当作独立真值。owner:专项评测 | +| BR-41 | 卡片来源、数据域、审核状态分别显示;来源使用文字/图标与样式共同区分。owner:卡片呈现 | +| BR-42 | 人工新增和历史提炼 Skills/Rules 共用审核发布路径;编辑已发布内容生成新草稿版本。owner:卡片治理 | +| BR-43 | 雷达只对同刻度且3–8维绘制;其余用完整列表/分组,不遗漏关键项或由面积计算概率。owner:维度呈现 | +| BR-44 | stop 只表示暂不建议推进并附依据;系统不得自动关闭项目或执行正式审批。owner:建议动作边界 | ## 5. Exception Scenarios @@ -76,6 +104,17 @@ API 候选命名空间 `/api/prescreen`,通过同源 `/api/core/prescreen` 代 | E-13 | 配置不存在、不可用或未获准,422 JUDGMENT_CONFIG_INVALID | 当前专项模型配置不可用,请选择可用配置或关闭专项核查;不暴露无权限配置详情 | | E-14 | 不支持题型/映射未验证,运行结果 JUDGMENT_CAPABILITY_UNSUPPORTED | 当前模型尚不支持此项核查,已标记未完成;不改题、不猜测结果 | | E-15 | 非法答案/非有限数值/指标来源不明,运行结果 JUDGMENT_OUTPUT_INVALID | 专项结果未通过格式与语义校验,请复核或重试;不作为有效判断 | +| E-16 | 文件集合空/类型或容量不满足,422 IMPORT_BATCH_INVALID | 材料集合不符合导入要求,请检查文件类型和大小;逐文件错误沿用 E-01 | +| E-17 | 关键事实有未解决冲突,运行结果 FACT_CONFLICT_UNRESOLVED | 材料存在不一致,请核对并确认;不得静默选择 | +| E-18 | 硬规则缺正式依据或审核,422 HARD_RULE_BASIS_REQUIRED | 硬性规则需要正式依据和审核,当前仅可保存为建议草稿 | +| E-19 | 方案/依赖未发布、失效或不可访问,422 PLAN_DEPENDENCY_INVALID | 评审方案存在不可用组件,请更新后重新发起;不暴露无权组件 | +| E-20 | 同维度ID语义/刻度冲突,422 DIMENSION_SCHEMA_CONFLICT | 核查维度定义不一致,请统一后保存方案 | +| E-21 | 真实域请求/展示演示估计,422 DEMO_ESTIMATE_FORBIDDEN | 当前数据域不允许使用演示概率 | +| E-22 | 假设互斥/前提缺失,422 SCENARIO_ASSUMPTION_CONFLICT | 所选推进条件存在冲突或缺少前提,请调整 | +| E-23 | 会议结果无对应材料版本,记录状态 OUTCOME_SNAPSHOT_UNMATCHED | 评审记录已保存,但尚未关联送审材料版本;允许后续核对,不纳入该时点概率验证 | +| E-24 | 改进未完成对照或未获审核,409 IMPROVEMENT_NOT_VALIDATED | 改进尚未完成验证与审核,暂不能发布 | +| E-25 | 输入超出模型已验证预算,运行结果 JUDGMENT_CONTEXT_EXCEEDED | 本次证据超出专项核查范围,请缩小问题或转人工复核 | +| E-26 | 会议结果代码无法映射,记录状态 OUTCOME_LABEL_UNMAPPED | 评审结果口径尚未确认,已保留原记录,暂不计入通过率 | 运行级错误保存在 degradations/finding 中,HTTP 200 仅表示结果可读取,不表示核查通过。禁止把 failed 状态当作 completed。 @@ -104,9 +143,33 @@ API 候选命名空间 `/api/prescreen`,通过同源 `/api/core/prescreen` 代 | AC-19 | Given 未授权/不存在配置或缺题型能力,When 发起运行/执行题目,Then 分别返回配置错误/未完成,不发送该题,也不静默替代 | BR-19, E-13, E-14 | | AC-20 | Given 排队或执行中的旧运行,When 修改默认配置或所选服务故障,Then 旧运行保留已冻结版本;新选择创建新运行;不得自动外发或替换 | BR-20, E-06 | | AC-21 | Given 专项开关关闭且两种模型都无凭据,When 主审预审,Then 无专项模型调用,已计划题目 Judgment=skipped、运行明确关闭原因,主审仍受证据和硬规则约束 | BR-09, BR-17, E-06 | +| AC-22 | Given 已确认会议事件和未送审/附条件记录,When 按版本映射标签,Then 未送审不当否决,未确认附条件口径保留原码与未映射状态 | BR-21, E-26 | +| AC-23 | Given 文件集合含正常、损坏、超限及重复文件,When 导入与确认,Then 逐项保留状态和页码/单元格来源,失败可重试,未确认不入事实 | BR-22, E-16, E-01 | +| AC-24 | Given 同期间金额的两个冲突来源,When 冻结事实,Then 保留冲突和来源并要求确认,不默认覆盖 | BR-23, E-17 | +| AC-25 | Given 历史提炼卡及人工创建卡,When 人工编辑前者并保存,Then 前者仍为历史来源并有父版本,后者为人工来源,数据域独立 | BR-24, E-05 | +| AC-26 | Given 本次补充说明要求优先核查或永久改规则,When 运行与保存,Then 仅当前授权范围生效,持久修改只能形成草稿且不能扩大工具权限 | BR-25, E-03, E-07 | +| AC-27 | Given 只有历史频次的规则候选,When 请求发布为硬规则,Then 拒绝并给正式依据缺失文案,可保留 advisory 草稿 | BR-26, E-18 | +| AC-28 | Given 含已发布/草稿/撤回/跨域组件的方案,When 启动运行,Then 只接受全部有效且授权的依赖并冻结版本,其他拒绝 | BR-27, E-19 | +| AC-29 | Given 两张卡引用同一维度或相同ID不同刻度,When 保存方案,Then 相同定义只出现一次,不同定义拒绝合并 | BR-28, E-20 | +| AC-30 | Given demo/production 项目与人工情景值,When 查看API/UI/导出,Then 仅demo显示独立演示字段及标识,真实 probability 仍为空,越域拒绝 | BR-29, E-21 | +| AC-31 | Given 互斥动作及快速连续勾选,When 创建情景且旧请求晚到或当前请求失败,Then 冲突拒绝,旧结果丢弃,失败保留基线并标未完成,不累加提升 | BR-30, E-22, E-06 | +| AC-32 | Given 一个run中两次工具调用及一次失败,When 查看轨迹,Then 同一trajectory有独立step及版本/证据引用,失败保留,不生成隐藏思维 | BR-31, E-04 | +| AC-33 | Given 会议记录无法关联材料快照或后续更正,When 保存并对照,Then 无匹配单列,更正追加并引用旧版,不改原预测 | BR-32, E-23, E-05 | +| AC-34 | Given 无对照证据或未经独立审核的改进,When 请求发布,Then 拒绝且旧版本有效;验证审核合格才生成新发布版本 | BR-33, E-24 | +| AC-35 | Given 同seed/版本的模拟数据配置,When 生成两次并查看报告,Then 规范化清单一致且涵盖多种结果,所有材料/标签/导出标demo | BR-34, E-07 | +| AC-36 | Given 同客户关联项目、近重复案例和保留集材料,When 划分后提炼或尝试混入衍生Skill,Then 关联组不跨集合;保留内容不可进入提炼,泄漏标作废 | BR-35, E-11 | +| AC-37 | Given 高预测组有已评审和未送审样本或空分母,When 计算指标,Then 报告通过分子/可观察分母/覆盖率/未观察数,零分母不填0% | BR-36, E-26 | +| AC-38 | Given 仅通过提炼质检验收的配置,When 用于实时预审或其他题型,Then 拒绝未获准任务并显示未完成,不以安装或其他任务成功放行 | BR-37, E-14 | +| AC-39 | Given 冻结本地checkpoint的运行,When 内部路由尝试换模型,Then 拒绝不匹配并记录失败;新模型只可用于新配置/新运行 | BR-38, E-15 | +| AC-40 | Given 超出上下文预算的证据包,When 执行判断,Then 不静默截断、不外发该题,记录未完成与原证据范围 | BR-39, E-25 | +| AC-41 | Given 专项评价只有同模型自评或其生成标签,When 登记效果合格证据,Then 拒绝当作独立评测;专家标签和数据划分版本可追溯 | BR-40, E-24 | +| AC-42 | Given 历史/人工/制度来源且审核状态不同的卡片,When 颜色关闭或键盘查看,Then 仍能通过文字和图标区分来源、数据域与状态 | BR-41, E-07 | +| AC-43 | Given 人工新增/历史提炼候选与已发布卡片,When 保存/编辑/审核,Then 共用同一治理入口;已发布编辑产生新草稿,无权及自批均拒绝 | BR-42, E-03, E-05, E-07 | +| AC-44 | Given 0/2/6/9个维度或异刻度,When 展示结果,Then 只对同刻度3–8维画雷达,其余完整列表,硬阻断独立且面积不推概率 | BR-43, E-20 | +| AC-45 | Given 预审建议stop,When 查看结果或模型试图关闭项目,Then 展示依据及人工决定入口,不修改正式审批/项目关闭状态 | BR-44, E-03 | ## 7. Open Questions & Decision Record OQ-01 至 OQ-06 见 [决策记录](09-decisions.md)。本轮规格是待评审草案;P0 演示可用模拟材料,真实数据出口、正式权限和概率校准不得用临时假设替代确认。 -已定方向:主审综合研判、历史过程优先、可切换专项模型局部判断、模拟与正式分离、先验证再谈概率。被否方案:单题判断直接审批、经验未经审核自动生效、复制整库后再定义用途、用模拟提升冒充因果效果。 +已定方向:公司评审会通过为目标、初始材料预审、三模块闭环、人工与历史卡片共治、方案动态维度、可切换专项判断、P0纯模拟演示、真实结果驱动受控改进。被否方案:单题判断直接审批、经验未经审核自动生效、复制整库后再定义用途、用模拟提升冒充因果效果。 diff --git a/docs/v2/02-architecture.md b/docs/v2/02-architecture.md index 10ec8e1..7f356e1 100644 --- a/docs/v2/02-architecture.md +++ b/docs/v2/02-architecture.md @@ -1,6 +1,6 @@ # 兴邦预审 v2 架构设计 -状态:候选设计 0.1,等待阶段①评审;本文件严格区分当前事实与拟议架构。 +状态:候选设计 0.2,产品方向已确认、工程门禁待审阅;本文件严格区分当前事实与拟议架构。 ## 1. 概览与已核验基线 @@ -73,13 +73,13 @@ P0 候选使用现有 SQLite 事务存储承载新增对象类型。历史事件 Jev 接口概念参考 TypeSafe 官方文档:https://docs.typesafe.ai/introduction 、https://docs.typesafe.ai/confidence 。当前没有 SDK 安装、Key、版本或延迟实测;实施前重核版本与中文金租样本效果。Jev 是可选提供方,本地开源模型通过独立适配器执行同一业务任务;拿不到 Jev Key 不阻塞本地路径。统一契约和差异处理见 [专项判断模型切换](11-judgment-providers.md)。 -概率预测为后续独立模型,输入仅使用预测时可得事实和判断特征。主审解释模型输出但不能改写原始概率;审批阶段、样本偏差和校准结果未明确前 probability=null。 +概率预测为后续独立模型,输入仅使用预测时可得事实和判断特征。主审解释模型输出但不能改写原始概率;目标事件已明确为公司评审会通过;结果代码/时点/样本偏差和校准验证未明确前 probability=null。 ## 6. 副作用边界 真实数据外发、经验发布、正式审批是不同权限。模型只能读冻结事实和生成候选意见;发布经验由授权人操作,正式审批不在 v2 自动化范围。普通聊天的终端/文件工具不能进入预审工具白名单。 -本轮只进行本地文档写入与用户授权的 Gitea 分支备份;没有模型数据外发、云端部署、数据库迁移或镜像发布。 +2026-09-29本轮更新仅为文档写入;Gitea备份需另以本轮SHA核验记录为准;没有模型数据外发、云端部署、数据库迁移或镜像发布。 ## 7. ADR @@ -97,3 +97,23 @@ ADR-06 v2 独立目录与资源,旧版保留;本轮先文档后迁移,目 业务 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;当前没有新增服务/迁移/模型进程,目标图不能作为运行事实。 diff --git a/docs/v2/03-detailed-design.md b/docs/v2/03-detailed-design.md index 60ffb40..ec3af7f 100644 --- a/docs/v2/03-detailed-design.md +++ b/docs/v2/03-detailed-design.md @@ -1,6 +1,6 @@ # 兴邦预审 v2 详细设计候选 -状态:0.1 草案,阶段①/②未定案;以下端点和新类型尚未实现。覆盖 BR-01–20 / E-01–15 / AC-01–21,先形成可评审的契约,再编写代码。 +状态:0.2 草案,工程阶段①/②未定案;以下端点和新类型尚未实现。覆盖 BR-01–44 / E-01–26 / AC-01–45,先形成可评审的契约,再编写代码。 ## 1. 约定与契约归属 @@ -24,7 +24,7 @@ P0 初始工程限制提案(非业务阈值):沿用单材料 10 MB;单 | POST /projects/{project_id}/runs | snapshot_id:string, enable_judgment:boolean=false, judgment_profile_id:string? | 202 ScreeningRun queued | prescreen;E-03/07/09/10/13 | | GET /runs/{id} | 无 body | 200 ScreeningRun | prescreen;E-03;不存在 404 NOT_FOUND | | POST /runs/{id}/cancel | expected_revision:int | 200 ScreeningRun | prescreen;E-03/05/07 | -| POST /runs/{id}/simulations | assumptions:Assumption[1..10] | 201 Simulation | scenario_service;E-03/05/07/09 | +| POST /runs/{id}/simulations | assumptions:Assumption[1..10] | 202 Simulation queued(0.2异步增量见9.3) | scenario_service;E-03/05/07/09 | 材料上传/候选确认沿用已存在的项目助手接口,开发前核对调用方。此处不新增平行上传入口。 @@ -58,7 +58,7 @@ Evidence 来源可定位不代表真实性已核验,真实性结果须单列 F | 历史过程 | processing→ready/partial/failed | 部分缺日期为 partial;重新提炼生成新 revision | | 经验 | draft→in_review→published/rejected;rejected→draft;published→withdrawn | submit 由编辑者;approve/reject/withdraw 由发布角色;审核不能自批,编辑后重提审;过期在读取时排除 | | 运行 | queued→running→completed/partial/awaiting_input/failed;queued/running→cancelled | awaiting_input 补件后创建新运行,旧运行保留;completed 不允许原地覆写 | -| 模拟 | 创建→独立结果 | 不存在“应用到真实项目”捷径;真实材料按原确认流程进入新快照 | +| 模拟 | queued→running→completed/partial/failed;可取消,详见9.5 | 不存在“应用到真实项目”捷径;真实材料按原确认流程进入新快照 | | 评测 | prepared→running→locked→revealed;任一未完状态→invalidated | locked 前标签不可进入推理;发现泄漏保留作废理由 | recommendation 在 queued/running 时为 null,终态仍可能为 insufficient_information;partial 不是通过。过时结果允许查看但显示版本差异,不能静默升级到新版本。 @@ -81,4 +81,92 @@ history_cases→AC-01/02;经验治理与检索→AC-03/04/13;prescreen+polic ## 8. 未决项 -OQ-01 业务类型和关键项;OQ-02 审核权限;OQ-03 模型出口;OQ-04 性能/预算与验收阈值;OQ-05 概率事件;OQ-06 独立仓库和部署资源。全部在决策记录中有 owner 和进入条件。本文件不可直接作为已批准实现合同。 +OQ-01 业务类型和关键项;OQ-02 审核权限;OQ-03 模型出口;OQ-04 性能/预算与验收阈值;OQ-05 已确认会议事件的标签/窗口映射;OQ-06 独立仓库和部署资源。全部在决策记录中有 owner 和进入条件。本文件不可直接作为已批准实现合同。 + +## 9. 三模块闭环契约增量(0.2 / 未实现) + +覆盖新增 BR-21–44 / E-16–26 / AC-22–45。本文是唯一业务契约说明,11 文档拥有 Judgment 子契约;14 文档解释流程,不复制类型。下列类型在独立 v2 后端 contracts 下落地,具体绝对路径由 T00 定案,不能直接在旧版新增平行持久化入口。 + +### 9.1 共用约束与枚举 + +Ref={id:string,version:string};EvidenceRef 使用既有证据 ID 与快照绑定,不接受浏览器自造授权。所有 ID/版本非空且最长128,字符串说明默认最长2000,时间为带时区 ISO8601。数组默认上限100,另有定义者从其定义;分页沿用第1节。金额使用十进制定点及币种/单位,不用浮点字符串直接运算。未知值使用 null,不使用 0 或空字符串代替。 + +Origin=history_derived/manual/policy_import;DataDomain=demo/production;KnowledgeKind=skill/rule。GovernanceStatus=draft/in_review/published/rejected/withdrawn。RuleEffect=advisory/hard。EventOutcome=approved/rejected/deferred/withdrawn/not_submitted/conditional/unknown;是否将 conditional 计入目标由 MappingProfile 固定,P0不得默认当approved。 + +知识候选中的条件复用 Condition 的安全表达方式;数值算子 gt/gte/lt/lte 作为候选 v2 扩展,必须声明字段类型、币种/单位并由程序校验,旧契约不接受时不能直接透传。禁止 eval、SQL 或自然语言直接执行。缺失输入为 unknown,不等于条件不成立。 + +### 9.2 类型字段与唯一 owner + +| 对象 | 字段与约束(共同字段约定见上) | owner | +|---|---|---| +| ImportBatch | id,project_id,data_domain,revision,created_at;status:queued/parsing/ready/partial/failed/cancelled;items:ImportItem[1..100];total_bytes:int>=0;parser_version:string | 材料导入服务 | +| ImportItem | id,document_id:string?,relative_path:string[1..512],sha256:string[64],size_bytes:int>=0,mime_type:string;status:queued/parsing/parsed/failed;error_code:string?;observed_at:datetime?;received_at:datetime | 材料导入服务 | +| SourceLocator | document_id,document_version;kind:pdf/table/manual;page:int>=1?;sheet:string?;cell_range:string?;excerpt:string?;pdf必有page,table必有sheet和cell_range,manual必有说明;不得把任意本机路径当定位 | 证据层 | +| FactConflict | id,project_id,field:string,candidate_evidence_ids:string[2..100];status:unresolved/resolved;resolution_note:string?;selected_evidence_ids:string[];resolved_by:string?;resolved需后两项及说明 | 事实确认服务 | +| KnowledgeCard | id,project_id,data_domain,revision,version,kind,title:string[1..200],origin,status;source_event_ids:string[];source_evidence_ids:string[];parent_version:Ref?;created_by,edited_by;scope:project/team,team_id:string?;conditions/exceptions:Condition[];effective_at,expires_at;reviewer_id:string?;evaluation_ref:Ref?;dimensions:DimensionSpec[];content:SkillContent或RuleContent | 复用卡片治理 | +| SkillContent | required_fields:string[];allowed_tools:string[](仅已登记工具ID);steps:{id,instruction:string,tool_ids:string[]}[];output_schema_ref:Ref;missing_input_action:supplement/manual_review;stop_conditions:Condition[] | Skill注册服务 | +| RuleContent | effect:advisory/hard;predicate:Condition[];on_match:flag/block;basis_evidence_ids:string[];policy_ref:Ref?;authorization_ref:string?;hard发布必须具备正式依据和独立审核 | Rule注册服务 | +| DimensionSpec | id,label:string[1..80],order:int>=0;scale_id:string;scale_version:string;levels:{value:int,label:string,criterion:string}[];component_refs:Ref[];required:boolean;同ID必须语义/刻度一致 | 方案维度解析 | +| ReviewPlan | id,project_id,data_domain,version,revision,title,status:GovernanceStatus;data_card_refs/skill_refs/rule_refs/experience_refs:Ref[];dimensions:DimensionSpec[];critical_check_ids:string[];judgment_bindings:{task,profile_id,profile_revision}[];created_by,reviewer_id:string? | 方案治理 | +| TrajectoryStep | id,run_id,parent_step_id:string?,sequence:int>=0;kind:plan/skill/tool/rule/judgment/synthesis;component_ref:Ref?;input_refs/output_refs:string[];evidence_ids:string[];status:queued/running/completed/skipped/failed/cancelled;started_at:datetime?,finished_at:datetime?;reason_summary:string?;error_code:string?;latency_ms:int>=0?;cost:number>=0?;cost_currency:string? | 运行存储 | +| ReviewOutcome | id,project_id,meeting_id,revision,occurred_at:datetime,recorded_at:datetime;reviewed_snapshot_id:string?;raw_code:string[1..100];normalized:EventOutcome;mapping_ref:Ref?;label:bool?;conditions:string[];evidence_ids:string[1..100];status:matched/unmatched;supersedes_id:string?;recorded_by:string | 会议结果服务 | +| ImprovementCandidate | id,project_id,data_domain,revision;target:knowledge/orchestration/question_profile;target_ref:Ref;source_run_ids/outcome_ids:string[];change_summary:string;proposed_revision_ref:Ref;status:draft/evaluating/ready/in_review/approved/rejected/released/withdrawn;evaluation_ref:Ref?;reviewer_id:string?;released_ref:Ref? | 改进治理 | +| DatasetManifest | id,version,data_domain,seed:int?,generator_version:string?;template_version:string?;source_hash:string;split_id:string;split_policy_version:string;group_assignments_ref:string;counts:{outcome,count:int>=0}[];created_at;synthetic:boolean | 数据集服务 | +| ProbabilityView | target_event:company_review_meeting_pass;snapshot_id;as_of:datetime;real_estimate:null(P0);reason:not_calibrated;demo_estimate:DemoEstimate? | 概率呈现服务 | +| DemoEstimate | value:number[0..1];source:synthetic_demo;scenario_table_version:string;scenario_key:string;label:string(固定人工设定说明);仅demo域 | 演示估计服务 | + +KnowledgeCard 是既有 Skill/Rule 注册对象的目标投影,不新建第二套发布库;ExperienceCard 仍保存支持方法/规则的历史过程依据,二者用 Ref 关联。历史提炼来源必有 source_event_ids 或 source_evidence_ids;manual 可以无历史案例,但 hard 发布仍需正式依据。policy_import 不自动获得 hard 权限。撤回保留旧引用,过期状态在使用时派生。 + +ReviewOutcome.label 仅在明确 mapping_ref 且材料版本 matched、结果有可用二元映射时有值;withdrawn/not_submitted/deferred/unknown 均为 null。结果更正生成新 id 并指向 supersedes_id,拒绝跨项目或循环更正。后台保留变更审计,禁止改写已锁定评测;受影响评测追加失效/重算记录。 + +TrajectoryStep 的输入/输出正文通过授权存储引用访问;cost 缺失时币种也为空;failed 必有 error_code。序号在 run 内唯一,父步骤必须属于同 run,无循环。正文输出按数据策略脱敏,不存密钥或隐藏思维链。 + +### 9.3 现有草案对象增量 + +- ScreeningRun 新增 plan_ref:Ref、trajectory_id:string、run_instruction:string[0..2000]、dimension_results:{id,stage:int?,state:unknown/checked/blocked,basis_ids:string[]}[]、probability_view:ProbabilityView。原 probability:null 与 probability_reason:not_calibrated 保留;probability_view.real_estimate 在P0也必须为空,不形成两套不同数值。 +- POST /projects/{project_id}/runs 新增必填 plan_ref:Ref 和可选 run_instruction;快照仍必填。原单一专项profile选项保留为默认绑定,ReviewPlan.judgment_bindings 按 task 精确覆盖;存在冲突或指定不支持任务则拒绝。首次实现前固化解析优先级测试。 +- Assumption 新增 kind:information/business_change、preconditions:Condition[]、conflicts_with:string[];field_changes 仅允许方案声明的可模拟字段,不能写审批状态或正式事实。required_evidence_ids 缺失不允许说真实核验已完成;纯假设显示未落实前提。 +- Simulation 新增 revision、selection_hash:string、status:queued/running/completed/partial/failed/cancelled、probability_view:ProbabilityView?、error_code:string?、frozen_versions:object(与base_run匹配)。异步创建从原201调整为202;原型没有业务API,因此无线上兼容迁移。空选择客户端恢复基线,不创建空情景。 +- JudgmentProfile 增量由11第8节定义;不在本节维护第二份模型字段。 + +### 9.4 候选接口补充 + +统一权限/幂等/expected_revision/error格式沿用第2节;以下全部未实现。GET按对象范围检查,列表用limit/cursor,返回items/next_cursor;跨域/不可访问对象404。拟新增请求参数必须在T00/T02契约定案及对应OpenAPI中完整列出,未定案不开始接口实现。 + +| 接口 | 输入 / 输出 | 权限 / 错误 | +|---|---|---| +| 既有材料上传/确认入口扩展 | 增加batch_id及SourceLocator;通过当前调用方核对实际路径,不建立平行上传API | 项目材料编辑;E-01/03/04/16/17 | +| POST /projects/{project_id}/import-batches | manifest:{relative_path,mime_type,size_bytes,sha256}[1..100];202 ImportBatch;实际字节仍走原上传链并校验服务端哈希/大小 | 材料编辑;E-07/09/16 | +| GET /import-batches/{id} | 200 ImportBatch | 项目查看;404 | +| POST /import-batches/{id}/retry | item_ids:string[1..100],expected_revision;202 ImportBatch;仅失败项 | 材料编辑;E-05/07/09 | +| POST /projects/{project_id}/knowledge-candidates | kind,origin,content,source_event_ids,source_evidence_ids,conditions,exceptions,scope,expires_at;201 KnowledgeCard draft;服务端决定创建人/状态/版本 | 提议者;E-03/04/07/18;完整body以9.2字段约束定案 | +| PATCH /knowledge-candidates/{id} | expected_revision及允许编辑字段;200新草稿修订;已发布生成新版本对象 | 编辑者;E-03/05/07 | +| POST /knowledge-candidates/{id}/transitions | action:submit/approve/reject/withdraw,expected_revision,note;200 KnowledgeCard;委托同一治理服务 | 发布按独立资格;E-03/05/07/18/24 | +| POST /projects/{project_id}/review-plans | 方案字段(不含服务端ID/状态/审阅人);201 ReviewPlan draft | 方案编辑;E-03/07/19/20 | +| POST /review-plans/{id}/transitions | action:submit/approve/reject/withdraw,expected_revision,note;200 ReviewPlan | 独立发布资格;E-03/05/19/20 | +| GET /runs/{id}/trajectory | 200 {run_id,steps:TrajectoryStep[],next_cursor};seq稳定分页 | 项目查看;404;按当前权限解析引用 | +| POST /projects/{project_id}/review-outcomes | meeting_id,occurred_at,reviewed_snapshot_id?,raw_code,conditions,evidence_ids,supersedes_id?;201 ReviewOutcome;服务端映射label | 指定评审记录人;E-03/04/07,E-23/26为已保存记录警示 | +| POST /projects/{project_id}/improvements | target,target_ref,source_run_ids,outcome_ids,change_summary,proposed_revision_ref;201 ImprovementCandidate draft | 提议者;E-03/04/07 | +| POST /improvements/{id}/transitions | action:evaluate/submit/approve/reject/release/withdraw,expected_revision,note;200 ImprovementCandidate | 审核与发布独立资格;E-03/05/24;release委托既有发布入口 | + +提炼作业、数据生成与评测先做内部受控任务;不开放任意prompt/文件路径/SQL执行API。新增读取卡片、方案、会议结果和改进列表在T02沿既有组件目录/对象查询接口扩展;实际URL与所有前端消费字段须在Contract gate前补齐,当前明确为阻塞项,不由实现者临时猜路径。 + +### 9.5 状态、恢复与存储要求 + +| 对象 | 转换与守卫 | 失败/恢复 | +|---|---|---| +| ImportBatch | queued→parsing→ready/partial/failed;queued/parsing→cancelled;partial/failed可仅重试失败items | 已成功条目不重复写入;确认事实另走授权流程;取消后忽略迟到结果 | +| 卡片/方案 | draft→in_review→published/rejected;rejected→draft;published→withdrawn | 审核不能自批;已发布编辑创建新draft版本;依赖撤回后新运行拒绝、旧运行保留 | +| Simulation | queued→running→completed/partial/failed;queued/running→cancelled | 新选择生成新记录;前端按selection_hash+请求序号接收;错误保留基线 | +| 会议结果 | 追加保存matched/unmatched;核对关联通过追加修订记录 | 无证据拒绝;E-23/26可保存但不计有效标签;更正不改原运行 | +| ImprovementCandidate | draft→evaluating→ready或rejected;ready→in_review→approved或rejected;approved→released;released→withdrawn | rejected可新建修订draft;评测失败保留原因;release引用已有不可变发布结果 | + +改进发布与卡片发布同一事务/幂等命令边界,不允许一边标released一边没有对应版本;若复用服务跨事务,须在详细实现设计中明确outbox/恢复协议并有故障测试。评测锁定后才揭示结果;标签污染任何阶段均可追加作废记录。 + +存储优先现有对象/版本/审计机制,通过追加迁移保存新增类型;唯一键至少覆盖run+sequence、project+版本引用、命令幂等范围。完整DDL、索引、读写白名单及迁移前后恢复测试属于T02门禁,当前未建表。新数据根与旧库物理隔离由T01验证。 + +### 9.6 验收映射与当前限制 + +导入/冲突→AC-23/24;来源与治理→AC-25/26/27/43;方案/维度→AC-28/29/44;概率/沙盘→AC-30/31;轨迹/结果→AC-22/32/33;改进→AC-34/41;数据集→AC-35/36;业务指标→AC-37;专项准入/冻结/预算→AC-38/39/40;卡片UI→AC-42;建议边界→AC-45。 + +本节明确了候选类型和写路径,但读接口完整清单、DDL、生产角色映射、容量/模型时延及实际目录尚未定案。T00先关闭首个实施切片的缺口,不能以“文档写完”宣布全部Contract gate通过。 diff --git a/docs/v2/04-ui-spec.md b/docs/v2/04-ui-spec.md index 7dc3642..d1a27c7 100644 --- a/docs/v2/04-ui-spec.md +++ b/docs/v2/04-ui-spec.md @@ -76,3 +76,26 @@ UI 门禁尚未通过:路由位置、统一 token 实现、i18n 文件、视 结果展示本次实际提供方、未完成题目和拒答/unknown;关闭显示“专项核查已关闭”。失效/超时不把选中项悄悄变为另一个模型,不展示占位高分。对应 AC-17/18/19/20/21;页面路由及真实交互待 UI 阶段实施。 概率可视化增量:主结果使用概率环、六轴证据核验阶段雷达和维度追溯;具体阶段含义、假设联动、miniOpenClaw/Skills/Tools/Rules职责及P-14–17验收见[概率设计第6节](13-probability-prototype.md#6-概率环证据雷达与解释链2026-09-29增量)。演示数值不能转换为真实信用评分或概率贡献。 + +## 9. 三模块表面规格增量(0.2,未改原型) + +深色导航+浅色工作区方向不变;本轮只补交互规格,不宣称新页面已由Superdesign生成。业务首页显示历史经验加工、AI预审、轨迹复盘三个入口,保留项目上下文;具体路由在T00/T09定案,不恢复旧独立页。 + +| 表面 / 状态owner | 骨架与消费字段 | 动作与异常 | +|---|---|---| +| 材料集合 / ImportBatchPanel | 文件清单、逐项状态、解析结果和冲突;ImportBatch/FactConflict/SourceLocator | 材料编辑者可选文件/重试失败项/确认;E-16逐项说明,E-17保留冲突,切换项目清空选择 | +| 经验加工 / KnowledgeCandidateEditor | 左来源事件,中提炼要求与差异,右Skill/Rule草稿;KnowledgeCard | 提议者可生成/手工新增/编辑;发布人审核但不可自批;E-18缺依据不得硬规则发布 | +| 方案装配 / ReviewPlanEditor | 数据/Skills/Rules三类卡,依赖及核查维度预览;ReviewPlan/DimensionSpec | 编辑者保存草稿、提交审核;E-19/20定位不可用依赖/冲突;不显示Tools配置卡 | +| 预审与沙盘 / RunSummary、ScenarioPanel | 概率状态/建议→动态维度→证据→动作组合;ScreeningRun/ProbabilityView/Simulation | 等待新情景时保基线并显示计算中;只接受最新选择响应;失败不显示旧情景为新结果 | +| 轨迹复盘 / TrajectoryPanel | 左Agent步骤,右会议时间线,中间差异;TrajectoryStep/ReviewOutcome | 授权查看者展开来源;记录人可追加会议结果;E-23/26保留未对齐/未映射标识 | +| 改进对照 / ImprovementPanel | 偏差→候选修订→固定对照→审核/发布;ImprovementCandidate/Evaluation | 提议者提交,评测员锁定/揭示,发布人审核;E-24显示未完成门禁,不提供自动上线按钮 | + +上述表面全部继承第3节idle/loading/ready/empty/error/submitting与stale附加状态;业务状态由03第9节决定。只读访客无编辑/发布按钮;后端对每次动作重验。载入失败显示请求编号,版本冲突保留草稿。切项目时取消或忽略旧请求,清空证据、卡片选择、沙盘和轨迹节点;不能把前项目片段带入后项目。 + +卡片来源采用独立视觉:history_derived=“历史提炼”+历史图标+origin-history样式;manual=“人工创建”+编辑图标+origin-manual样式;policy_import=“制度导入”+文件图标+origin-policy样式。另显示data_domain与status徽标。历史卡被人工编辑后仍显示历史提炼及人工修订记录。来源色与通过/阻断状态色分开,去色仍能区分(AC-25/42/43)。 + +动态维度遵守14第5节:同刻度3–8维用雷达,其他完整列表或分组,来源抽屉可追溯数据/Skill/Tool/Rule/经验版本。空维度显示“当前方案尚未配置核查维度”,不补六轴占位。硬规则单独突出(AC-29/44)。 + +轨迹使用可折叠的步骤流和时间轴,当前步骤高亮、失败/跳过用明确文字。缺少人工过程时只显示已知会议事件和“过程材料不完整”,不造装饰性成功节点。图旁提供等价列表;动画短时且可关闭,不以炫酷动效暗示模型隐藏推理已可见(AC-32/33)。 + +新增中文文案域:material.import.*、knowledge.origin.*、plan.validation.*、trajectory.step.*、outcome.mapping.*、improvement.status.*。P0语言范围只中文;统一文案模块的实际文件与token消费路径在T09前定案。视觉数值与对比度尚未验证,不以本文替代UI门禁。 diff --git a/docs/v2/05-implementation-plan.md b/docs/v2/05-implementation-plan.md index 5f2d93d..ff0b1e7 100644 --- a/docs/v2/05-implementation-plan.md +++ b/docs/v2/05-implementation-plan.md @@ -1,6 +1,6 @@ # 兴邦 v2 实施与迁移计划 -状态:计划,未执行 v2 代码迁移。当前用户最新指令优先:接入流程、备份现状、编写新版文档。 +状态:计划,未执行 v2 代码迁移。当前用户要求补齐文档以便使用Claude Code/DeepSeek开发;本轮不开始业务实现。 ## 1. 迁移边界 @@ -44,10 +44,16 @@ 代码通过可回滚提交/镜像标签恢复。数据迁移追加并有幂等守卫;旧库先快照,升级/回退边界经测试后才部署。回退代码不等于撤销已写入数据。v2 使用独立工作目录、Compose 项目、容器名、数据卷及端口,具体值在 OQ-06 定案。 -本轮不实施剪裁、不改业务行为、不创建远程 v2 仓库、不部署。先把评审文档写清,避免规范到位后返工。 +本轮不实施剪裁、不改业务行为、不创建远程 v2 仓库、不部署。任务执行细分见 [开发交接](15-development-handoff.md),T00可立即文档核对,后续按切片过门禁。先把评审文档写清,避免规范到位后返工。 ## 5. M3 专项模块实施顺序 按 [专项判断设计](11-judgment-providers.md) 先落统一题库/请求/答案契约与配置冻结,再接本地推理服务并完成真实本地集成测试。Jev 适配独立实现;无 Key 时只验证厂商响应 fixture,live 用例标 skipped,不宣称原版已接通。mock 仅用于测试,不能冒充业务推理结果。 两条路径都读取同一版历史经验和证据,主审不写提供方分支。上线某个配置之前,该提供方/模型/提示/题库组合必须独立完成相同业务验收;合同测试通过不能证明模型效果合格。 + +## 6. 三模块闭环与任务包映射 + +M0包含本次0.2规格更新;M1对应T00–T02;M2对应T03–T06;M3对应T07/T08;M4对应T09/T10/T11的模拟闭环;M5/M6对应T13真实试点/概率。T12是可选Jev及实时专项准入。原里程碑编号保留,不能把P0模拟会议回放推迟到真实数据才能演示。 + +核心复用是卡片/方案、材料来源、受限Agent Loop、运行存储和经验治理;代码抽取仍需依赖白名单,不全盘复制旧四Agent所有领域。本期不自动微调主审、不建Tools业务卡、不把前端演示数据充当后端能力。 diff --git a/docs/v2/06-validation.md b/docs/v2/06-validation.md index 7a8cf9e..ae03e3a 100644 --- a/docs/v2/06-validation.md +++ b/docs/v2/06-validation.md @@ -60,3 +60,24 @@ 同一冻结题库、证据和专家标签验证 Jev/local 的业务含义与结构契约,不要求逐题答案或数值相同。分别统计错误、漏检、拒答/unknown、耗时及成本;模型不支持的题型也计入未完成项,不能从分母偷偷排除。阈值和映射按提供方/模型/题型独立登记,先定再测。 local 集成须在没有 Jev 凭据的环境实际执行,并验证未发送 Jev 请求;本地模型服务本身的授权配置另行处理。Jev live 无凭据则明确跳过,fixture 通过仅证明适配代码结构。两者未真实执行前,当前文档一律不宣称切换功能可用。 + +## 7. 三模块增量验收矩阵(0.2,待实现) + +| 检查领域 | AC | 必须观察的行为 | +|---|---|---| +| 会议目标/结果对齐 | AC-22/33 | 结果代码保留;退出不当否决;未知快照和后期结果不倒填初始标签;更正追加 | +| 多源导入与冲突 | AC-23/24 | 文件部分失败、容量/格式、表格定位/单位、未确认事实和重复导入隔离 | +| 人工/历史卡片 | AC-25/26/27/42/43 | 来源谱系、临时要求不持久化、硬规则资格、统一治理、发布版本不可变、去色可识别 | +| 方案与动态维度 | AC-28/29/44 | 无Tools配置入口;依赖权限/有效性;维度冲突;0/2/6/9维与异刻度列表不遗漏 | +| 沙盘与概率状态 | AC-30/31 | API/UI/导出域隔离、最新选择匹配、失败保基线、互斥动作、组合不简单相加 | +| 轨迹与建议边界 | AC-32/45 | 完整run/多step关联、失败保留、引用授权、成本unknown、不伪造隐藏推理、不自动关闭项目 | +| 改进与独立判断 | AC-34/41 | 自评分非真值;固定对照;未评测/自批/退化均不能发布;发布幂等与旧版可读 | +| 合成数据与隔离 | AC-35/36 | seed可复现、多类结果、划分先于提炼、关联客户/项目与近重复无交叉、衍生Skill不泄漏 | +| 业务目标指标 | AC-37 | 高预测组通过分子/已观察分母、覆盖率、未观察数同时报告;空分母为不适用 | +| 本地模型准入 | AC-38/39/40 | 每任务/用途验收、冻结checkpoint、否定/例外反例、超长拒绝而非截断、禁止静默路由 | + +数据集划分必须早于检索库、经验/Skill提炼和模型调参;开发、校准、测试分开。真实评测的分母与未送审选择偏差单列,不能把只在已评审项目上的通过率推广给所有早期线索。 + +T08报告四层结果:契约fixture、真实本地连通、中文专项效果、运行用途准入。可连通但效果差时报告失败,disabled路径仍可运行。mock与模拟专家标签不能代替独立专家标注。模型更新对既有护栏有回归时不能发布。 + +文档验证只检查编号/链接/事实/格式及源代码未变;本轮不运行未实现的新功能测试,也不重跑与纯文档无关的全量构建。行为实现时统一verify要求不变。 diff --git a/docs/v2/07-deployment-and-gitea.md b/docs/v2/07-deployment-and-gitea.md index 0c4efda..03e3eb4 100644 --- a/docs/v2/07-deployment-and-gitea.md +++ b/docs/v2/07-deployment-and-gitea.md @@ -99,3 +99,11 @@ git -C F:\mini-OpenClaw-restore-20260928 rev-parse HEAD 模型服务与业务后端分开配置端口/资源。容器内 localhost 指容器自身,实际地址须从后端容器连通性验证,不能照抄宿主机地址。配置只接受已批准端点,校验重定向/解析目标和数据范围;名称叫 local 不证明全系统数据不外发,主审等其他模型出口也须核对。 每个配置有不可变修订,运行引用其版本;敏感值通过后端密钥引用解析,不写前端、Git或日志。变更默认配置只作用于新运行,回滚选择已验证旧配置并新建运行,不篡改旧记录。 + +## 9. 本地判断服务与编码工具隔离(0.2) + +Laya为候选独立模型服务,独立依赖/权重目录、端口和健康检查,业务后端通过受控HTTP调用;实际镜像/启动命令尚未创建,见11第8节。部署验收包含固定修订、预加载权重、断网推理、资源上限、失败降级和后端容器到服务的连通性。未完成这些验证不承诺本地全功能可用。 + +Claude Code连接DeepSeek属于开发者工具设置,与后端主审/专项模型无关;本轮未修改CLI或环境变量。新增CLAUDE.md只导入AGENTS及交接入口,不含密钥。运行数据、模型权重、用户全局配置不进入源码备份。 + +本页第1节的Gitea事实是2026-09-28核验记录;最新提交是否已备份必须查看当次delivery.json与远程SHA,不沿用原版恢复点作为证明。 diff --git a/docs/v2/08-data-pilot-and-demo.md b/docs/v2/08-data-pilot-and-demo.md index a5820d7..8ae3ba7 100644 --- a/docs/v2/08-data-pilot-and-demo.md +++ b/docs/v2/08-data-pilot-and-demo.md @@ -47,7 +47,7 @@ ## 5. 数据流与边界 -客户选择范围/匿名处理→授权导入→材料来源与时间核验→经验草稿→专家确认→开发样本验证→冻结保留集→独立预测→揭示结果→共同复盘。 +客户选择范围/匿名处理→授权导入→按客户/项目分组和时间划分并冻结保留集→仅对开发集核验材料/提炼经验→专家确认→开发样本验证→保留集独立预测并锁定→揭示结果→共同复盘。 部署前明确:原文保存位置、读取角色、模型出口、是否保留供应商日志、保留期限和删除责任。供应商条款及私有化能力尚未核验,不承诺 Jev 可本地部署。默认不把真实材料发送外部服务。 @@ -56,3 +56,16 @@ 使用验证文档的重大问题漏检、无依据结论、误报、有效补件、专家分歧与效率指标。阈值先约定,结果差也如实展示;基线/经验增强/本地专项增强/Jev增强(可选)分开测。客户数据从开发样本到保留样本逐步开放,不以模型推荐代替专家复盘。 通过试点后再扩大业务范围;失败则给出问题归因(提取、检索、经验适用、主审推理、数据缺失),不靠调漂亮分数掩盖。数据接入后的价值应通过相同边界的对照证明。 + +## 7. P0模拟闭环演示顺序(2026-09-29) + +1. 展示3,000条候选规模的虚构案例清单、生成版本及多种结果分布;不是兴邦真实记录。 +2. 选择开发集案例,展开原始问询/补件/会议事件,提炼一张Skill和一张advisory Rule。 +3. 自然语言修改适用范围,再人工新增卡片;颜色、文字、图标区分来源,统一审核发布。 +4. 数据卡+Skills+Rules组成方案,展示维度随方案变化;Tools只在依据中展示。 +5. 初期项目缺证→主审核查→问题与补件→演示概率来源;勾选动作比较情景,撤销恢复基线。 +6. 回放完整Agent trajectory,展开真实执行步骤或明确标记的演示步骤;对齐模拟会议记录,查看材料版本差异。 +7. 从漏检提出改进候选,在隔离样本对照后人工审核发布;展示旧版仍可回放。 +8. 专项可关闭或选已验证本地配置;Laya尚未接通/未达标时如实显示,不依赖Jev Key完成演示。 + +最终向客户展示的是“数据怎样转化为可治理经验,以及怎样验证效果”的方法。真实高预测组通过率、覆盖率和校准在客户保留集上另行报告。模拟标签与模拟专家意见不能被包装成真实业务验证。 diff --git a/docs/v2/09-decisions.md b/docs/v2/09-decisions.md index b3bc288..3e57d2e 100644 --- a/docs/v2/09-decisions.md +++ b/docs/v2/09-decisions.md @@ -1,6 +1,6 @@ # 决策、未决项与学习记录 -日期:2026-09-28。状态区分“用户已明确的方向”和“工程候选待评审”。 +日期:2026-09-29(0.2增量,原记录保留)。状态区分“用户已明确的方向”和“工程候选待评审”。 ## 1. ADR @@ -9,11 +9,17 @@ | ADR-01 | 复用 Next.js+FastAPI 与现有组件,工程候选 | 全面换框架;无法复用已验证链路 | 先迁移可运行基座,再逐步拆模块 | | ADR-02 | 主审综合意见、专项模型局部判断(Jev或本地),用户已明确 | Jev单题直接决定通过;缺乏整体研判 | 证据与硬规则约束最终有效输出 | | ADR-03 | 历史评审过程是核心资产,用户已明确 | 只存通过/不通过标签;丢失核查和判断变化 | 优先收集问询、补件、修改和批复条件 | -| ADR-04 | 经验经审核、有适用范围,工程候选 | 自动把任意反馈变成规则;会固化错误 | 复用现有经验治理,建立历史过程关联 | +| ADR-04 | 经验经审核、有适用范围,用户确认方向,工程细节待审阅 | 自动把任意反馈变成规则;会固化错误 | 复用现有经验治理,建立历史过程关联 | | ADR-05 | 无真实校准前不宣称审批概率,已讨论方向 | 分数/Noul直接转通过率;没有业务验证 | P0概率字段为空;先做可追溯预审和试点 | | ADR-06 | 独立v2代码目录待迁移,当前先备份与文档,用户最新顺序 | 直接覆盖现有部署;难回退 | 旧版Gitea恢复点先核验;v2目录尚未建立 | | ADR-07 | 按用户最新要求直接适配流程正文,原文保留在Gitea恢复点 | 照搬Electron路径/发布命令;无法执行 | AGENTS统一入口,正文按兴邦事实执行 | | ADR-08 | 专项判断支持 Jev 官方服务、本地开源模型和关闭;可切换方向用户已明确,契约细节为工程候选 | 把 Jev Key 作为产品依赖或用通用模型自评分伪装等效概率;供应依赖和指标口径不可控 | 统一业务题库/接口,独立适配/验收;本地路径先交付,Jev 接入不阻塞 | +| ADR-09 | 公司评审会通过、初始材料介入、P0纯模拟,用户已确认 | 用违约率代替会议通过、只生成通过案例;偏离目标且没有反例 | 标签映射单列;未送审不当否决 | +| ADR-10 | 三模块闭环与人工Skills/Rules入口,用户已确认 | 自动把反馈写入正式规则;不可控且丢失来源 | 来源/数据域/状态分离,统一审核和版本 | +| ADR-11 | 数据/Skills/Rules装配方案,Tools受后台治理,用户确认方向 | 增加业务Tools卡、六维硬编码;权限负担且无法适配方案 | 维度随方案生成,工具只读追溯 | +| ADR-12 | 按任务可替换专项服务,本地Laya为待测候选,用户接受建议 | 绑定Jev Key或称本地接口兼容即效果等价 | 独立环境、固定权重、各任务准入;缺Key不阻塞 | +| ADR-13 | 轨迹+真实会议结果→改进候选→对照/审核→发布,用户确认方向 | 模型自评分自动训练/上线;循环强化错误 | 专家参考独立,划分先于经验提炼 | +| ADR-14 | 编码模型与产品主审/专项模型独立;小任务交接,用户要求 | 一次让低成本模型重写全系统、双份开发规则 | CLAUDE导入AGENTS,T00–T13逐批验收;本机连接未配置 | ## 2. Open Questions @@ -25,7 +31,7 @@ needed-by 是明确阶段门,不虚构双方尚未约定的日历时间。 | OQ-02 | 经验发布资格、独立复核、真实身份体系 | 演示角色明确标示;生产数据入口不开启 | 兴邦业务负责人+系统管理员 | M2生产权限实现前 | | OQ-03 | 专项/主审模型端点、本地模型与硬件、客户数据出口、保留策略 | mock/合成样本;先验证本地路径,缺 Jev Key 不阻塞;不发送真实材料 | 兴邦数据负责人+技术负责人 | 任何真实材料模型调用前 | | OQ-04 | 验收阈值、时延预算、资源/费用上限 | 文档工程限制仅提案,报告耗时不承诺效果 | 产品+测试+实施负责人 | M3配置定案及M5盲测前 | -| OQ-05 | “通过”阶段、预测时点、样本量与选择偏差 | probability=null | 兴邦审批负责人+建模负责人 | M6概率需求进入架构前 | +| OQ-05 | 已确认“公司评审会通过”和初期材料预审;尚需会议代码、附条件结果、观察窗口、样本量及选择偏差映射 | 方向已关闭;真实标签映射仍open,probability=null | 兴邦审批负责人+建模负责人 | M6概率需求进入架构前 | | OQ-06 | v2新仓库、云端目录、端口、容器/卷 | 暂用当前独立文档分支;不复用旧生产资源 | 项目负责人+运维 | M1迁移及任何v2部署前 | 以上待定不阻止当前文档交付;阻止相应业务实现/真实数据阶段越过门禁。用户新指令可直接关闭或调整范围,不重复请求已授权事项。 @@ -34,10 +40,10 @@ needed-by 是明确阶段门,不虚构双方尚未约定的日历时间。 | 门 | 状态 / 证据缺口 | |---|---| -| Term | 草案已列术语,待业务评审 | -| Contract | 已有候选字段/状态/错误;未生成类型或确认DDL | -| Rule | BR-01–20已拆分并标职责,待评审 | -| Exception | E-01–15有错误和文案,契约校验仍待实现 | +| Term | 0.2已列闭环术语,用户确认产品方向,客户口径待审阅 | +| Contract | 已有候选字段/状态/错误;新增读接口完整清单、DDL、类型生成未定案,见03第9节 | +| Rule | BR-01–44已拆分并标职责,待评审 | +| Exception | E-01–26有错误和文案,契约校验仍待实现 | | Coverage | 文档AC覆盖机械检查本轮执行;新功能行为测试未实现 | | Decision | OQ项按里程碑阻断,未宣告需求阶段全过 | @@ -48,3 +54,11 @@ needed-by 是明确阶段门,不虚构双方尚未约定的日历时间。 - Gitea CI:仅有GitHub YAML,runner与门禁未核验;owner运维,在首次v2合并前确认。 - 历史文档密钥:旧DELIVERY.md有遗留凭据,当前恢复快照不改历史;新仓库迁移禁止携带;凭据有效性与轮换由凭据owner另行处理,本轮未访问验证。 - 本地工具:沙箱进程初始化失败,已通过受审的升权命令完成工作;不将该环境问题误判为代码故障。 + +## 5. 0.2已确认与仍待定案 + +用户已明确业务目标,无须再次确认“三模块是否正确”“是否可以不用Jev”。本轮文档交付走纯文档路径;工程门禁不因为用户认可方向自动通过。 + +T00需收口:独立代码路径和资源、首个切片字段/全部读写接口/DDL/状态/测试,实际评审记录;T08需验证:本地硬件、checkpoint、中文任务阈值;T09需定案:路由/token/文案文件与可访问性。真实身份/制度/会议标签/出口由兴邦在P1前确认。未决项不阻塞写文档或模拟数据设计,但阻塞对应实现/真实用途。 + +学习缺口:跨编码代理容易失去上下文,最小owner是15-development-handoff及根CLAUDE导入入口;本次只验证文档结构,尚无Claude/DeepSeek实际接手效果,不能声称已节省成本。后续按任务耗时/返工/费用和验收记录评估。 diff --git a/docs/v2/10-delivery-record.md b/docs/v2/10-delivery-record.md index b71f85f..17d00b4 100644 --- a/docs/v2/10-delivery-record.md +++ b/docs/v2/10-delivery-record.md @@ -58,3 +58,13 @@ 检查:26份Markdown、94个本地链接、20条BR/15条E/21条AC的编号和覆盖、GWT、表格连续性、URD验收引用、文档范围与git diff格式均通过。命令/计划/文件哈希见 test-evidence/20260928-judgment-providers/。仅修改docs/v2,按纯文档轻量路径验证,本次未重跑旧版全量测试。新适配代码、真实模型调用和业务效果均未验证;未更改部署或旧版业务代码。 沿用 codex/xingbang-v2-docs-20260928 独立提交并备份;最终提交/远程SHA以该证据目录中的 delivery.json 为准。不修改原始备份分支或 main;独立评审及实现阶段仍待完成。 + +## 7. 追加:三模块闭环与跨编码代理交接(2026-09-29) + +用户要求写清文档,准备使用Claude Code连接DeepSeek开发。本轮补齐14三模块闭环、15开发交接任务包,新增根CLAUDE.md导入AGENTS;同步URD/规格/架构/契约/UI/验证/部署/试点/决策。规则追加至BR-44、E-26、AC-45,旧编号保留。 + +记录公司评审会目标、初期介入、P0纯模拟;多源材料、人工与历史卡片同治理、动态维度、轨迹与会议结果关联、受控改进闭环;Laya独立服务按任务验证,Jev可选。编码模型与业务模型配置分离。现有原型和业务代码未改;未抽取v2、未装CLI或模型、未部署。 + +本轮按纯文档轻量路径,检查与修订哈希见 [文档检查报告](../../test-evidence/20260929-v2-handoff/REPORT.md),事实核对见 [来源记录](../../test-evidence/20260929-v2-handoff/FACTS.md)。不重跑无关业务全量测试;新功能行为测试均未实现。 + +独立业务/技术评审未发生,详细契约读清单/DDL/隔离资源仍由T00/T02收口。下一任务T00,不把产品认可当工程门禁完成。最终Git提交及远程备份以同证据目录delivery.json和实际SHA为准,不从4d5a420旧恢复点推断最新已备份。 diff --git a/docs/v2/11-judgment-providers.md b/docs/v2/11-judgment-providers.md index ed83a3b..2c54de6 100644 --- a/docs/v2/11-judgment-providers.md +++ b/docs/v2/11-judgment-providers.md @@ -102,3 +102,57 @@ AC-21:两种服务均不可用时仍可关闭专项模块运行主审,结果 业务效果验收使用同一冻结样本集和专家标准,分别统计两种模式的漏检、误报、无依据结论、拒答率、时延和成本。契约兼容不代表模型能力等价;验收合格才能将对应配置标为 ready。Jev 没有 Key 时其 live 测试标未验证,不阻塞已经通过验证的 local 模式。 本地具体模型、硬件和服务协议仍属于 OQ-03/04,接入前选择并验证;没有真实历史数据时只报告演示和合成用例结果。当前交付仅为设计,后续按 M3 落代码、测试与配置模板。 + +## 8. Laya 候选与按任务替换(2026-09-29) + +用户已同意专项能力可替换、本地路径优先验证的方向。候选为 [NandhaKishorM/laya](https://github.com/NandhaKishorM/laya),官方仓库提供本地推理和HTTP服务。Jev 的有界题型参考 [TypeSafe 官方介绍](https://docs.typesafe.ai/introduction)。以上外部事实于2026-09-29查阅,实施时固定实际代码/权重修订并重新核验。 + +Laya 官方限制说明:基础模型在部分决策任务上需要领域适配;多语言概率不能视为已在兴邦校准;它的 confidence 与 Jev 定义不同。还存在上下文/选项预算及否定表述风险。因此“接口兼容”“本地可启动”“中文金租效果合格”是三项独立验收。不得复制宣传时延、把英文专项模型成绩推广为中文能力。[官方限制](https://github.com/NandhaKishorM/laya#honest-limits) + +### 8.1 配置拆分与职责 + +保留现有 provider=jev/local/disabled 业务契约,不新增 Laya 业务卡片。local 表示受管本地服务,实际实现由以下配置描述;mock仅测试/演示fixture,不列入production可用模型。 + +| 新增字段(JudgmentProfile) | 类型 / 语义 | +|---|---| +| engine | jev_api/laya/structured_llm;与provider一致性校验 | +| checkpoint_ref | string?;local模型必须固定权重修订与校验摘要;远程不可变版本不可得则unresolved | +| tokenizer_revision / runtime_revision | string;无独立tokenizer则not_applicable;用于复现与预算计算 | +| evidence_selector_version | string;冻结取证/分段规则,不允许暗改证据来“提升”结果 | +| task_validations | {task,rubric_version,dataset_ref,report_ref,decision:passed/failed/unverified,allowed_usage:offline/shadow/runtime}[] | +| task | extraction_grounding/experience_applicability/trajectory_quality/evidence_support,以上task字段的枚举 | +| calibration_ref | string?;属于专项判断校准,绝不是项目通过概率校准 | +| input_token_limit / option_token_limit | positive int;以选定模型和实测预算配置,不能照搬另一模型默认值 | +| language_scope | string[];如zh-CN,仅在对应语料验收后声明 | +| deployment_mode | managed_local/approved_remote;与端点及数据策略校验,local不自动获得生产数据权限 | + +JudgmentRequest增加task、rubric_version、usage:offline/shadow/runtime;Judgment增加task、rubric_version、actual_checkpoint_ref:string?、input_digest:string、evidence_selector_version:string及运行实际版本记录。profile.capabilities验证题型,task_validations验证业务任务和用途,两者都通过才可执行;服务连通只能影响健康状态,不等于task合格。 + +任务与配置的绑定由管理员维护,业务人员装配方案并查看专项核查状态;授权高级选项可沿原设计显式选择已批准profile。未指定则使用方案冻结绑定。最终生效配置在入队时保存;任意一项越权、被撤销或不匹配均按E-13/14/15处理,不悄悄替换。 + +### 8.2 独立服务部署候选 + +Laya使用独立模型服务进程/容器与独立依赖环境,不将重型推理依赖直接安装进旧版backend/venv。项目后端及其测试仍用项目venv;模型服务环境属于新增独立服务,需另有锁定依赖与部署验收。P0先由内部HTTP适配器调用,不为此引入完整插件市场或新编排框架。 + +首次加载所需权重先在获准环境准备,记录模型许可/代码修订/权重摘要。离线验收断网验证预加载、重启恢复和零外发;不能因供应商称“本地模型”就承诺全产品离线,主审模型仍有独立出口。 + +使用明确checkpoint,禁用自动按语言更换权重的隐式路由;若未来需要路由,整个路由规则及各权重都需版本化单独验收。实际服务端口、CPU/GPU与资源上限在T08探测;不停止旧版服务抢端口。 + +### 8.3 有界问题与证据处理 + +一个请求只回答一个可核对的问题,例如“这些流水是否支持所述回款解释”。按冻结snapshot提取授权证据,保留反例与冲突来源;问题拆分、取证规则同样要评测。不要把全部PDF或整段长trajectory直接拼接输入。 + +调用前使用对应tokenizer计算正文、标准和全部选项预算;超过已验范围时返回failed+E-25,保留原引用范围,不默默截断。可由上层新建更窄问题后再次执行;新问题留新question/version记录,不在适配器里偷偷改变命题。映射未知、否定/例外存在歧义或证据不足时明确unknown/人工复核,不硬选正面结果。 + +Laya等非文本判断模型不必提供解释;解释由主审结合真实证据生成并验证,界面不得声称解释是模型内部推理。原始指标保留本义,各任务阈值依据固定评测单独确定;没有校准证据就不能使用统一“0.8即可信”的门限。 + +### 8.4 接入顺序与准入 + +1. 完成统一契约fixture,验证disabled、unknown、失败和越权反例。 +2. 先用本地候选评估 extraction_grounding 与 trajectory_quality。轨迹未实现前仅可测提炼任务。 +3. 固定专家标注题集,加入中文否定、条件例外、矛盾、长证据和工具失败样例;比较现有判断基线与Laya、其他可用本地模型。 +4. 分任务报告误判/漏判、无依据支持、拒答和覆盖、耗时/成本;未达到预先阈值则保持unverified/failed,不影响主审disabled路径。 +5. 合格后先shadow旁路对照,再按任务允许runtime;shadow输出不改变当次建议。 +6. 有Jev Key和授权后用同一题集独立评估;没Key时仅fixture通过,live未验证。 + +领域微调属于后续实验:训练/校准/测试分开,专家纠正和可追溯结果为来源;生成模型和判断模型互相打高分不能视为自我提升。回放、审核、发布及回滚走同一改进治理链。对应 AC-38/39/40/41,原 AC-17–21 保持有效。 diff --git a/docs/v2/13-probability-prototype.md b/docs/v2/13-probability-prototype.md index 7a96efd..c0f33b1 100644 --- a/docs/v2/13-probability-prototype.md +++ b/docs/v2/13-probability-prototype.md @@ -4,7 +4,7 @@ ## 1. 页面表达 -综合预审首屏:审批通过概率、主审意见、数据基础和“查看判断依据”并列。当前数字紧邻“演示值”;解释“人工设定,仅演示交互;未经历史数据校准”。演示事件口径是“以本次材料版本提交后的首次审批通过”,用于避免与最终获批、附条件通过或投放后违约混淆;真实事件定义仍须 OQ-05 确认。 +综合预审首屏:审批通过概率、主审意见、数据基础和“查看判断依据”并列。当前数字紧邻“演示值”;解释“人工设定,仅演示交互;未经历史数据校准”。演示事件口径是“以本次材料版本提交后的首次审批通过”,用于避免与最终获批、附条件通过或投放后违约混淆;用户后续已明确目标是公司评审会通过;现有原型的“首次”口径只作示例,真实结果代码、附条件映射和观察窗口仍须 OQ-05 确认。 推进沙盘:固定当前基线,展示所选情景、概率对照条、差值(百分点)、所选假设、变化原因和剩余问题。勾选/取消立即更新,无需点击运行;“查看概率与判断依据”打开追溯抽屉。全部取消恢复基线,返回真实预审不得改变原值。 @@ -69,3 +69,9 @@ miniOpenClaw承载受控编排与运行追溯;数据卡、Skills和经验资 | P-15 | Given 任一维度,When 点击或键盘激活,Then 展示该维度卡片/Skill/只读Tools/Rules与经验边界 | AC-08/21 | | P-16 | Given 基线或选中情景,When 查看概率出处,Then 显示对应演示表行与结果,规划链路明确未接入 | AC-12 | | P-17 | Given 勾选/取消/关闭专项模型,When 雷达更新,Then 只更新相关情景轴,基线及原意见不变 | AC-11/13/21 | + +## 7. 后续产品方向与原型边界(2026-09-29) + +用户已确认维度随数据卡/Skills/Rules装配方案变化。六轴与42/58/51/64是本原型现状,不能据此把生产实现固定为六维或四种组合。动态维度见14第5节,生产候选字段见03第9节。当前原型HTML及P-01–17检查本轮未改,也未验证新增卡片/轨迹界面。 + +模型替换不自动改变通过概率,专项模块自评分不参与人工加分。演示估计、真实概率空值、核查阶段图和未来校准模块分别展示,完整依据链不能伪装为当前42%的数学推导。 diff --git a/docs/v2/14-experience-loop.md b/docs/v2/14-experience-loop.md new file mode 100644 index 0000000..06847a6 --- /dev/null +++ b/docs/v2/14-experience-loop.md @@ -0,0 +1,111 @@ +# 三模块闭环与数据设计补充 + +版本:0.2 · 2026-09-29。产品方向已经用户确认;本文件是新增设计候选,不代表兴邦业务签署、工程门禁通过或功能已实现。业务规则唯一编号在 [需求规格](01-requirements.md),本文件展开 BR-21–44;类型与接口 owner 在 [详细设计](03-detailed-design.md)。 + +## 1. 目标、事件和第一期范围 + +核心目标:在最初收集材料时帮助客户经理识别障碍、补件、比较推进方案;在适用范围内,高预测通过概率的项目在公司评审会上确有较高的通过比例。系统提供暂不建议推进的理由和剩余可能路径,由业务人员决定是否放弃,不自动关闭客户项目。 + +“通过”已经明确为公司评审会通过项目;具体会议结果代码、附条件通过是否计为通过、观察窗口及制度时期仍需兴邦映射。初期预测与后续补件预测是不同材料快照上的结果,不混为一条。没有送审、主动退出、待定不得当作否决标签。 + +P0:纯模拟数据,完成历史经验加工→卡片装配→预审/沙盘→轨迹与模拟评审对照的演示闭环。暂定演示种子 3,000 个虚构项目,属于可调整的工程演示规模,不是效果样本量承诺。真实数据、正式客户规则和真实概率属于 P1/P2 的独立门禁。 + +## 2. 三个模块与既有卡片的关系 + +| 模块 | 输入 | 处理 | 输出 / 人的职责 | +|---|---|---|---| +| 历史经验加工中心 | 历史材料、问询、补件、方案变更、会议记录 | 形成来源和时间线;提炼方法/经验候选;检查反例与适用范围 | Skills / Rules 草稿、来源案例;专家修订和审核发布 | +| AI 预审工作台 | 当前项目数据卡、已发布 Skills/Rules、评审方案 | miniOpenClaw 在授权范围编排核查;程序计算、规则校验、可选专项判断 | 有依据的建议、补件清单、概率状态、独立沙盘;客户经理选择推进动作 | +| 轨迹复盘与改进中心 | 冻结运行、真实会议结果及专家纠正 | 对齐材料版本和时间;归因遗漏/误判;比较改进版本 | 候选知识/编排策略、验证报告;授权人员决定发布和回滚 | + +业务配置仍只有数据卡、Skills 卡、Rules 卡及串联它们的评审方案。经验是这些卡片背后的有来源知识对象,不要求用户再配置一套经验卡才能运行。Tools 由后台批准,通过 Skill 的 allowed_tools 和运行权限共同限制,在轨迹里可见,不开放业务 Tools 卡。 + +Skill 描述“如何核查”:适用条件、必要数据、允许工具、步骤、输出、缺证处理和退出条件。Rule 描述“必须满足什么/何时触发什么”:条件、效果、适用范围、例外与依据。历史常见做法是经验性建议;只有已确认制度或正式授权依据才能成为硬规则。 + +## 3. 多源材料进入统一证据层 + +目标链路:用户选择文件集合/授权数据源→导入清单→逐文件解析→提取候选→人工确认与冲突处理→数据卡→冻结项目快照。 + +- P0 支持选取 PDF、XLSX、CSV 文件集合;浏览器支持时可选目录,否则多文件选择。目录仅表达用户选择的文件集合,不让服务端根据浏览器传来的 F 盘路径扫描电脑。 +- ZIP 解包、任意共享盘监听、生产数据库直连不进入 P0。数据库接入保留现有受控连接器边界,P1 先确认表/字段、只读权限和提取时间。 +- 每个导入条目保存文件哈希、相对路径、上传者、导入时间、解析版本和状态。保留原始字节,文件名不能成为服务器写入路径。 +- PDF 定位页码/片段;表格定位工作表/单元格区域,并保留币种、单位、业务期间。导入时间不冒充材料发生时间。公式缓存值是否可靠要单独标记,不能直接宣称重新计算过。 +- 扫描件没有可用 OCR 时显示未解析,可人工补录并保留页码;不伪造 OCR 成功。密码保护、格式损坏、超限文件逐项失败,不隐藏部分导入。 +- 跨材料数值冲突并列展示候选值及来源,由有权限人员选择或标为未解决;不默认“最后上传覆盖前值”。未确认/未解决的关键事实不能进入已核实结论。 +- 同域、同项目、同哈希可复用原件;不同项目不泄露已有材料存在性。新一次导入保留自己的来源清单,业务期间不同的同名文件不合并。 + +P0 容量提案:每批最多 100 个文件,每个不超过 10 MiB,总计不超过 100 MiB;与既有上传限制对齐后才能定案。Worker 按文件处理,重试只处理失败项,不能因为一个文件失败重复确认其他事实。上述是待验证工程限制,不是客户 SLA。 + +## 4. 历史经验加工与人工干预 + +加工步骤:先划分开发/保留集→在允许的开发案例中恢复时间线→按问题聚合证据与处理动作→生成候选→查适用条件/反例/例外→专家修改→测试→独立审核→发布版本。 + +历史库只有最终报告时标“过程不完整”,可以提炼有来源的结论,不生成虚构问询顺序、评审员内心推理或完整人工 trajectory。提取出来的 Skill 是可复用核查方法;Rule 初始为 advisory,不能因模型看到频次高就变 hard。 + +自然语言入口分三种,界面明确显示作用范围: + +| 入口 | 例子 | 效果 | +|---|---|---| +| 提炼要求 | “重点整理现金流与利润不一致的核查方法” | 约束本次加工任务,保留提示版本;不生成正式制度 | +| 候选编辑 | “只适用于设备类租赁,并增加关联交易例外” | 创建候选的新修订,显示差异,修改后重新验证/送审 | +| 本次预审补充说明 | “优先核查回款真实性” | 只影响当前运行,不能扩大 Tools 或覆写硬规则;保存为正式卡片需独立提议流程 | + +人工新增 Skill/Rule 有独立入口。历史提炼、人工创建共享审核状态机,来源区别不意味着权限不同。业务侧不得通过自然语言提交可执行 Python/SQL/Shell;Rule 条件使用经批准的字段与算子。人工新增也不是默认可立即生效。 + +来源表示采用两个正交字段:origin=history_derived/manual/policy_import;data_domain=demo/production。历史提炼后经人工修改仍为 history_derived,增加 edited_by、parent_version 和变更说明,不能洗掉来源。 + +## 5. 评审方案与动态维度 + +方案固定数据卡引用、Skills/Rules 版本、相关经验版本、关键核查项及维度定义。保存草稿与发布方案分开。发起运行时验证所有依赖在当前项目/域获准,冻结 plan_id/version 和快照;草稿或已撤回组件不能进入新运行。 + +维度是 Skills/Rules 的元数据,不增加“维度卡”。方案生成时按 dimension_id 合并关联;同 ID 标签/量纲/刻度不同则报冲突并要求修订,不由模型临时猜测合并。重复维度不重复计数。方案发布时固定名称、顺序、标准和关联依据。 + +雷达用于展示证据核查状态,不是信用分。不同维度只有采用同一可解释刻度时才共用雷达;例如 0 未提供、1 仅有说明、2 材料待核、3 交叉核验、4 人工复核。完整度不等于真实性;该刻度由版本化标准驱动,不由大模型任意打分。模拟达到阶段 3 仍标“假设核验成立”。 + +- 同刻度 3–8 个维度:雷达加等价文字列表。 +- 少于 3 个:状态条/列表;多于 8 个:分组或列表,全部维度仍可查看,不默默丢失关键项。 +- 异量纲:分面展示,不强行归一化;硬阻断单列,不被平均数或面积覆盖。 +- 原型现有六轴仅为示例。用户更换方案后生成新运行,旧运行的维度布局和依据保持原版本。 + +## 6. 概率、补件与沙盘 + +必须分开:核查状态、专项模型对一题的判断指标、项目评审会通过概率。概率模块拥有原始估计与校准结果;主审解释依据、规则和限制,不修改概率。 + +P0 的真实 probability 仍为 null。演示显示 demo_estimate(来源=synthetic_demo),紧邻“人工设定、未经真实历史校准”,导出也带标识。现有 42/58/51/64 的情景表继续只属于原型,不扩展为假装学到的算法。 + +每条沙盘动作包含目标问题、前提条件、假设改变的事实、所需证据和互斥动作。区分“补信息”和“改变交易条件”;仅上传一份流水不等于已确认回款。真实核验失败可以使结果变差。 + +勾选变化创建带 selection_hash 的新情景请求,使用冻结基线和相同组件版本。后端对组合重新核查,不把单项提升相加;前端只接受当前选择对应的结果,旧请求晚到不得覆盖新结果。处理中显示待计算,不先演示乐观增幅。 + +取消全部动作回到基线;请求失败保留基线、标示该情景未完成。模拟永不直接写入实际项目事实;真正补件按材料确认流程产生新快照与新预审。沙盘输出是条件估计,不宣称动作有经过验证的因果提升。 + +## 7. 轨迹、会议记录与反向改进 + +一次完整 Agent 运行是一条 trajectory,多次工具/模型调用是其中的 step/span。最小步骤信息:run_id、step_id、parent_step_id、顺序、时间、动作类型、Skill/Tool/Rule/Profile 版本、输入输出引用、状态、可核对的简短理由、耗时与可得成本。成本未知为 null,不填 0。不采集或伪造模型隐藏思维链。 + +会议记录单独保存:project_id、meeting_id、会议时间、被审材料快照(可空)、原始结果代码、原文证据、条件、记录人、修订关系。未知快照标 unmatched;修正结果追加新记录并 supersedes_id 指向旧记录,不覆盖历史。 + +AI 轨迹与人工会议时间线并列展示。匹配只基于可核验的项目、材料版本和时间;最终已通过不能倒填成最初材料也会通过。未送审/撤回/等待另列,既不当否决,也不进入已观察会议通过率的分母。 + +专项模型可做提炼依据质检、经验适用性检查、轨迹步骤评价;专家确认和真实会议结果仍为参考。不能让同一模型自评高分直接成为训练真值。 + +改进闭环:标记偏差→区分提取/检索/Skill/Rule/编排/判断模型/概率校准问题→形成 ImprovementCandidate→固定旧版对照→隔离样本回放→人工审核→版本发布→后续效果观察。发布失败保留旧版;已发布版本撤回只影响新运行。P0 先改知识、题库和编排配置,自动训练权重和自动上线不在本期。 + +## 8. 模拟数据与真实验证隔离 + +候选演示组成(总数 3,000,配比只为覆盖场景):直接通过 900、补件后通过 900、会议未通过 600、未送审/退出/待定 600。包括条件通过子类型,但是否计入正式概率目标留给客户映射。生成每个项目的初始事实、可得时间、问询、补件、变更和最终结果;用一致性约束生成,不能只生成 3,000 段“同意通过”。 + +固定 seed、生成器版本、场景模板、规则版本和清单哈希;演示名称均虚构。先用少量边界 fixture 确认逻辑,再批量生成;默认程序组合结构化场景,不为每条案例进行多轮昂贵模型调用。 + +开发/校准/测试按客户关联组与项目分组并结合时间分割,之后才允许提炼经验;同客户/项目近重复不得跨集合。保留集标签、最终报告与由其生成的 Skill 都不得进入开发。合成数据的测试只证明设定分布上的逻辑与演示,不能证明真实泛化。 + +真实试点先锁定事件、观察窗口、预测时点、样本范围、指标与阈值,再揭示结果。核心指标:高预测概率组实际会议通过比例,同时报告该组覆盖率、已观察标签数量、未送审/待定数量、校准误差和重大问题漏检。不能只挑少数简单案例展示高通过率,也不能推断未送审项目如果送审会怎样。 + +## 9. 状态与事实来源 + +- 用户已确认:公司评审会通过、初始材料介入、P0 模拟演示、三模块闭环、人工卡片入口、可替换专项判断方向。 +- 代码已观察:assistant_model 的 allowed_tools 过滤和只读工具;assistant_experiences 的草稿、评测、发布版本。它们是复用基础,不证明本文件闭环已实现。 +- 原型已存在:概率环、六轴示例、四种沙盘组合与依据抽屉;见 [原型](12-prototype.md) 和 [概率设计](13-probability-prototype.md)。 +- 候选待定案:扩展契约/DDL、具体路由、数值容量、部署资源、真实身份与规则、Laya 中文业务效果、概率模型。 + +追溯:产品来源为 2026-09-29 之前用户连续讨论及“按照你的建议来”确认;代码定位见 [架构](02-architecture.md);任务与门禁见 [开发交接](15-development-handoff.md)。 diff --git a/docs/v2/15-development-handoff.md b/docs/v2/15-development-handoff.md new file mode 100644 index 0000000..91c411c --- /dev/null +++ b/docs/v2/15-development-handoff.md @@ -0,0 +1,109 @@ +# 开发交接与任务包:Claude Code / DeepSeek 等编码代理 + +版本:0.2 · 2026-09-29。用途:用小范围输入和明确验收降低重复阅读与返工成本。不是一次性让模型实现整个平台的提示词。规则统一由 [AGENTS.md](../../AGENTS.md) 管理,[CLAUDE.md](../../CLAUDE.md) 只做导入入口。 + +## 1. 接手时必须知道的事实 + +| 项 | 本次核验状态 | +|---|---| +| 当前仓库 | F:/mini-OpenClaw-local-stable;Next.js + FastAPI,非 Electron | +| 当前分支 / 文档更新前 HEAD | codex/xingbang-v2-docs-20260928 / 47ec30a562f12864b7485bb7a43b967fa8f5b755;后续以 git 为准 | +| 独立 v2 源码 | 尚未抽取;仓库内 v2/ 与候选 F:/mini-OpenClaw-v2 均未建立 | +| 已有演示 | docs/v2/prototypes/prescreen-workbench.html;静态交互,不是生产业务实现 | +| 真实数据 / 模型 | 无兴邦真实数据;Jev/Laya 接入未实现,未证明业务效果 | +| 概率 | 原型人工情景值;真实 probability=null | +| 恢复点 | 4d5a420 原版快照曾核验 Gitea SHA;不代表最新文档/原型已远程备份 | +| 暂不触碰 | .docker-codex、project-process.zip、Office 临时文件、现有运行数据、用户删除的旧页面 | + +新会话先 git status --short,再 git log --oneline -6;阅读对应任务调用方。本文不是实时进度数据库;每次结束更新第 7 节,事实冲突以实际工作区和证据为准。 + +## 2. 三种模型配置必须分开 + +1. 编码代理:用户可以使用 Claude Code 连接 DeepSeek,负责写代码与测试。 +2. 产品主审模型:miniOpenClaw 在运行时规划核查、调用批准工具、解释结果,独立配置。 +3. 专项判断模型:Jev / 本地 Laya / 其他已验证本地模型 / disabled,见 [专项设计](11-judgment-providers.md)。 + +开发选 DeepSeek 不构成修改产品模型、数据出口或判定阈值的指令。专项模块不能把模型置信度写为项目审批概率。 + +Claude 官方说明支持从 CLAUDE.md 用 @AGENTS.md 导入统一规则,本仓已采用该入口。用户本机 Claude/DeepSeek 连通性、版本兼容和费用未测试;本轮不安装 CLI、不修改用户全局配置、不写 API Key。接入时依据 [Claude 项目指令文档](https://code.claude.com/docs/en/memory) 和 [DeepSeek 官方 Claude Code 指南](https://api-docs.deepseek.com/quick_start/agent_integrations/claude_code/) 核对当前参数。前者正文已查阅,后者官方搜索结果可发现但本次正文抓取超时;不据此写死模型名称和配置命令。 + +## 3. 最小阅读包 + +首次:AGENTS→project-process/README 与 XINGBANG-ADAPTATION→v2/README→本任务相关规格行和设计章节→对应阶段规范。之后不反复全文读取所有文档,但切换阶段必须读对应章节。 + +| 任务领域 | 必读 v2 文档 | 首先定位的已有代码(只作复用线索) | +|---|---|---| +| 材料/历史 | 01、03、14 第3/4/8节 | assistant_data.py、assistant_materials.py、assistant_store.py | +| 卡片/装配 | 01、03、14 第4/5节 | assistant_experiences.py、component_registry.py、component_evaluation.py | +| 编排/专项 | 02、03、11、14 第2/7节 | assistant_model.py、assistant_worker.py、project_assistant.py 的调用方 | +| UI/沙盘 | 04、DESIGN、13、14 第5/6节 | 当前 workbench 页面和已有原型;先确认路由仍存在 | +| 复盘/评测 | 06、14 第7/8节 | 既有运行存储、审计与经验治理,不改写历史记录 | + +表中代码位于 backend/services;拟议新模块落点在完成 T00 的路径清单后才成为可写白名单。不要因为文档有一个新模块名字就新建完整框架。 + +## 4. 小步任务队列 + +状态说明:ready-docs=可立即完成文档/现状核对;blocked-gate=须补齐并评审对应设计才能写业务代码;planned=依赖前项;optional=没有也能交付主闭环。下列均未被标记实现完成。 + +每张任务卡必须记录 parent_task、目标 BR/E/AC、准确文件白名单、输入/输出契约、状态机、测试命令和证据路径。表中是边界,不是授权一次修改整个目录。 + +| ID / 状态 | 依赖 / 阅读 | 单次产物与边界 | 验收 / 下一步 | +|---|---|---|---| +| T00 ready-docs:设计收口与路径清单 | 当前文档;流程①–④ | 核对现有调用方;输出核心依赖白名单、独立路径/资源候选;完成首个切片六道门与接口/DDL/状态设计,记录审阅者及未决项 | 文档链接/编号/事实/diff;禁止顺带复制源码或启动服务;形成 T01 的准确文件清单 | +| T01 blocked-gate:独立基座 | T00;M1 | 从核验修订按白名单抽取可运行核心,排除密钥/库/依赖/旧凭据文档;独立 venv、端口和数据根 | 原版文件不变、独立健康检查、统一 verify 通过;不部署云端 | +| T02 planned:闭环契约与存储 | T01;03第9节 | 定案 Pydantic 模型、追加迁移、授权与版本引用;同步前端契约消费。按材料/卡片/运行子卡分次实现 | AC-13/14/23/28/34/36/43;迁移幂等、版本冲突、重启恢复;不接模型 | +| T03 planned:材料集合 | T02;14第3节 | 复用上传/确认入口,增加导入清单、定位和冲突候选;只处理 PDF/XLSX/CSV | AC-01/08/23/24;部分失败、重复/跨项目、未确认不生效 | +| T04 planned:模拟案例 | T02;14第8节 | 先边界 fixture,再可复现批量生成、分组划分和 manifest;运行输出不默认入 Git | AC-35/36;数量/时间/标签一致性、无保留集泄漏;不声称真实效果 | +| T05 planned:历史提炼与人工卡片 | T03/T04;14第4节 | 先 timeline,再候选,再编辑/测试/审核;每部分独立子卡,复用治理入口 | AC-02/03/04/25/26/27/43;自然语言修改不直接发布、不自批、硬规则有正式依据 | +| T06 planned:评审方案与维度 | T05;14第5节 | 数据/Skill/Rule 装配、依赖检查、冻结方案;维度去重和刻度冲突;没有 Tools 卡 | AC-28/29/44;草稿/撤回组件拒绝、旧版本不变;空/2/6/9维和异刻度 | +| T07 planned:预审执行 | T06;02/03 | 受限编排、确定性核查、缺证补件、结果约束;先 disabled 专项路径 | AC-05–10/12–14/21/45;工具越权拒绝、预算停止、硬阻断、失败不伪造;不实现真实概率 | +| T08 planned:专项离线质检 | T05;11第8节 | 先统一适配 fixture,再独立本地服务;验证 Laya 中文题库的提炼依据和轨迹质检,失败可保持禁用 | AC-17–21/38/39/40;fixture/live 分开、否定和例外、上下文超限、逐任务注册;不得把安装成功当能力通过 | +| T09 planned:预审与沙盘 UI | T07;04/DESIGN/13 | 分子卡实现组件、动态维度、证据抽屉、条件情景;演示值与真实字段分离 | AC-11/12/29/30/31/42/44;组合非加和、乱序丢弃、失败保基线、键盘与文字替代 | +| T10 planned:轨迹和结果复盘 | T07;03/14第7节 | 先只读 step 回放,再模拟会议结果追加/对齐,最后偏差记录;不改旧运行 | AC-22/32/33;一个 run 多 step、unmatched、结果更正、只读权限;人工缺失过程不补造 | +| T11 planned:改进对照与演示交付 | T08/T09/T10;06/08 | 固定版本做旧/新对照,ImprovementCandidate审核和发布;完成三模块演示脚本 | AC-15/16/34–37/41;泄漏拒绝、退化不发布;工程演示与模型效果分列 | +| T12 optional:Jev 与实时专项 | T08;有端点/凭据及授权 | Jev adapter 与独立 live 验证;通过逐任务效果门禁后再启用实时用途 | AC-17–20/38–40;无 Key 标未验证,不阻塞主闭环 | +| T13 future:真实数据与概率 | M5/M6;客户授权与 OQ | 接真实只读数据、映射会议标签、分组时间划分、训练/校准/盲测、适用范围与漂移门禁 | 高预测组通过率+覆盖率+校准+样本不确定性;新建概率详细规格,禁止照演示表实现 | + +T08 可在 T05 后先做提炼质检;轨迹质检待 T10 提供轨迹。T09 不依赖 Jev,T11 可展示专项禁用或效果未达标的真实状态,不伪造模型成功。工作并行需要用户明确安排不同文件归属;默认同一工作区串行执行。 + +## 5. 通用执行提示词(替换任务编号即可) + +```text +你在 F:\mini-OpenClaw-local-stable 工作。先读取 CLAUDE.md/AGENTS.md、 +docs/project-process/README.md、XINGBANG-ADAPTATION.md,执行 git status --short +和 git log --oneline -6,再读取 docs/v2/15-development-handoff.md。 + +本轮只做 T00。按任务卡读取相关文档和当前调用方,不读取无关整个仓库。 +先报告当前状态、该任务范围和验收项,然后完成已授权且不受门禁阻塞的工作。 +用户已确认产品方向,无须重问;工程未决项先查代码/文档,无法解决才集中提出。 +本任务若是文档收口,不写业务代码、不安装模型、不启动或部署服务。 +若是后续实现任务,先验证该切片①–④门禁证据,列准确文件白名单,补对应测试, +用最小改动实现;行为变更必须用项目 backend/venv 运行 scripts/verify.py。 +不得恢复已合并删除的旧页、复制真实数据库/密钥、用演示值充当真实概率, +不得把模型置信度当通过率或把反馈自动发布成正式规则。 +每批完成自查 diff;记录日志与测试证据,更新第7节交接,不自动开始下一任务。 +输出:本次改动、验证结果、未完成项、下一任务和所需输入。 +``` + +已有用户授权的文档或可逆修复不额外请求确认;门禁缺口按明确的规格条目记录,不能靠再问一句“可以开始吗”代替完成设计。 + +## 6. 控制开发成本的方式 + +- 一个会话一张小任务卡;大表中的 T02/T05/T09 等必须先拆成单一可验证子卡。优先服务+契约+最薄界面构成一条业务切片。 +- 每轮提交相同短交接格式,下一轮只读该卡及必要依赖;调用方用 rg 精确检索,避免上传整个仓库或反复读长日志。 +- 先固定 fixture 和结构验证,真实模型调用集中在小型专项评测;没有新改动/失败不重复跑相同昂贵测试。每个行为批次仍须完整 verify,节省成本不能省略强制验证。 +- 复杂度高的共享契约、数据隔离、概率口径和迁移先完成技术审阅;普通实现使用用户选定模型。模型不能仅凭自评宣称测试通过。 +- 失败先看准确日志并定位,修复后重跑同一检查;若同一问题两次无进展,停止扩大改动,形成最小复现与待解决问题,交给用户或审阅者。 +- 不预承诺节省比例;如需比较,记录每卡实际 token/费用(可得时)、耗时、返工和测试结果。 + +## 7. 当前交接记录 + +- 日期:2026-09-29。 +- 完成范围:产品闭环文档补充、BR/E/AC 扩展、模型替换设计、分批交接;业务源码未变。 +- 当前阶段:需求与后续候选设计;用户已确认方向,独立业务/技术评审和实现门禁尚未完成。 +- 验证入口:[本轮文档检查证据](../../test-evidence/20260929-v2-handoff/REPORT.md)。检查结果以该报告为准。 +- 下一任务:T00,首先把 T01 核心迁移依赖及隔离路径收口为可评审清单;不要重新讨论已确认产品目标。 +- 待输入:独立路径/仓库与资源定案;真实阶段才需要兴邦数据、制度、会议标签映射和客户身份权限。Laya 硬件和中文效果由 T08 探测,不凭宣传定性能。 +- Git:本轮提交/备份状态见证据中的 delivery.json(若有)和 git;不得从旧恢复点推断最新版本已备份。 + +后续每张卡用同一结构更新本节,并保留任务编号、验证路径和未决项;不要把动态进度写进 AGENTS.md。 diff --git a/docs/v2/DESIGN.md b/docs/v2/DESIGN.md index ecf2b4d..35d0ef6 100644 --- a/docs/v2/DESIGN.md +++ b/docs/v2/DESIGN.md @@ -67,3 +67,9 @@ needs-design-decision:完整状态色、间距尺度、响应断点、组件 ## 2026-09-29 概率解释可视化 沿用原型色板,概率环强调结果、六轴雷达强调证据阶段;局部科技面板使用现有深绿/青绿语义色,不引入营销插画。图表须附刻度定义、虚实线图例与等价可交互文字列表。只使用短时状态过渡,prefers-reduced-motion时关闭;无持续扫光或闪烁。维度选择进入依据抽屉,原型概率来源进入人工情景表。图形不能暗示权重、面积或资料完整度与真实审批概率等价。详见[概率设计](13-probability-prototype.md)。 + +## 2026-09-29 来源与状态分离 + +新增语义token候选:origin-history(历史提炼)、origin-manual(人工创建)、origin-policy(制度导入)。用于卡片标题条和来源徽标,要求视觉差异明显且不占用风险状态色;具体色值、hover/focus与对比度在T09依据现有设计系统定案。本轮未写生产CSS或重画原型。 + +每种来源必须同时有文字和图标;data_domain和审核status各有独立徽标。来源区别不是权限区别,也不是可信等级。图表维度改为方案驱动;六轴只描述已有原型,生产按UI Spec第9节处理2/6/9维及异刻度。 diff --git a/docs/v2/README.md b/docs/v2/README.md index a44c98e..ae1ed50 100644 --- a/docs/v2/README.md +++ b/docs/v2/README.md @@ -1,20 +1,26 @@ # 兴邦智审 v2:开发文档入口 -版本:0.1 · 2026-09-28 · 状态:评审草案。 +版本:0.2 · 2026-09-29 · 状态:用户已确认产品方向,工程规格待评审。 产品方向:评审经验驱动的 AI 预审。主审 Agent 综合判断,可切换专项判断模块(Jev 官方服务 / 本地开源模型)承担局部判断,确定性程序执行计算和规则;历史评审过程是核心经验来源。当前没有兴邦真实历史数据,演示不能宣称真实审批通过概率。 ## 当前工作边界 -本轮已先保存原版源码恢复点,再编写流程与新版文档。未创建独立 v2 代码目录、未实施新版 API / Jev / 历史过程提炼、未部署或覆盖现有服务。迁移仍是后续任务,见实施计划;不能把现有名字含 v2 的旧模块误认为本轮新版已完成。 +原版源码恢复点已保存;已制作独立 Superdesign 交互原型,本轮补齐三模块闭环与开发交接。未创建独立 v2 代码目录、未实施新版 API / Jev / 历史过程提炼、未部署或覆盖现有服务。迁移仍是后续任务,见实施计划;不能把现有名字含 v2 的旧模块误认为本轮新版已完成。 备份基线:`4d5a420671cb073a56335bd617e7d0812b8179a9`,Gitea `codex/backup-before-ai-prescreen-v2-20260928`;已通过远程 SHA 比对。此前主线:`b10093f9d8a949c6a6f8f8ed6d5b9c1bb044b569`。详情见交付记录。 +## 新开发者先读 + +先读 [三模块闭环](14-experience-loop.md) 理解产品,再读 [开发交接与任务包](15-development-handoff.md) 选择一个小任务。Claude Code 从根 [CLAUDE.md](../../CLAUDE.md) 导入统一规则;可使用用户配置的 DeepSeek,编码模型与产品运行模型独立。 + ## 阅读顺序 | 文档 | 用途 | |---|---| | [流程适配](../project-process/XINGBANG-ADAPTATION.md) | 如何执行同事提供的八阶段规范 | +| [三模块闭环](14-experience-loop.md) | 历史经验加工、卡片装配预审、轨迹与真实评审反馈 | +| [开发交接与任务包](15-development-handoff.md) | T00–T13、最小阅读包、Claude/DeepSeek提示词与当前进度 | | [URD](URD.md) | 用户、产品目标、功能、分期与产品验收 | | [需求规格](01-requirements.md) | 七段规格、BR/E/AC 可追溯规则 | | [架构](02-architecture.md) | 已有能力、目标边界、职责与 ADR | @@ -33,11 +39,11 @@ ## 阶段状态 -- ① 产品目标来自本次会话;需求规格为草案,尚待产品及兴邦评审人员确认。 +- ① 用户已确认公司评审会通过为目标、初始材料介入、P0模拟数据、三模块闭环和可替换专项判断;规格、真实制度与标签映射仍待审阅。 - ②–④ 为支持需求评审提前记录的候选设计,不视为阶段门禁完成。 -- ⑤–⑧ 文档描述未来实施、验证、交付和经验沉淀方式;本轮只实际执行文档检查和源码备份。 +- ⑤–⑧ 文档描述未来实施、验证、交付和经验沉淀方式;本轮仅更新文档并执行文档检查;此前的原型和备份证据各自保存,不能推断本轮已远程备份。 - 现有基线测试结果仅证明旧版状态,不证明 v2 功能已经实现。 ## 下一步 -先评审 URD 和需求规格,优先确定首批业务类型、经验审核角色、数据使用边界。确认后按实施计划建立独立 v2 目录,逐批迁移与验证;真实数据试点和概率校准分别设门禁。 +从 T00 完成首个实施切片的契约、依赖白名单、隔离路径和门禁审阅;随后按 T01–T11 分批实现模拟闭环。Jev接入可选,Laya须按任务验证。真实数据/概率留到T13,不能因文档完备就宣称已接通或已校准。 diff --git a/docs/v2/URD.md b/docs/v2/URD.md index 2b524a5..44a9a6f 100644 --- a/docs/v2/URD.md +++ b/docs/v2/URD.md @@ -4,19 +4,19 @@ | 项 | 内容 | |---|---| -| 编号 | URD-XB-V2-0.1 | -| 日期 / 状态 | 2026-09-28 / 草稿待评审 | +| 编号 | URD-XB-V2-0.2 | +| 日期 / 状态 | 2026-09-29 / 用户确认产品方向,规格待评审 | | 需求来源 | 用户本次会话:聚焦 AI 预审、历史评审经验、可切换专项模型(Jev / 本地开源模型)和数据开放展示 | | 产品 owner | 项目负责人;业务评审 owner 为兴邦指定评审专家,待指派 | | 维护位置 | docs/v2/URD.md | -变更记录:0.1 首次整理;本文为后续规格输入,不代表客户已确认。 +变更记录:0.1 首次整理;0.2 补齐用户确认的三模块闭环、人工卡片和本地专项判断。用户确认不等于兴邦已签署或工程门禁通过。 ## 2. 目的与范围 帮助客户经理在项目早期获得有依据的推进建议、主要障碍、最小补件路径;帮助评审人员将历史项目中的调查方法沉淀为可审核、可复用、可撤回的经验。 -P0 范围:受控演示、项目事实与证据、历史案例过程与经验卡、主审综合预审、可选专项核查(Jev 官方服务 / 本地开源模型 / 关闭)、情景模拟、对照验证。先演示并验证经验链,再争取一批脱敏历史案例。 +P0 范围:纯模拟数据的受控演示、项目事实与证据、历史案例过程与经验卡、主审综合预审、可选专项核查(Jev 官方服务 / 本地开源模型 / 关闭)、情景模拟、对照验证。先演示并验证经验链,再争取一批脱敏历史案例。 不在 P0:自动正式审批、自动放款、未经校准的通过概率、默认访问兴邦生产库、个人评审员通过倾向预测、用真实材料直接训练外部模型。这些能力或不属于本产品职责,或依赖另行确认的数据和验证条件。 @@ -52,7 +52,9 @@ P0 范围:受控演示、项目事实与证据、历史案例过程与经验 ## 5. 核心体验 -历史档案 → 争议时间线 → 专家确认经验 → 新项目核查 → 补充证据与模拟 → 复核与对照验证。 +三个核心模块:①历史经验加工中心:历史档案→时间线→Skills/Rules候选→专家审核;②AI预审工作台:数据卡+Skills卡+Rules卡装配方案→受控核查→补件与沙盘;③轨迹复盘中心:运行轨迹→会议结果对照→改进候选→验证和审核发布。 + +终局目标是让高预测通过概率的项目在公司项目评审会上具有较高实际通过比例,同时报告覆盖率和校准;不是预测违约,也不是自动审批。介入点为最初收集材料时;不值得继续推进的项目由客户经理据建议作决定。详见 [闭环设计](14-experience-loop.md)。 页面入口拟整合到项目工作台:预审总览、历史经验、证据详情、推进沙盘、验证看板。保持当前项目上下文;不新增一批与现有工作台重叠的孤立旧页面。 @@ -72,7 +74,7 @@ P0 范围:受控演示、项目事实与证据、历史案例过程与经验 | MOD-07 效果验证 | FR-EVAL-01 | 锁定样本与版本→运行→揭示参考结果→专家复盘 | EX-EVAL-01 参考答案提前泄露:样本作废,不计盲测 | AC-U07 | | MOD-08 数据试点 | FR-PILOT-01 | 查看数据用途→选择受控案例范围→审核导入 | EX-PILOT-01 数据出口未批准:阻止外部发送 | AC-U08 | -各功能前置条件均为项目/案例访问范围有效;真实数据须有授权范围。详见规格的权限、错误和状态定义。上述 8 个模块均为 P0 范围;FR-JEV-01 保留历史编号,专项模块的实现不绑定 Jev 品牌。各模块按实施计划分批实现,不能一批全上。 +各功能前置条件均为项目/案例访问范围有效;真实数据须有授权范围。详见规格的权限、错误和状态定义。上述模块归入三个核心模块;P0只实现模拟流程,FR-PILOT-01的真实接入属于P1;FR-JEV-01 保留历史编号,专项模块的实现不绑定 Jev 品牌。各模块按实施计划分批实现,不能一批全上。 ## 7. 数据与内容 @@ -121,6 +123,20 @@ P0:演示经验链、主审核查、专项复核、沙盘和验证框架;P1 ## 12. 假设与未决项 -当前假设:中文 Web、无真实历史库、先用标注演示数据、主审负责综合意见。首批行业、专家发布权限、模型数据出口、验收阈值和“通过”的阶段定义均见 [OQ 清单](09-decisions.md),有 owner 与 needed-by。真实试点前必须关闭对应阻塞项。 +当前假设:中文 Web、无真实历史库、先用标注演示数据、主审负责综合意见。首批行业、专家发布权限、模型数据出口、验收阈值和会议结果代码/观察窗口映射均见 [OQ 清单](09-decisions.md),有 owner 与 needed-by。真实试点前必须关闭对应阻塞项。 -附录:全部 FR/EX 索引在第 6 节;演示脚本见 [数据试点与展示](08-data-pilot-and-demo.md)。本版从既有综合平台聚焦经验驱动预审,保留旧能力供迁移,不声称重写完成。 +附录:原有 FR/EX 索引在第 6 节,新增功能与验收映射在第13节;演示脚本见 [数据试点与展示](08-data-pilot-and-demo.md)。本版从既有综合平台聚焦经验驱动预审,保留旧能力供迁移,不声称重写完成。 + +## 13. 本次确认的功能增量 + +| 功能编号 | 用户任务 | 规格验收 | +|---|---|---| +| FR-FACT-02 | 选择文件集合,查看逐文件解析与来源冲突,确认后生成数据卡 | AC-23/24 | +| FR-EXP-02 | 用自然语言干预提炼,人工新增Skills/Rules,保留来源并审核 | AC-25/26/27/43 | +| FR-PLAN-01 | 装配数据/Skill/Rule,生成随方案变化的核查维度,不开放Tools卡 | AC-28/29/44 | +| FR-SIM-02 | 查看明确标注的概率状态及依据,勾选后比较完整情景 | AC-30/31 | +| FR-TRACE-01 | 回放AI轨迹、查看会议记录,区分材料版本和未知经过 | AC-22/32/33 | +| FR-LEARN-01 | 从偏差提出改进,固定对照、审核后发布,继续观察效果 | AC-34/36/37/41 | +| FR-DEMO-01 | 用可复现的多结果模拟案例演示完整闭环 | AC-35 | + +以上AC均引用需求规格的稳定编号,不新增重复AC-U口径。P0验收结构与交互;真实预测效果须P1/P2单独验证。历史提炼和人工维护的卡片颜色/图标/文字区别清晰,来源和发布状态分开呈现(AC-42)。 diff --git a/test-evidence/20260929-v2-handoff/FACTS.md b/test-evidence/20260929-v2-handoff/FACTS.md new file mode 100644 index 0000000..1ce4b0a --- /dev/null +++ b/test-evidence/20260929-v2-handoff/FACTS.md @@ -0,0 +1,17 @@ +# 事实核对与作者审阅 + +日期:2026-09-29。 + +- git status/log:基线47ec30a,当前codex/xingbang-v2-docs-20260928;仅原有无关未跟踪文件,无待覆盖业务改动。 +- 独立v2目录:仓库v2/及F:/mini-OpenClaw-v2均未创建;迁移仍为计划。 +- backend/services/assistant_model.py:按allowed_tools过滤read_project_snapshot/read_document/read_checks/read_method/read_experiences,反馈只形成experience_proposal。 +- backend/services/assistant_experiences.py:已有draft、evaluation、published不可变版本;新卡片与闭环仍需复用设计。 +- scripts/verify.py存在并使用项目venv;本轮纯文档未运行完整业务验证,不挪用旧版测试结果作为v2实现证据。 +- 原型HTML/脚本本轮不改;六轴及人工情景表是既有演示,动态维度和闭环UI仅候选规格。 +- Laya官方仓库 https://github.com/NandhaKishorM/laya :已查阅本地服务、上下文限制、模型差异和Honest limits;未安装/实测。Jev官方 https://docs.typesafe.ai/introduction 已查阅,未接API。 +- Claude官方 https://code.claude.com/docs/en/memory 已核对@AGENTS.md导入。DeepSeek官方Claude Code指南可从官方搜索发现,正文抓取超时;文档只提供入口,不编写配置命令或固定模型名。 +- Gitea恢复点的旧核验不等于最新文档备份;本轮远程结果单独记录,不改main、不部署。 + +作者自查:正确性——区分会议事件与标签映射、当前能力与设计;一致性——修正保留集先划分再提炼、任务AC映射和异步沙盘;数据/权限——版本、来源、出口、无密钥;验证——机械检查与真实业务验收分开。 + +残余:API读清单/DDL、具体代码路径、性能、生产角色、中文模型效果和真实概率均有门禁owner。独立业务/技术评审未进行;CLAUDE入口实际加载与成本改善未测试。 diff --git a/test-evidence/20260929-v2-handoff/PLAN.md b/test-evidence/20260929-v2-handoff/PLAN.md new file mode 100644 index 0000000..04dde3c --- /dev/null +++ b/test-evidence/20260929-v2-handoff/PLAN.md @@ -0,0 +1,12 @@ +# 文档验证计划 + +日期:2026-09-29;范围:docs/v2 与根 CLAUDE.md,纯文档交接。 + +1. 检查本地Markdown链接和锚点、表格结构、编码字符。 +2. 原BR/E/AC及ADR/URD编号只追加保留;44条BR、26条E、45条AC唯一连续;全部BR/E有GWT覆盖。 +3. 检查任务编号T00–T13、跨文档AC引用和异常码/用户文案。 +4. 核对源码事实及外部来源,列明未知/未实施事项。 +5. 仅允许docs/v2、CLAUDE.md和本证据变化,git diff --check;记录业务源码未变。 +6. 保存命令、base SHA、最终文档哈希及结果;不运行业务测试/模型/部署,实际交付Git状态另存delivery.json。 + +本检查不证明候选架构已通过独立评审,或Claude/DeepSeek实际接入成功。 diff --git a/test-evidence/20260929-v2-handoff/REPORT.md b/test-evidence/20260929-v2-handoff/REPORT.md new file mode 100644 index 0000000..e0a3b86 --- /dev/null +++ b/test-evidence/20260929-v2-handoff/REPORT.md @@ -0,0 +1,9 @@ +# 文档检查报告 + +日期:2026-09-29。状态:PASS + +检查 31 份Markdown、135 个本地链接;44条BR、26条E、45条AC全部唯一连续并有GWT覆盖;跨文档引用、任务T00–T13、锚点、错误码与表格检查。 + +命令:`backend/venv/Scripts/python.exe test-evidence/20260929-v2-handoff/check_docs.py`;cwd为仓库根。基线47ec30a,最终文档SHA256见validation.json。 + +git diff --check及范围检查结果见validation.json;业务源码/原型未改变。纯文档未执行verify.py或模型/CLI实测。独立业务/技术审阅未完成,不能据此进入未过门禁的实现。 diff --git a/test-evidence/20260929-v2-handoff/check_docs.py b/test-evidence/20260929-v2-handoff/check_docs.py new file mode 100644 index 0000000..a32f8c1 --- /dev/null +++ b/test-evidence/20260929-v2-handoff/check_docs.py @@ -0,0 +1,78 @@ +from pathlib import Path +import json,re,subprocess,hashlib +root=Path.cwd(); out=root/'test-evidence/20260929-v2-handoff' +def git(*args): + return subprocess.check_output(['git',*args],encoding='utf-8') +files=[root/'AGENTS.md',root/'CLAUDE.md',*sorted((root/'docs/project-process').rglob('*.md')),*sorted((root/'docs/v2').glob('*.md'))] +issues=[]; links=0 +for p in files: + s=p.read_text(encoding='utf-8') + if any(ord(c)<32 and c not in '\n\r\t' for c in s): issues.append(f'control character: {p}') + for target in re.findall(r'\[[^\]\n]*\]\(([^)]+)\)',s): + target=target.strip('<>').split('#')[0] + if not target or re.match(r'^[a-zA-Z][a-zA-Z0-9+.-]*:',target): continue + links+=1 + if not (p.parent/target).exists(): issues.append(f'broken link: {p.name}: {target}') + for block in re.findall(r'(?:^\|.*(?:\n|$))+',s,re.M): + lines=block.splitlines() + if len(lines)<2 or not re.match(r'^\|[\s:|\-]+\|$',lines[1]): issues.append(f'table without header: {p.name}: {lines[0][:80]}') +s=(root/'docs/v2/01-requirements.md').read_text(encoding='utf-8') +old=git('show','47ec30a:docs/v2/01-requirements.md') +counts={} +for kind,count in [('BR',44),('E',26),('AC',45)]: + ids=re.findall(r'^\| ('+kind+r'-\d+) \|',s,re.M) + expected=[f'{kind}-{i:02}' for i in range(1,count+1)] + if ids!=expected: issues.append(f'{kind} IDs invalid: {ids}') + old_ids=set(re.findall(r'^\| ('+kind+r'-\d+) \|',old,re.M)) + if not old_ids.issubset(ids): issues.append(f'{kind} baseline IDs lost') + counts[kind]=len(ids) +rows=re.findall(r'^\| AC-\d+ \|.*$',s,re.M) +for row in rows: + if not all(t in row for t in ['Given','When','Then']): issues.append(f'not GWT: {row}') +covered=set(re.findall(r'\b(?:BR|E)-\d+\b','\n'.join(rows))) +required=set(re.findall(r'^\| ((?:BR|E)-\d+) \|',s,re.M)) +if required-covered: issues.append(f'uncovered: {required-covered}') +if covered-required: issues.append(f'undefined: {covered-required}') +u=(root/'docs/v2/URD.md').read_text(encoding='utf-8') +uids=re.findall(r'^\| (AC-U\d+) \|',u,re.M) +if len(uids)!=len(set(uids)) or len(uids)!=9: issues.append('URD acceptance IDs') +for row in re.findall(r'^\| MOD-.*$',u,re.M): + if not set(re.findall(r'AC-U\d+',row)).issubset(uids): issues.append(f'URD missing AC: {row}') +changed=git('diff','47ec30a','--name-only').splitlines() +if any(not (p.startswith('docs/v2/') or p == 'CLAUDE.md' or p.startswith('test-evidence/20260929-v2-handoff/')) for p in changed): issues.append('change outside documented scope') +# Cross-document stable ID references (expanded ranges validated by endpoint IDs). +valid={kind:set(re.findall(r'^\| ('+kind+r'-\d+) \|',(root/'docs/v2/01-requirements.md').read_text(encoding='utf-8'),re.M)) for kind in ['BR','E','AC']} +for p in (root/'docs/v2').glob('*.md'): + for ref in re.findall(r'\b(?:BR|E|AC)-\d+\b',p.read_text(encoding='utf-8')): + if ref not in valid[ref.split('-')[0]]: issues.append(f'undefined cross-document ID: {p.name}: {ref}') +hand=(root/'docs/v2/15-development-handoff.md').read_text(encoding='utf-8') +if re.findall(r'^\| (T\d+) ',hand,re.M) != [f'T{i:02}' for i in range(14)]: issues.append('task queue IDs') +for p in (root/'docs/v2').glob('*.md'): + # Verify local heading fragments using GitHub-style punctuation removal. + for target in re.findall(r'\[[^\]\n]*\]\(([^)]+)\)',p.read_text(encoding='utf-8')): + if '#' not in target or re.match(r'^[a-zA-Z][a-zA-Z0-9+.-]*:',target): continue + rel,frag=target.split('#',1); dest=p.parent/rel if rel else p + if dest.exists() and dest.suffix=='.md': + heads=re.findall(r'^#{1,6} (.+)$',dest.read_text(encoding='utf-8'),re.M) + slugs={re.sub(r'[^\w\- ]','',h.strip().lower()).replace(' ','-') for h in heads} + if frag not in slugs: issues.append(f'broken anchor: {p.name}: {target}') +for row in re.findall(r'^\| E-\d+ \|.*$', (root/'docs/v2/01-requirements.md').read_text(encoding='utf-8'),re.M): + if not re.search(r'\b[A-Z][A-Z_]+\b',row) or len(row.split('|'))<5: issues.append(f'error binding missing: {row}') +if not (root/'CLAUDE.md').read_text(encoding='utf-8').startswith('@AGENTS.md'): issues.append('Claude must import canonical rules') +adr=(root/'docs/v2/09-decisions.md').read_text(encoding='utf-8') +adr_ids=re.findall(r'^\| (ADR-\d+) \|',adr,re.M) +if adr_ids != [f'ADR-{i:02}' for i in range(1,15)]: issues.append('ADR IDs invalid') +old_adr=git('show','47ec30a:docs/v2/09-decisions.md') +if not set(re.findall(r'^\| (ADR-\d+) \|',old_adr,re.M)).issubset(adr_ids): issues.append('ADR baseline IDs lost') +check=subprocess.run(['git','diff','--check'],capture_output=True,text=True) +if check.returncode: issues.append(check.stdout+check.stderr) +report={'base_revision':'47ec30a562f12864b7485bb7a43b967fa8f5b755','cwd':str(root),'command':'backend/venv/Scripts/python.exe test-evidence/20260929-v2-handoff/check_docs.py','markdown_files':len(files),'local_links':links,'ids':counts,'status':'PASS' if not issues else 'FAIL','issues':issues,'runtime_tests':'Not run: documentation-only change','hashes':{str(p.relative_to(root)).replace('\\','/'):hashlib.sha256(p.read_bytes()).hexdigest() for p in files}} +(out/'validation.json').write_text(json.dumps(report,ensure_ascii=False,indent=2),encoding='utf-8') +print(json.dumps({k:v for k,v in report.items() if k!='hashes'},ensure_ascii=False,indent=2)) +summary = '# 文档检查报告\n\n日期:2026-09-29。状态:' + report['status'] + '\n\n' +summary += f"检查 {len(files)} 份Markdown、{links} 个本地链接;44条BR、26条E、45条AC全部唯一连续并有GWT覆盖;跨文档引用、任务T00–T13、锚点、错误码与表格检查。\n\n" +summary += '命令:`backend/venv/Scripts/python.exe test-evidence/20260929-v2-handoff/check_docs.py`;cwd为仓库根。基线47ec30a,最终文档SHA256见validation.json。\n\n' +summary += 'git diff --check及范围检查结果见validation.json;业务源码/原型未改变。纯文档未执行verify.py或模型/CLI实测。独立业务/技术审阅未完成,不能据此进入未过门禁的实现。\n' +if issues: summary += '\n问题:\n' + '\n'.join('- '+x for x in issues) + '\n' +(out/'REPORT.md').write_text(summary,encoding='utf-8') +raise SystemExit(bool(issues)) diff --git a/test-evidence/20260929-v2-handoff/validation.json b/test-evidence/20260929-v2-handoff/validation.json new file mode 100644 index 0000000..badced8 --- /dev/null +++ b/test-evidence/20260929-v2-handoff/validation.json @@ -0,0 +1,48 @@ +{ + "base_revision": "47ec30a562f12864b7485bb7a43b967fa8f5b755", + "cwd": "F:\\mini-OpenClaw-local-stable", + "command": "backend/venv/Scripts/python.exe test-evidence/20260929-v2-handoff/check_docs.py", + "markdown_files": 31, + "local_links": 135, + "ids": { + "BR": 44, + "E": 26, + "AC": 45 + }, + "status": "PASS", + "issues": [], + "runtime_tests": "Not run: documentation-only change", + "hashes": { + "AGENTS.md": "51792b63ff8857f3875a03d8242fb5a2e0898f9a28a2684e5fb61e6e2f2c2271", + "CLAUDE.md": "592a82b17f292d81ba8783446e316129ad0737cf25256efe6b18af780712d083", + "docs/project-process/01-requirement.md": "0a17308dcfa5f1e0fac84507e9aec8bdf7877880f609ceee7352ea41d62ebe41", + "docs/project-process/02-architecture.md": "1ed42b1aba3e5916132138550f4f1687c0d21e33c47140a4f12f603ce04a3a83", + "docs/project-process/03-detailed-design.md": "2430148d69d96be36d34868a3b936babbf88729a4e5a82d329b4e81939267faa", + "docs/project-process/04-ui-spec.md": "c10134f8480613ef3b3089e287f099905e061c15df0016a0e9ea1767464aab6e", + "docs/project-process/05-implementation.md": "541df8d50d69771c7ddb0332838c77b231b2a37fc07e9b2586a4fcb264d7ca67", + "docs/project-process/06-validation.md": "f41f1a531c8a43a4b0cde0c0d918514d6936fbb7ae066720b278a68ea65145d8", + "docs/project-process/07-delivery.md": "1fa36286bb50605a5e59cd3d7fbe2acf32778f4801b1f49c97185cebacd14f55", + "docs/project-process/08-learning.md": "d69aac3638523ec8f90ee400a2dd79bb1bb64726de93b3817d771e8b5105f726", + "docs/project-process/README.md": "44892f59d5efa77f0ba4070d179bddf500a501902cd17de23c9c75d7290dea33", + "docs/project-process/templates/URD-Template.md": "d55ff174bf88aaecbdf0b24a1d3d70ca6b1a609fb01182acf361d348d677b46a", + "docs/project-process/XINGBANG-ADAPTATION.md": "f7f88b86dd6bdabe597ee0decac2ef381b8c1dd74bb734c6f64a0d5b89af0f43", + "docs/v2/01-requirements.md": "c969a38b2bdf3534f8026a4fb7b9ae9f9435ed7064f5e89d8faf08dbcaa28e15", + "docs/v2/02-architecture.md": "147a26c4edd754536a986078de1a4b9b1d24afa10e6b4259105b83e54fde6199", + "docs/v2/03-detailed-design.md": "496fc1086449545f7186f7057f85eca045959c2131c55afee7a12e4bbbebeaf1", + "docs/v2/04-ui-spec.md": "3a200ea2bf525f1bde9517651154710eb41f84343f56b3cb3813fcc1513ad04a", + "docs/v2/05-implementation-plan.md": "4e30b8dd39ddf653620a9af8e6d5596771f50dd4e026a7c351b6d542ee2390d8", + "docs/v2/06-validation.md": "82a693276dc1bef5fb9d83e389d743d1942b50914c569268ac376b00048c88fd", + "docs/v2/07-deployment-and-gitea.md": "c0e0f3daf46ddc8de1c90cae52abd6481eb784d7bd4031c8340775aa90d0439f", + "docs/v2/08-data-pilot-and-demo.md": "ebae5c0a1e6768e145b8740077e479b15bc2da46d290e494baab06117f3c1b7e", + "docs/v2/09-decisions.md": "14e67a46d8488f8b7d86cd370531188f1463202806135c3ac195588fdf83492e", + "docs/v2/10-delivery-record.md": "f1e2193cf63dd5969b804bb389bb76e65ca670aa72f28c571bd00dfbfd58cf5d", + "docs/v2/11-judgment-providers.md": "4366df02f1553da12ef81b75b4538356ff88973c5b66f0b4bcf9674ddd14c7f3", + "docs/v2/12-prototype.md": "4b53ab12a472743a4005839813239d0b68d317d8b317c545b10b12a7d7265ca6", + "docs/v2/13-probability-prototype.md": "d63115e0764ab5aa43189d9ce285ac8ba3084f0c3574295e60906a2247138b66", + "docs/v2/14-experience-loop.md": "c6b95ff1227597e20c8469e33793558cecb5c0a49c126872d98b7fc1d23754de", + "docs/v2/15-development-handoff.md": "5bfbbaa529e1c8789e1a3bd3dcd8770a65b60900187556c18c95d1e074541cd2", + "docs/v2/DESIGN.md": "3899bd11cf8b78cef44f3b6490b6d8a4b916bbdbeeb62ee1d02d23530497e114", + "docs/v2/README.md": "c6272aa02df5c01e6d24801458bc741d62cf9850c15e40c44bbfdc3023e2feeb", + "docs/v2/URD.md": "75bf2b68e1302a9bc344ab34cba41c44bccf880ccead38e738622013eeb1bcea" + } +} \ No newline at end of file