Repository navigation
Release v0.0.4
[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、关系挂着的字段降为普通字段后连线消失、普通字段显示成「待确认」、点「应用」白屏、数行数的指标没有单位被误报。
- 发布前试问复用语义索引,不再每次重建。
- 数据源页顶栏铺满可用宽度。