Commit Graph

870 Commits

Author SHA1 Message Date
ThearchyHelios 9d8b41430e 完善口径管理、主动调查与后台任务,修复通用问题
- 完善口径编辑、只读试运行、统一质量验证与执行语义指纹
- 增加可执行指标约束、有预算的主动调查和过程评测
- 提取发布检查、证据读取与起草服务,支持任务停止、重试和检查点恢复
- 增加版本传递影响分析,修复并发覆盖、敏感值遮罩、异常评分及页面状态问题
- 修复 SQLite 复合查询追溯和 microVM 可选依赖缺失处理
- 纳入当前设计文档及部署配置调整

验证:相关主回归 3822 项通过,4 项跳过、8 项预期失败;补充回归通过。
前端构建、文案检查及 git diff --check 通过。
全量检查仍有环境权限、PostgreSQL 可选依赖和既有部署配置、SQLite 文件基线差异导致的未通过项。
2026-11-06 17:14:45 +08:00
ThearchyHelios 5f0b2359ac 入口只留每次都会变的东西,固定条件写死在 SQL 里
实测同一份文档:入口从 7 个(start/end/factory_code/object_id/line_code/gc_code/scx_code)
降到 2 个(start/end)。

提示词加了四条:同一维度只做一个入口(factory_code 和 gc_code 是同一件事)、编码和主键不当
必填入口、跨表编码在 SQL 里 JOIN 映射、可选维度写成空值不过滤;入口上限 4 个,超了照实报
出来但不悄悄删(删了 SQL 还引用着)。起草页多一栏「固定条件」:工厂、产线、属性组填这里,
写死在 SQL 里,不变成每次都要填的参数。
2026-11-04 14:47:23 +08:00
ThearchyHelios 1048905095 必填入口没有值时停在 needs_input,不再把试运行判成失败
草稿图建出来后,start/end 这类必填入口往往没有缺省值,系统不会替你编日期去跑。现在记成
needs_input:入口字段做成可填表单(日期预填七天前/今天,可改),点「试运行」按这些值跑
一次;缺值仍回 422,不会发请求。试运行只跑取数与口径卡,参数按发布同一套规则校验。
2026-11-04 13:35:21 +08:00
ThearchyHelios 62c8702478 跨轮重复的未决问题只留一条
十轮起草每轮都会重新问一遍同一件事,68 条问题里有一半是重复。按第一个分句去重:问的是
同一件事就只留先出现的那一句,措辞不同的仍然留下,交给人判断。
2026-11-04 09:56:42 +08:00
ThearchyHelios 97cd9498a4 入口字段声明不一致时合并,不把整份草稿判死
同一份文档分十轮起草,各轮对 factory_code 的必填/类型声明常对不上。原先直接抛错,34 条
指标的草稿因为一个字段的 required 不同整份作废。现在必填取并集、类型取更宽,每一处不一致
记一条说明摆在入口字段下面;建图和界面共用同一套合并逻辑。
2026-11-04 09:54:16 +08:00
ThearchyHelios 939f0f3448 起草上限放到 10 轮 60 条
实测同文档 6 轮只覆盖 22 条(每轮 3–5 条),剩 23 条撞在轮数上限上。按实测节奏放到 10 轮。
2026-11-04 09:28:54 +08:00
ThearchyHelios ec8ee6c92a 起草自动续跑:多轮覆盖 uncovered,最多 6 轮 40 条
每轮收一组指标、写一次进度(第几轮、覆盖几条、还剩几条),直到没有新指标、uncovered
空了或到上限。中途每轮落库,页面能看到「第 2 轮 · 已覆盖 12 条 · 还有 27 条」,不再是
一个转圈的空白。
2026-11-04 09:24:37 +08:00
ThearchyHelios e6c8ee2827 一张草稿图支持多个取数节点
一份文档里的指标常常分属不同粒度、不同表,一条 SQL 装不下。build_graph 改成接收多组
{sql, entry_fields, metrics}:一组仍叫 fetch,多组叫 fetch_1…,每组指标的表达式改写到
自己的取数节点,指标 id 全局重排,入口字段合并(同名不同类型直接报错,不静默取舍)。

