Commit Graph

860 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 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 91754e05bd 补上 caliber_trial 进系统来源时漏改的断言
试跑是服务端派生的只读运行,计进使用统计会把「试一下」算成「在用」。
2026-11-03 23:11:45 +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 1e6fec98c1 补一条端到端:文档草稿接上运行后图能过校验,且在发布前对问数不可见 2026-11-03 22:59:47 +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 97710463fe 补子图查询进入父图账本比对的回归测试 2026-11-03 19:14:23 +08:00
ThearchyHelios 89817a6ef4 修正旧图金样对新增口径内容指纹的断言 2026-11-03 19:12:41 +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 30423a0686 可验证报告那条新测试按列名找结果表的格:S8 起出处面板写结果表记的列名(占变化的比重),不把列 id(share)当叫法 2026-10-21 16:27:43 +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 316863b2e0 零售样例题集的试算:退款金额两边都按两位小数比(SQLite 的 ROUND(SUM(amount), 2) 出来是浮点,6448.19 存成 6448.1900000000005,逐字比会随数据变而失败;main 上同样失败) 2026-10-21 16:19:28 +00:00
ThearchyHelios e225fcdd2c 合入第 2 波复核修复 S3、S7、S8、S10、P1:分析卡上写在验证什么的那句照实说是模板作者写的、分析步骤的编号写明是哪一层、证据面板的格写列名与总数按服务端渲染、注释归位、窄屏收起工具栏的改名图标 2026-10-21 16:17:20 +00:00
ThearchyHelios 28e7b0e12b 测试:占比、变化率、权重按百分数显示(第 2 波 S1)——每种实测情况一条断言:正文引用 [[a:A1.top_share]]、[[v:A1.r0.share]]、[[v:A1.r0.pct]] 没写换算时取结论记的格式(61.9%、-14.6%),写了换算的照写作者的;整表按格式展开;写作目录的具名的数与结果表按格式写;证据面板接口的具名的数、结果表的格、整体比率那一格(空格写「—」);导出页与可验证报告照引用渲染;老文档(3 版)照原样、复核不判对不上,按新规则重渲染才判对不上。另钉住各算子填了哪些列、pct 与 pp 的写法、同输入两次 run 逐字节相同、复算逐字段相同 2026-10-21 15:55:51 +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 b0b8d3ef04 评测页分析期望的参数格和分析卡用同一份:CaseEditor 原来自抄的 PARAM_FIELDS 去掉,改用 canvas/analysisItems.paramSpecs(差异检验的比率、均值、逐行三模式也带上期次三格了,和服务器参数模型一致);参数叫法只剩 lib/termsAnalysis 一份(EVAL_TEXT.analysis.param/basis/grain 引用 ANALYSIS_TEXT.node),格子的取值转换也用 paramText/paramValue,期次格保留 {{ }} 时间变量
- 参数格:basis、grain 两份下拉带上空着的缺省项(和分析卡同两行),逐行的值列、只比这几对等叫法跟分析卡一致
- test_frontend_eval_unions.py 新增一条:paramSpecs(含 PERIODS)的参数名和服务端各参数模型的交集/并集逐个对得上、评测页引用的是 paramSpecs、三张叫法表引用 ANALYSIS_TEXT.node
2026-10-21 14:57:12 +00:00
ThearchyHelios 454e82e211 分析测试的「今天」按题集的时区取,不看本机时区:题集里的期次(上周、本周)按 suite.timezone 算,生成虚构库、判今天是不是周一也照它,本机在别的时区(或跨午夜那几个钟头)时两边不是同一天
- test_eval_analysis_runs.py:TZ 从题集读,新增 now()(datetime.now(ZoneInfo(TZ))),生成库用 now().date(),原来写死的 Asia/Shanghai 去掉
- test_eval_analysis_suite.py:从题集内容取时区算今天,判周一也按它
- test_evals_api.py:零售样例题集的「今天」同样从题集取时区
2026-10-21 14:57:06 +00:00
ThearchyHelios d211d2fac8 评测页的分析方法、模式叫法改为引用 lib/termsAnalysis 那一份(原来 termsEval 另抄了一份 OP_LABELS / MODE_LABELS):EVAL_TEXT.analysis.op / mode 直接用 ANALYSIS_OP_LABEL、ANALYSIS_MODE_LABEL,字一样、界面不变。tests/test_frontend_eval_unions.py 改成读 termsAnalysis.ts 的两张表和契约逐项对,并守住评测页引用的是这一份 2026-10-21 20:03:54 +08: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