Commit Graph

1290 Commits

Author SHA1 Message Date
ThearchyHelios 8d9a712eae 业务本体与标准实体:跨源键值对齐、对账共变算子、健康证据链与实体助手
- 新增标准业务实体(CanonicalEntity)模型、确定性跨源编码翻译、后台候选实体扫描与文档驱动实体智能助手
- 新增指标本体图谱(factor / reconciles_with / upstream_driver)、DAG 防环校验以及 ontology_neighbors / source_health 内置工具
- 新增跨源对账(analysis_reconcile)与滞后共变(analysis_cochange)分析算子,打通 [[h:H1]] 数据源健康证据链、报告导出与本体消融评测
- 数据目录新增「标准业务实体」视图与候选审阅工作台,口径页集成指标本体拓扑面板与端到端浏览器检查
2026-11-12 12:57:53 +08:00
ThearchyHelios 2f90f0eb3a 口径台账:固定执行、验证审阅发布与增量重导入
- QueryCore 固定执行(K09):按已发布的不可变口径跑一次,交回类型化标量、发布/manifest 引用与逐查询证据
- 依赖闭包(K08):按选中的指标算出要拷的取数节点、要的入口字段,接进 derive / compose / metrics
- SQL 模板参数完整性(K01):试跑、组合问数、派生图、运行时取数共用一套语义,缺参数在渲染前就拒
- 受限字段变更服务(K03)与口径领域边界(K01):改动打在整图深拷贝上,身份与证据归属不可改
- 版本化受控模板绑定(K04):业务口径按显式绑定落到 SQL,对不上就报 unsupported / needs_update
- 验证记录(K05)与最小审阅:样例匹配不等于正式批准,审批人只从服务端身份取
- 发布依据清单(K07):发布时按不可变图物化内容寻址清单,正式用途按它判
- 增量重导入(K11)与 B/L/R 三方合并、受限自然语言修改提案(K12):只产候选,落图仍走既有写路径
- 接口与前端:口径草稿页接上字段变更、绑定状态、验证与重导入,新增 caliber-drafts / studio 检查脚本

验证:前端 tsc -b 通过。
2026-11-10 15:05:18 +08:00
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 0d5f9609e7 起草轮询窗口放到 15 分钟
实测 10 轮起草要 7 分钟,10 分钟窗口在慢一点的环境里会提前报超时。
2026-11-04 09:37:20 +08:00
ThearchyHelios 939f0f3448 起草上限放到 10 轮 60 条
实测同文档 6 轮只覆盖 22 条(每轮 3–5 条),剩 23 条撞在轮数上限上。按实测节奏放到 10 轮。
2026-11-04 09:28:54 +08:00
ThearchyHelios bf07944cf7 草稿页:起草进度、截断分两种说法、几十条指标可扫读
轮询窗口放宽到十分钟;文档被截和目录被截分开提示;指标默认收起摘要行,一屏看得到名字和
试运行的值。
2026-11-04 09:24:37 +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 a7b8f05587 草稿页列出这次没起草的指标
一组能共用一条 SQL 的指标起草完,文档里其余的按名称列出来,提示可以再起一份接着做。
2026-11-04 08:37:52 +08:00
ThearchyHelios 8682deb447 起草按「能共用一条 SQL 的一组」进行,并抢救被截断的回复
实测:一条 SQL 枚举十几列 CASE WHEN 就把输出额度吃光,文档里十几条指标一条都写不出来,
界面只报「没有一条指标通过校验」。现在提示模型一次只起草同组指标(最多 6 条)、SQL 写短,
其余的进 uncovered;回复被截断时按完整片段抢救指标和 SQL,失败原因里写清模型实际交回了
什么形状,不再只说没有指标。
2026-11-04 08:37:52 +08:00
ThearchyHelios d9d430dab6 草稿页改成看「定义、数、引用」再签字
试运行结果和入口字段直接摆在页面上;主按钮是去画布审改并发布,接上一次运行收进次要入口。
数据源改为必选并默认选中:没有目录就写不出取数 SQL。
2026-11-04 00:30:26 +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 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 8b80b59a15 口径草稿页:看引用原文、清未决问题、接上一次真实运行
列表按状态筛,抽取完成后轮询到出结果;被丢弃的条目单独列出原因,未决问题逐条处理完才
能接数据路径。入口挂在口径目录页头,不动全局导航。
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 80a479d723 合入:分析能力一轮(算、想、核六项 + 评测)
平台补上一层「确定性的数据分析」,补的是原来缺的那半:报告里站得住的数只来自 SQL 的格、口径卡的标量式和运行输入,而写作者被要求「说清变化和原因」,系统既不给原因从哪来、也不核对原因。本轮把「算什么」「怎么想」「怎么说」都做成可复算、可点开、可核对的东西。