同时把「文档被截」和「目录被截」拆开:以前目录超长也报「文档太长」,界面在骗人。
2026-11-04 09:24:37 +08:00
ThearchyHelios 8b2f01d15d 目录按文档点到的表优先展开;模型提问不再算起草失败
这个数据源的目录渲染出来十万字符,被截到两万四,kpi_info 的 attribute01…54 全在被砍掉的
后半段,模型看不到列就只能如实列问题——界面却把它记成「起草失败」。

现在文本按「概览 → 全量表索引 → 全量列名 → 文档点到的表展开」排,预算不够先丢最后一段,
列名一个不少。模型一条指标都没写、但把缺什么说清楚时,草稿落在 questions_open,问题原样
留下来,不再报失败。
2026-11-04 08:54:42 +08:00
ThearchyHelios 8682deb447 起草按「能共用一条 SQL 的一组」进行,并抢救被截断的回复
实测:一条 SQL 枚举十几列 CASE WHEN 就把输出额度吃光,文档里十几条指标一条都写不出来,
界面只报「没有一条指标通过校验」。现在提示模型一次只起草同组指标(最多 6 条)、SQL 写短,
其余的进 uncovered;回复被截断时按完整片段抢救指标和 SQL,失败原因里写清模型实际交回了
什么形状,不再只说没有指标。
2026-11-04 08:37:52 +08:00
ThearchyHelios 13f1158191 口径起草一次到位:生成取数图并自动试运行,不再要求人工接一次运行
「不从指标定义编译 SQL」管的是事后比对的基准,不是起草。起草照样让模型写 SQL,但只允许
目录里的表和列、单条只读 SELECT、入口字段必须先声明;每条定义仍要能逐字对上原文。

起草成功即建工作流与 v1;试运行只跑取数与口径卡(derive.caliber_probe),不触发报告撰写,
也不会因为没有可用模型就判这份口径不行。接上一次运行保留为辅助入口。
2026-11-04 00:30:26 +08:00
ThearchyHelios 5a29bcd8a6 口径试跑归入不参与「最近一次封存」的来源
加了来源没归类,test_shares 会先失败。试跑是探索运行,不该被看板当成最近一次正式运行。
2026-11-03 23:26:36 +08:00
ThearchyHelios 1cd9cab7b4 同义词随定义一起留在口径卡上
文档里叫「月活」,卡上指标叫「月度活跃买家」;同义词丢了,以后按名字找这份口径就永远对不上。
合并时带上(大小写与空白不算新说法),并让口径描述把它交出去。
2026-11-03 23:08:28 +08:00
ThearchyHelios 43a38e926c 起草失败单独记一种状态,别再停在「起草中」
没有可用模型、模型回复读不懂时,草稿此前一直留在 drafting,界面会以为还在跑。现在置 failed
并把原因写进 error;补上真指标后 PATCH 仍能把它推回正常流程。
2026-11-03 23:07:01 +08:00
ThearchyHelios f697ab7ed2 口径详情给模型看定义说明
文档起草过来的口径,定义是它唯一带着的业务边界(适用范围、不包含什么)。此前 look 只给
指标式和单位,模型只能凭名字猜这份口径答的是不是这个问题。定义压成一句、限 240 字,
概览一行不加。
2026-11-03 23:04:58 +08:00
ThearchyHelios 7f66985dba 口径草稿:从业务文档抽定义,再从一次真实运行接上取数路径
新增 caliber_drafts 表与 /api/ledger/drafts 一组接口:抽取在后台跑,文档缺失整单拒绝,
有未决问题时停在 questions_open,问题清完才到 path_pending。

