Skip to content

Release v0.0.4

Choose a tag to compare

@weizxfree weizxfree released this 25 Sep 04:32
· 5 commits to main since this release

[0.0.4] - 2026-09-25

自 v0.0.3 以来的全部改动。镜像 knowflowai/analytics:v0.0.4(linux/amd64、linux/arm64)。

本版有几处行为调整(0.x 阶段的合同变化),升级前请看「变更」一节。

新增

  • 建模期用数据核对:字段、关系、指标旁可以就地查数(主标识唯一率与空值率、关系覆盖率与基数、指标取样、样例行),不必等到发布前质量报告。结果按对象内容寻址缓存:对象一改键就变,改名不会让已有结论失效。读缓存不碰业务库;真去量一次走限流,单条语句上限 8 秒,量不出来的结论不进缓存。新增接口 GET/POST .../fact-checks。
  • 列画像落库:AI 建模第一步算出的列画像(唯一率、空值率、取值分布)保存下来并绑定 schema 快照,建模页可以直接看到。
  • 数据否决 AI 断言的主标识:模型说某列是主标识时,实测唯一率低于 0.95 且行数不少于 100 就降为外部标识,并在争议说明里写出实测数字;没有画像时沿用规则结论,不凭空发明主标识。
  • 手工新建指标:界面只问「这个指标怎么算」——对一列做统计(原子指标),或由其它指标计算(复合指标);表达式免写,维度选列、复合指标选两个指标和一个运算。
  • 受治理原语 ENTITY_SHARE 与 RANK_OF:「满足条件的实体占比」「某个实体排第几」由编译器按意图展开(先按实体聚合再比阈值;先在全体上排名再取目标),不再靠提示词约定。这两类写错时 SQL 合法、执行成功,只是数字不对,编译器从 SQL 上判断不出来,所以只能做成原语。
  • 编译器新增检查:时间粒度不得比指标声明的 time_granularity 更细(S2SQL_TIME_GRANULARITY_TOO_FINE);声明了 requires_explicit_time 的指标必须带时间条件(EXPLICIT_TIME_REQUIRED);数值阈值必须是数字,如 '2万'(S2SQL_NON_NUMERIC_THRESHOLD)。
  • 层级树收进发布版本:DimensionValueSpec.parent_value 记录取值的上级,发布时读一次父子配对。按父级筛选(如父科目)能覆盖到下级明细,问数期不再读客户库。
  • 业务词典与取值业务名进入提示:词典声明的成员和受治理取值的业务名交给模型;答案里用到、但问题里没有精确命中的成员(即模型自己猜的)随本次回答一起报告。
  • 诊断:模型生成 SQL 失败时记下每次尝试的原始输出(截断),阶段明细上限提到 32 KB。
  • 评测:用例保存权威 SQL 与结果列,少样本示例不再凭投影现编。

变更

  • 作用域由模型在 FROM 中声明,取代 0.0.2 的「生成后逐个作用域试译、按成败反推」。目录按作用域分组呈现,模型写 FROM 作用域名;同一条查询能在多个作用域里翻译时,不再靠粒度收敛或弹卡猜测。
  • 主标识改为按需要求(对齐 Cube):单独一张表不需要主标识就能被问到,只有参与一对多连接、且带可加度量时才需要。每张实表都有默认计数:有主标识的数键(实体数),没有的数行(COUNT(*),说明里写明数的是行)。
  • 一对多扇出按主标识去重算对,不再一刀切拒绝:放大的连接照跑,SELECT DISTINCT(分组维度 + 事实根主标识) 把重复行塌回去,再接回事实根聚合。没有主标识时仍然拒绝;多对多永远不开放;已有安全路径的实体冻结路由不变。
  • 外部标识可以分组:只隐藏主标识(它等于按行分组),账户号、门店号这类外部标识可以作为分组维度;它们仍然不进取值字典。
  • 模型超时或候选被拒时直接拒答,不再退回规则兜底:规则兜底给出的往往是一个看起来正常的错误数字。
  • 问数默认不让模型思考:思维链不改变结构化输出的正确性,只增加延迟(实测 10.5 秒对 0.8 秒);可以通过配置打开。请求里指定的模型现在对 SQL 生成也生效,此前只作用于结果解读。
  • SQL 读超时默认 60 秒;整个问题有一个总时长预算。
  • 别名审核不再阻塞发布。
  • 提示词规则块收成固定常量:编译器已经会拒的写法删掉,组合写法改成经翻译器验证过的样例(4 → 11 条)。
  • 界面按 Ant Design 5 规范统一,主色改为 #2b7de9。

修复

  • 「某个值占整体多少」的分母被同一维度过滤成分子本身,结果恒为 1。
  • BETWEEN 区间谓词被误判为丢失条件而拒绝。
  • 零行的聚合结果被当成成功。
  • 裸数字、问题里的数字字面量被当成某个维度的取值。
  • Mapper 命中的成员不一定属于该数据集,现在按成员归属过滤。
  • 别名与父科目在查询期兑现。
  • 名字随作用域变化的标识列导致整份生成目录被放弃。
  • AI 建模:已评审的候选重跑整条失败、物理列名带空格失败、慢模型上别名批次超时导致整条失败、被自己的完备性校验拒掉。
  • 建模页:普通字段改名不保存、删除路由正在使用的关系报 500、关系挂着的字段降为普通字段后连线消失、普通字段显示成「待确认」、点「应用」白屏、数行数的指标没有单位被误报。
  • 发布前试问复用语义索引,不再每次重建。
  • 数据源页顶栏铺满可用宽度。