算(五个算子,app/analysis)
- 可比性检查:两份查询是否只差日期、窗口是否一样长、本期是否整期、星期构成是否相同;按 SQL 里的格式串认周号算法(SQLite %W / %U、MySQL %U / %u / %V / %v、to_char WW / IW),算不出真实起止就判「核对不了」,绝不判完整;口径卡的指标用到两份同形只差字面量的查询时自动做一次,结果挂在指标上,出具时不可比记缺口、有条件可比只标注。
- 变化拆解:可加按维度算贡献(各段之和与总数闭合,不闭合不给占比、不下集中判断)、比率拆出结构效应与各段自身效应(中点对称拆法,能识别辛普森悖论)、乘积按 LMDI 拆因子,逐层下钻(上一层那一段的值做闭合)。
- 波动基线:把本期放回过去 N 期的历史,用中位数与 MAD 判常规波动、超出、明显超出;本期不完整、缺期、历史不够都照实说算不了。
- 趋势:Theil–Sen 斜率 + Mann–Kendall(小样本精确分布、并列修正、连续性校正),末尾连续同向期数。
- 差异检验:Wilson / Newcombe 区间、合并比例 z 检验与 Fisher 精确、Welch t、Holm 多重比较校正、去掉极值的敏感性。
- 统计全是纯 Python(不加依赖);数与判定语规范化、同输入逐字节相同;每份结论记方法版本、实际阈值、输入快照、现查的表范围、判定标准,按内容哈希寻址,复算逐字段相同才算核对通过。

想(分析型问数)
- 五个 agent 分析工具(analysis_decompose / baseline / trend / differ / comparable),参数只有「算什么」、没有阈值;绑了就注入一套分析方法(先可比性和基线、再拆因子与结构、由粗到细拆维度、找到主要来源再下钻一层、写明假设、拆了不集中也是结论、不作因果断言、算不了照实说)。
- 问题意图词表判断「为什么 / 是否异常 / 趋势 / 差异」这类问题;助手按分析类问题的形状建图并自查是否绑了分析工具(只挡一轮)。
- 结论末尾由系统写「分析范围」:查了什么、排除了什么、没拆的是哪些候选维度(候选维度从数据目录算,目录没维护就照实说没维护)。
- 内置模板 ⑪「异动分析(可追溯)」;评测变体加「分析工具开 / 关」对照与预设。

核(分析说法核对)
- 报告里的判断词(主要来自、集中在、拖累、分散、结构变化、异常、大幅、新高新低、正常波动、持续、趋势、显著高于、差异不大)必须挂对应的分析结论,而且判定、点名的段、方向要对得上;因果说法要有知识库原话或运行输入作依据,否则写成推测。
- 判定语由系统渲染,写作者只引用([[a:A1]]、[[a:A1.top_share]]、[[table:A1 …]]),不再自己下判断;分析结论里的占比、变化率按百分数、比率之差按百分点、有量纲的比率(客单价这类)照原值显示。
- 缺省「重写一次后标出」、不影响出具档位;受管级要求严格(重写后仍有就进出具缺口),出口独立复核。
- 修掉一个口子:引用模式下被引指标的输入追不到原始数据时,受管级记缺口降档,和证据面板的说法一致。

证据与界面
- 分析结论进证据台账编号 A1、A2…,按内容哈希寻址、随运行封存;出处链六步(判定 → 方法 → 计算 → 输入 → 复算 → 封存),网页证据面板、报告导出、可验证报告三处同一套;证据图多一种「派生自」的边。
- 分析卡:画布新增节点类型,模板里固定要做哪些分析、可写阈值覆盖、产出可接分支;分析卡里随数据变化的错误记成「算不了」不让卡失败。
- 前端:分析卡与分析项编辑器、设置「分析」一节(17 项)、问数据时间线的分析步骤、运行对比的分析卡一区、正文里判定语可点与说法违规标注、分析范围一段、出具横幅三项。
- 设置「偏好设置 → 分析」:阈值只来自这里的快照和分析卡上的覆盖,模型改不了。

评测
- 两种新期望:贡献(按维度的主要来源与方向)、判定(波动基线 / 趋势 / 差异检验 / 可比性),期望值由期望 SQL 的快照加同一套算子算出来,仍不许人填;评分沿用五种结论,评分规则第 3 版,提示词指纹包含分析方法与写作者的分析规则。
- 新建虚构库 retail_trends(26 周、埋了八个效应)与分析题集,现有零售库不动。

验收
- 后端全量 16026 通过;PostgreSQL 全量未跑(本轮没改表结构、没加迁移);tsc、check-copy、check-docs 通过;浏览器检查 14 项 5599 项通过,最后受影响的 5 项 2229 项重跑通过。
- 真实模型验收:隔离数据目录、虚构库,8 道分析题 × 分析工具开 / 关 × 每臂 3 次(48 次作答)。开:准确率 75.0%、可追溯准确率 58.3%;关:20.8%、0%;配对检验 p=0.031(开对关错 6 题、关对开错 0 题)。人工核 8 次作答的证据链、判定、说法,查出并修掉了:比率本身被套百分数(客单价 160.76 显示成 16,076.0%)、有量纲比率的效应值乘了一百、判定语整句搬进正文与「核对不了」当结论、因子正确主来源被判不符、目录没维护时的误导话术、评测估不出花费时按 0 预留却记成已计价。
- 遗留:可追溯匹配不核主口径一致性(会略微抬高准确率);未计价模型的金额上限不起作用(设计如此);「问数据」里有的模型会绕开题目要的口径(模型行为,评测分数会体现)。

升级说明
- 报告节点新增两个配置:分析说法核对(缺省「重写一次后标出」)、分析范围(缺省有分析结论时附上)。已发布的版本照常运行,只多一次重写和一处标注、不改档位;下次发布时按新的受管要求(严格)检查。
- 数据目录、数据库表结构、迁移都没有变化;老报告按记下的显示规则版本复核,结果不变。
2026-10-22 00:05:39 +00: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