接上运行沿用从运行固化的建图逻辑,定义按同名或同义词并入指标卡,expression 与 id 不动;
文档引用记进 origin.documents,复核能落回具体段落。接入只产出可试跑的草稿,不发布、不发起运行。
2026-11-03 22:50:14 +08:00
ThearchyHelios 51daa7b96c 把从运行固化的建图部分抽成 build_graph,供文档草稿接上数据路径时复用
行为逐字不变:节点 id、顺序、报告配置、出口契约都与原来一致,test_ledger_certify
的断言一条未改。
2026-11-03 22:42:32 +08:00
ThearchyHelios 4f0aa62dcc 业务文档起草口径草稿:只产出定义与逐字引用,不产出取数
文档里写的是业务说法,不是库里的表和 SQL。模型回复里出现 SQL、表名、列名的一律丢弃;
每条定义必须能在原文里按归一化空白逐字定位,定位不到就不进草稿。草稿在 path_pending
状态下不是合法图,因此不写进 workflows.graph。
2026-11-03 22:42:28 +08:00
ThearchyHelios 753c35918d 复盘修正:试运行不计入统计、评估标签遮罩、规则/评估卡可组合 2026-11-03 21:23:08 +08:00
ThearchyHelios 4bf9e56979 支持评估型指标:rubric 加权评分、等级与 assessed 标签 2026-11-03 20:52:29 +08:00
ThearchyHelios e1d63e7389 规则 DSL 编译成只读 SQL,并用 fixture 验证 2026-11-03 20:50:06 +08:00
ThearchyHelios 6e7f2a5ce8 支持规则型指标:单元格条件确定性求值与 derived 标签 2026-11-03 20:36:04 +08:00
ThearchyHelios 37657e24c3 支持外部常量指标:来源、生效日期、过期降档与 external 标签 2026-11-03 20:32:55 +08:00
ThearchyHelios 214a3367ff 指标定义卡与参数进入校验、descriptor 和目录页 2026-11-03 19:45:41 +08:00
ThearchyHelios 68af29a180 增加口径目录页与试跑:入口表单、依赖说明和只读试跑 2026-11-03 19:43:39 +08:00
ThearchyHelios aeaca4ce69 记录口径调用审计:compose 与正式出具各记一条参数指纹 2026-11-03 19:38:00 +08:00
ThearchyHelios 5eb1c8ff00 增加口径可调用 descriptor:入口 Schema、依赖与出具策略 2026-11-03 19:34:28 +08:00
ThearchyHelios 539119cf5c 分析结论记录说法模板版本:复算时版本不同不误报文字差异 2026-11-03 19:12:27 +08:00
ThearchyHelios 174375c6c7 新设遮罩列时清理目录里的码值、含义与备注 2026-11-03 18:53:39 +08:00
ThearchyHelios 90597d5540 口径增加内容指纹:指标集与账本候选记录定义哈希 2026-11-03 18:47:32 +08:00
ThearchyHelios ce2f68a373 口径取数 SQL 增加书写 lint:取整、补 0 在画布提示并在受管发布时拦截 2026-11-03 18:36:26 +08:00
ThearchyHelios cf30f999f6 验收复核查出的三处:有量纲比率的效应值(结构效应、自身效应、合计影响、变化)照原值显示,不再乘一百说成百分点(客单价影响 -11.12 元 / 单以前显示 -1,112.1 个百分点);只读一张表、目录还没维护时分析范围照实说目录没维护,不说成对不上目录里的列;写作规则补一条不写重复判定语开头的引言 2026-10-21 18:08:59 +00:00
ThearchyHelios 9219df8190 真实模型验收查出的五条修正:①比率拆解里比率本身是有量纲的比率(客单价,元 / 单)时不套百分数,以前 160.76 显示成 16,076.0%,各段分子都不超过分母(退款率这类占比)照旧按百分数;②写作规则补两条——判定语一句只引用一份结论、不把几份判定语用逗号拼成一句,「核对不了」是系统的核对说明不是结论;③说法核对的来源判断看整个分句(主来源写在判断词后面的「主要由订单量放大带来」也能认),点名的段按去掉结尾量词的词根兜底(订单量 认 订单数);④数据目录还没维护时候选维度照实说目录没维护、提示怎么补,不说成认不出事实表;⑤评测估不出每题花费时金额照 0 记但记成未计价,账本上看得出;金额上限照旧按累计金额判 2026-10-21 17:33:49 +00:00
ThearchyHelios 7b47ce1724 合入第 2 波复核修复 S1:分析结论的占比、变化率、比率之差按百分数 / 百分点显示——结果表带每列的显示格式、具名的数带格式,证据渲染、整表、写作目录、证据面板、导出、可验证报告都按它;显示规则 4 版,老文档按记下的版本复核;空格写「—」
# Conflicts:
#	backend/tests/test_analysis_pages.py
2026-10-21 16:23:39 +00:00
ThearchyHelios 709a50208a 合入第 2 波复核修复 S2、S5、S6:关分析工具那一臂挡分析卡与用了分析的子工作流、节点手册里不再出现分析;问题意图词表与自查那句进评测的提示词指纹;问题意图不把问构成当来源、不把问数据质量当异常 2026-10-21 16:22:21 +00:00
ThearchyHelios eade5aab5d 关分析工具那一臂挡分析卡:图里有分析卡、嵌套的子工作流里有分析卡或分析工具都挡回去改;关掉时节点手册里不再出现分析卡、分析工具和分析相关的配置(改写与整段去掉);问题意图词表版本与自查交回的那句进评测的提示词指纹;问题意图不把「哪个贡献最多」当来源、不把「数据是否正常」当异常;评测「关」那一臂的替身改成照样试着加分析卡、靠真代码挡 2026-10-21 16:19:49 +00:00
ThearchyHelios 31ed7a96f3 证据面板的计算一步照服务端写好的字显示:具名的数按结论记的格式(占比 61.9%,不再写 0.618556701031)、结果表的格同样(变化率 -14.6%),空格写「—」不写 null;列类型照结果表的 column_types。比率拆解的整体比率那一格和对照的那一格也按格式写(3.5%,不是 0.035)。前端照原样显示(只补一句说明) 2026-10-21 15:55:20 +00:00
ThearchyHelios 55376fd332 引用分析结论时没写换算的按结论记的格式渲染(显示规则 4 版):[[v:A1.r0.share]]、[[a:A1.top_share]] 取这一列 / 这个数的格式(占比、变化率按百分数,比率的变化按百分点),写作者自己写了换算的照他的;实际用的换算记在引用上,展开整表时每一格也照写。写作目录的具名的数、结果表的行按同一格式写。3 版及以前组装的文档照当年原样显示,复核按记下的版本,不判对不上。pct、pp 两种换算的写法(不是 0 的不写成 0.0);可验证报告按引用上的换算、4 版起按结论记的格式渲染,不认识的显示规则版本(5 版)判无法核对 2026-10-21 15:55:11 +00:00
ThearchyHelios 3ecc6223df 分析算子给结论里以比率存的列和数记换算:契约加 ResultTable.formats、AnalysisResult.value_formats(换算同 [[m:]] 的后缀,另加 pp 表示百分点),各算子逐个填全——可加、乘积拆解的 pct、share;比率拆解的 w_*、r_* 记 pct,mix、rate、total 是比率之差记 pp;波动基线按变化率比较时的 change,趋势的相对斜率;差异检验比率模式的 a_value、b_value 记 pct,diff、ci_lo、ci_hi 记 pp;values 里的 pct_total、top_share、top_k_share、mix_share、rate_share 等。都为空时整项不写,结论和以前一字不差;run 与 recompute 逐字段相同、同输入两次 run 逐字节相同照旧成立(tests/test_analysis_run 的形状检查认这两项可选) 2026-10-21 15:54:46 +00:00
ThearchyHelios c54196326f 证据面板的分析结论:结果表的格写列名,总数那一格的值按服务端的写法显示。①「这一处引用的是 结果表第 1 行『share』」原来写的是列 id,现在服务端在 cited 上另给 column_label(结果表记的 labels,如「占变化的比重」),目录条目也带上 labels,证据面板、读屏的出处、导出页、可验证报告都照列名写;② 输入里「总数那一格 … = 159175.18」和同一节的闭合核对「159,175.18」两个写法并排,现在服务端另给 value_rendered(render_cell,千分位、NULL 写「—」,和闭合核对同一个写法),三处界面照原样显示。结果表数的换算(比率、空格)不在这次改动里 2026-10-21 15:53:27 +00:00
ThearchyHelios b919890b7b 问数据时间线的分析一步、协作成员的分析:编号照实说是哪一层。Agent 工具那一步标题写「变化拆解(可加) · 本节点 A1」——编号是这份 Agent 自己的分析容器里的(交回模型的「【分析 A1】」),报告目录里的 A1 按整次运行的台账编,图里还有分析卡时就不是同一个,不再冒充报告里的编号;分析卡的一项照旧写这一项的标识。协作成员的分析不带编号(成员的结论还进不了台账,照它写「· A1」会和报告里点名的结论对不上),event_view 交回 alias=None。check-decode、check-stream、协作成员那条测试照新写法改 2026-10-21 15:52:58 +00:00
ThearchyHelios 9461c03a63 分析结论的「在验证什么」照实说谁写的:分析卡上那一条是模板作者写的,标「分析卡上写的『在验证什么』」;Agent 现场做的照旧「Agent 写的假设」(台账条目带 item 的是分析卡、带 call_id 的是 Agent)。服务端按 origin 给 hypothesis_label、hypothesis_note 两句,证据面板、导出页、可验证报告都照原样显示,不自己拼。测试:证据接口两种都测,分析卡的链、导出页、核对页各加一条断言 2026-10-21 15:52:19 +00:00
ThearchyHelios 28c538a72f 趋势判断工具的说明开头改成契约的叫法「趋势判断:」(原来写「趋势:」,另外四个工具都以 OP_LABELS 的叫法开头);测试补一条:五个分析工具的说明都以契约里这种分析的叫法加「:」开头,助手的工具清单、证据面板、评测写的是同一种说法 2026-10-21 20:02:41 +08:00
ThearchyHelios 03cedbaf1d 合入 W2-c 前端:分析卡节点与分析项编辑器、报告节点两个新字段、设置「分析」一节、问数据时间线的分析步骤与出具横幅三项、运行对比的分析卡一区、证据面板与正文接上分析结论(六步出处链、闭合核对、两期可比性、说法违规标注、分析范围)、可验证报告核对页与分析样本页、口径账本摘要防 NaN;服务端补分析工具事件里的判定与分析结论的单独出处接口
# Conflicts:
#	backend/tests/test_eval_schedule.py
2026-10-21 19:34:24 +08:00
ThearchyHelios cc2c7a00fb 可比性期望认正文里「两期不能直接比」的说法:说法表(engine/analysis_claims)照旧不加可比 / 不可比一类,说法核对不打回「本周数据不完整,不能直接比」这种谨慎的提醒;评分在 eval/judgements 另用一张只给自己用的小词表(_INCOMPARABLE:不能直接比、不可比、不具可比性、本期数据不完整、还没过完、只有几天、差几天、不满一周、天数不同、口径不同……;「无法比拟」「比不上」、不带「直接」的「没法比」不算)。期望是不可比、正文明确这么说了的,按「对但没引用」算;同一分句里前面有否定的、句子里前面有假设或疑问的、问句都不算;期望是可比的只能靠引用。读答案时有这类说法的句子也留下(sentences_of_doc、sentences_of_text)。测试:几种说法算对但没引用、找到的那一处照实写;假设、疑问、否定、差得远、无关的「不完整」算错;期望可比的正文怎么写都不算;说法表照旧不认这类说法。test_doing_nothing_and_saying_nothing_is_wrong 里原先「本周还没过完,两周不能直接比」算错的那条断言按新规则移到新测试里,改成算对但没引用 2026-10-21 19:32:38 +08:00
ThearchyHelios 8a6ad0e7a2 评测变体加「分析工具」开 / 关(缺省开)和「分析工具贡献」预设对照:eval/variants 的变体多一项 analysis {tools: on | off},只认这两个值、缺省开,不合规的照实拒(eval_variant_invalid,落到 variant.analysis);analysis_tools(变体) 读开关,加这一项之前存下的变体按开。eval/answer.TurnContext 加 analysis_tools,Driver 透传给 chat/drive.TurnDriver(再到 api/copilot.answer_ops):关的那一臂建图时工具清单不列分析工具、节点手册不讲分析卡;工作流题不建图,不受影响。同一变体(variant_key)认分析工具:开着时不写进去,和加这一项之前算出来的一样,以前的评测照样当基准、趋势线不断;关着时不同。指纹记 analysis_tools,对比的指纹差异写「分析工具:开 → 关」(老指纹里没有这一项的按开);变体那一句写「分析工具开 / 关」,结果页、A/B、估算照它显示。api/evals 的预设对照加 analysis_tools(variants.analysis_tools_preset:开、关两臂,名字「分析工具开」「分析工具关」,别的项照 variant 或题集的缺省)。测试:变体规范化、拒收、同一变体指纹、变体那一句、预设两臂和 Driver 拿到的开关、估算与 A/B 拒收(test_eval_runner);指纹差异的开、关和老指纹(test_eval_compare);真运行的「分析工具贡献」对照(test_eval_analysis_runs:关的那一臂助手看到的 system 里没有分析工具和分析卡、作答运行里没有分析结论、算错,开的那一臂对且可追溯,两臂共用期望、指纹和同一变体都不同) 2026-10-21 19:32:38 +08:00
ThearchyHelios 019676670b 可验证报告的核对页:正文里的判定语被改过时,原因写「正文显示「…」,分析结论里的判定语是「…」」。判定语的引用不带值(判定语就是结论里的那句话),原来照数字的写法拼成「引用的值是空值(NULL)」,读起来像引用本身是空的;具名的数、结果表的格照旧写引用的值和按显示规则应显示的字 2026-10-21 19:09:20 +08:00
ThearchyHelios 887d086261 合入 W2-a 想 + 文档:问题意图词表、分析方法定稿(analysis.method@2)、助手建图认分析卡与分析工具(分析类问题的形状、自查只挡一轮、关分析工具的开关)、复核信号并成一条只写说明、内置模板 ⑪「异动分析(可追溯)」、中英文档(新增 analysis 一篇、七对文档与升级说明、README) 2026-10-21 18:54:50 +08:00
ThearchyHelios 5a02d17bf2 助手建图加「关掉分析工具」的开关,给评测的「分析工具开、关」对照用:api/copilot.answer_ops 加关键字参数 analysis_tools(缺省真,和以前一字不差)。为假时给助手的工具清单不列五个分析工具(_tool_catalog),节点手册去掉只讲分析能力的三段(agent 段里分析类问题绑分析工具那一条、分析卡一整条、搭图规则第 7 条;报告段的引用写法和分析说法核对照留,node_reference),问数据的包装不给分析类问题那一条形状(ANALYSIS_SHAPE_PROMPT 抽成常量),问题意图那条自查不提;图里照样绑了分析工具的(Agent、协作成员、调用工具节点)按「绑定的工具不存在」挡(analysis_tools_off,交回模型去掉,改不好就不运行)。chat/drive.TurnDriver 加同名参数和属性 analysis_tools(缺省真),_generate 透传给 answer_ops;问数据页不暴露,eval/answer.Driver 之后按变体设。测试:关着时工具清单、手册、包装都没有分析,绑了被挡、改掉就运行;开着时绑了照常运行;没碰分析工具的一轮开、关交出的操作逐条一样;TurnDriver 透传 2026-10-21 18:47:10 +08:00
ThearchyHelios 94a6eb9c64 分析期望的两处小修:期望 SQL 只返回两期时补上的基期、本期写成文字交给分析工具的参数(期次是数的也认,算子按写出来的样子比);参数和结果对不上的原因前面写「第 n 个期望(贡献)算不出期望」,不再叠两个「的」。测试补逐题 E1 顺着下钻找到两层的查询 2026-10-21 18:30:08 +08:00