ThearchyHelios
|
f816fc4c25
|
合入 W1-a 分析算子库:五个算子(变化拆解三种模式与下钻、波动基线、趋势、差异检验、可比性检查)、纯 Python 统计、规范十进制、判定语与标签消毒、目录事实、期次、现查与复算;Wilson 移到 analysis/stats 共用
|
2026-10-21 13:11:45 +08:00 |
|
ThearchyHelios
|
ab98c7430c
|
分析算子收尾:复算剔除系统字段改用同一个 DERIVED_PARAMS;去掉没用的导入和小函数;测试按仓库的写法从 tests.analysis_samples 导入样例
|
2026-10-21 13:08:14 +08:00 |
|
ThearchyHelios
|
7d31922d00
|
五个分析算子与 run / recompute(细案 01 §1–§8):decompose(additive 按维度算贡献、headline 与下钻闭合、抵消、新出现 / 消失;ratio 中点对称拆结构与自身效应、辛普森、分母小;factor LMDI-I;两份快照先做可比性,口径结构不同不拆)、baseline(中位数与 MAD 的稳健 z、σ̂ = 0、日数据 lag 7、新高新低)、trend(Theil–Sen + Mann–Kendall、末尾连续期数)、differ(rate 的 z 检验 / Fisher、mean 与 rows 的 Welch、Holm、rows 的敏感性)、comparable(同口径、窗口长度、整期、星期构成、数据问题,现查记进 probes);run 先登记现查、查完再算,运行当天和目录事实记进 params,recompute 只用记下的、不现查;判定码、原因码、附带说明码都在契约里;输入记下方言和遮罩列名,复算逐字段相同;测试用虚构零售库,每个用例都核对复算
|
2026-10-21 13:04:58 +08:00 |
|
ThearchyHelios
|
7e6d52004c
|
分析算子的输入、目录事实、期次与现查:inputs.py(按名字取快照、拆「名字.r行.列」、列名不分大小写、遮罩列与非数值是调用错误);facts.py(按 SQL 认结果列取自哪张表的哪一列,读目录的度量类型、叫法、业务日期,只有确认过的度量类型才拿来判调用错误;查过的记进 params,复算不读目录);periods.py(日期、YYYY-MM、YYYY-Www、YYYY-Qn、整数序号,粒度按值推断);probe.py(make_prober 走 data/coverage 的只读探查:遮罩列不探、总时限、5 分钟缓存、退回剖析事实,另在库里算按运行当天现算的界;Book 先登记、查完再算,结论只记真用到的);data/coverage.py 加几个公开的小函数(parse_sql、as_day、literal_bound、window_of、column_range、bound_values、facts_range),_fallback 的读法抽成 _facts_range、行为不变;契约补几项可选字段(InputSnapshot 的 dialect / checks / no_data / mask_columns / masked_at_query,AnalysisInput 的 dialect,Probe 的 expr / value)
|
2026-10-21 13:03:35 +08:00 |
|
ThearchyHelios
|
654cc23c85
|
分析结论的数与判定语:numbers.py(快照里的数换成精确的 Fraction,写成规范的十进制字符串:不带指数、去尾零、没有 -0,除不尽的和浮点留 12 位有效数字,同输入逐字节同输出);phrases.py 一处定义判定语模板(细案 01 §7.2)、数的写法(百分比一位小数带正负号、量千分位最多两位小数、百分点,ROUND_HALF_UP 同 render_cell)、label 消毒(去引用标记、出具校验认的数字写法、单位符号,≤ 20 字,空了退回目录叫法和列名)、附带说明的一句话(判定语后最多接两条)、照实际阈值写的判定标准
|
2026-10-21 13:03:23 +08:00 |
|
ThearchyHelios
|
9af50fb474
|
分析算子的统计函数(app/analysis/stats.py,纯 Python、不加依赖):正态分布函数(math.erfc)与分位数(Acklam 逼近 + Halley 修正)、t 分布(正则化不完全 β 的连分式,自由度很大时按正态)与分位数(二分)、Wilson(从 eval/stats 移过来,评测改为引用、行为不变)、Newcombe 区间、合并比例 z 检验、Fisher 精确检验(lgamma)、Welch t 检验与区间、Holm 校正、Mann–Kendall(n ≤ 10 且无并列用逆序数递推的精确分布,否则正态近似带并列修正和连续性校正)、Theil–Sen(精确的数在公分母上按整数比,只对浮点相等的那几个精确比)、中位数 / MAD / 名次;测试用公认表值钉住(正态 0.975 分位、t(10) 临界值、品茶表、Newcombe 例子、小样本精确分布对照暴力枚举)
|
2026-10-21 13:03:12 +08:00 |
|
ThearchyHelios
|
38906a92ea
|
分析能力骨架补跨包约定:写作目录里分析条目的读法(catalog_result:A{n} 条目 kind analysis、result 为整份结论)、口径卡指标上的可比性字段(MetricComparability)、报告文档里系统写的「分析范围」结构(ScopeBlock / ScopeItem)
|
2026-10-21 11:55:38 +08:00 |
|
ThearchyHelios
|
844f5571f0
|
分析能力骨架:app/analysis 契约(结论的工件种类、台账条目、写作目录前缀 A、引用标记 a、分析卡节点类型、五个算子与模式、方法版本、判定码、算不了的原因码、附带说明码、工具名)、设置缺省 / 取值范围 / 叫法与校验、阈值合并(缺省 ← 发起时快照 ← 分析卡覆盖)、复算比较;run / recompute 的签名(第 1 波实现);测试用的假结论
|
2026-10-21 11:53:43 +08:00 |
|
ThearchyHelios
|
9e5debfb33
|
合入文档重新梳理:README 中英各精简成介绍和索引(是什么、为什么用、主要功能、快速开始、部署、文档索引),细节按主题拆进 docs/zh-CN 与 docs/en(17 篇一一对应:问数据、工作流、证据与出具及复核套件、数据源、数据目录、工具、应用、评测与口径账本、定时与通知、部署、配置、PostgreSQL 与多进程、身份与安全、架构、开发、升级说明、常见问题),英文文档不含中文;代码和部署文档里指向 README 章节的地方改指新文档;新增 scripts/check-docs.py(英文文档中文字符、相对链接与锚点、中英对应)
|
2026-10-21 10:56:05 +08:00 |
|
ThearchyHelios
|
27175e2f5e
|
文档:「界面里的设置」表照设置页的实际页签改——偏好设置补上运行默认值、证据裁判、核查、口径账本、应用一节和界面主题;去掉不存在的「设置 → 应用」页签(应用那几项在偏好设置里,apps、identity-and-security 两篇里的说法一起改),补上「审计」页签;中英两边同步
|
2026-10-21 10:55:41 +08:00 |
|
ThearchyHelios
|
1ad087c387
|
文档补充:复核套件逐项写清(双盲复算、反方审稿、审批质询、数字推演沙盘、运行对比),新增「查询区间里没有数据」一节,补全访问密钥到期提醒发到哪里;中英文同步
- evidence.md「复核套件」:开头讲三项共用的只读核查 agent 和「设置 → 偏好设置 → 核查」,再按代码模块文档逐项写解决什么、怎么用、结果、局限;可验证报告的细节并进「导出」一节(只证明内部一致、封存后追加的单列、遮罩、何时能导出),复核套件里链过去
- evidence.md 新增「查询区间里没有数据」:整列是 0 时现查表里实际的日期范围,口径卡标「区间内无数据」、出具降档、写作提醒、问数据按复核重来、助手自查、宁可漏报;data-catalog.md 的数据剖析一节链过去
- schedules.md:访问密钥到期提醒写明个人密钥发本人的个人渠道、服务账号的密钥发全局渠道,以及消息里有什么;定时运行结束后的自动对比链到运行对比
- README 两版:功能列表加复核套件一条,文档索引里证据与出具一行补上新加的两节
scripts/check-docs.py:英文文档中文字符 0 处,相对链接 383 条全通,中英文档 18 对标题层级一致
|
2026-10-21 10:51:15 +08:00 |
|
ThearchyHelios
|
2714890d0d
|
文档重新梳理:README 精简成介绍和索引,细节按主题拆进 docs/zh-CN 与 docs/en(17 篇一一对应),英文文档不含中文
README.zh-CN.md / README.md 只留:这是什么、为什么用它、主要功能(按领域一行一条,链到文档)、快速开始、部署、文档索引、
开发与测试、许可(原文不动)。原来的每一节按读者和任务分到 17 篇主题文档:ask-data、workflows、evidence、
data-sources(新增:接入数据库、只读保证、上传表格、跨库合并、遮罩列)、data-catalog、tools(新增:工具、审批档位、
能力登记、端点、网络规则——它们管所有工作流,不只应用)、apps、evaluation-and-ledger、schedules(含通知)、deployment、
configuration、postgresql-and-scaling、identity-and-security、architecture、development、upgrade-notes(按时间倒序,
每波先写要做的事)、faq。删掉的只有模块名(api/copilot_gen.py、chat/drive.py、data/schema_view.py)、重复的话和
「以前…现在…」的叙述;操作步骤、命令、配置名、限制、权限边界都有归宿。中文是原文,英文按新的中文写;英文里界面文字
只写英文名,开头注明界面目前只有简体中文,中文占位符换成英文占位符,中文数字的例子改成不依赖中文的说法。
数据剖析可以同时剖析 2–3 张表(baf23998)收进 data-catalog。
新增 scripts/check-docs.py:英文文档(README.md、docs/en/**)不许有中日韩字符和全角符号(代码块也算),
README、docs/**、deploy/README.md 的相对链接和锚点都要通,docs/zh-CN 与 docs/en 文件一一对应、标题层级相同。
中文提示里指向 README 章节的地方改指新文档:cluster/guard.py、cluster/version.py、db/base.py 两处报错,
data/schema_view.py 文档串,.env.example 三处,scripts/prod.sh、scripts/test-postgres.sh,terms.ts 两处、
DataSourcesTab.tsx、check-manage.mjs 注释,deploy/README.md 三处链接。deploy/agentlab.env 未动。
验收:check-docs 0 问题(英文文档 18 个 0 处中文,相对链接 369 条 0 断链,18 对标题层级一致);相关后端测试
117 通过、7 跳过;tsc -b、check-copy 通过。
|
2026-10-21 10:23:26 +08:00 |
|
ThearchyHelios
|
baf239981e
|
合入:数据剖析可以同时剖析几张表(剖析设置加「同时剖析的表数」,1–3,缺省 1 即以前的一张做完再做下一张;每张表的查询仍一条一条发,同一时刻对业务库最多这么多条查询)。按任务里的顺序一张结束就开始下一张,进度、查询记录各落在自己那张表上;止损、停用后不再开始新的表,正在做的照常做完;停止时正在做的几张各自收尾、做完的项写进目录;一张表让任务出错时另几张按停止收尾;共享的行数只估一次;409 说法改成「已完成 x / y 张表」;设置表单、风险说明、预算和估算用时按并发写明张数;中英文 README 各补一句。验收:后端全量 14979 通过(变基到最新 main 后相关剖析测试 125 条重跑通过);tsc;check-catalog-profile 217 项、check-copy 28 项全过
|
2026-10-21 09:08:35 +08:00 |
|
ThearchyHelios
|
f774e42463
|
数据剖析可以同时剖析几张表:剖析设置加「同时剖析的表数」(table_concurrency,1–3,缺省 1,即以前的一张做完再做下一张;上限 3 是给这个源上的分析留出连接池的临时连接),每张表的查询仍一条一条发,所以同一时刻对业务库最多这么多条查询。剖析任务的执行改成按设置开几个执行者,按任务里的顺序一张结束就开始下一张;进度、发过的查询各落在自己那张表上(不再记「正在做的那一张」)。每张表开始前照旧重读数据源:停用、关掉剖析或止损后不再开始新的表,正在做的几张照常做完(止损时剩下的项记止损的原因),都结束后再把没开始的记停下;止损的连续失败、超时比例按几张表的查询合起来算。停止、关停时正在做的几张各自收尾,做完的项照常写进目录,都收完才往上交(等的时候又被停止也等完);一张表让任务整体出错(快照被改动、数据源没了、记结果写库出错)时,另几张按停止收尾、原因写这一句,本进程续不上租约的不写。同时要估同一张表的行数时只估一次(按表加锁,先来的没估成后来的自己估)。同源已有剖析时的 409 说法从「第 x / y 张表」改成「已完成 x / y 张表」。界面:设置表单多一格(单位「张」,提示写明业务库同时要应付几条查询、和分析共用连接),风险说明、卡片悬停、开始前的醒目一句在大于 1 时写明「同时剖析 N 张表、每张表的查询一条一条地发」,预算多一行,这次最多用时按几轮算。测试:同一时刻在途查询不超过设置、每张表仍一条一条发(1/2/3 三种)、几张一起显示进行中并按顺序开始、同时停止各自写进目录、止损后不再开始新表、停用时正在做的做完、一张出错另几张按停止收尾、共享行数只估一次;check-catalog-profile 加一节(预算、估算、说法、两行进行中、表清单)。验收:后端全量 14979 通过;止损那条并发测试单独跑 30 遍、整个剖析任务测试文件并行跑 15 遍都没有偶发;tsc;check-catalog-profile 217 项、check-copy 28 项全过
|
2026-10-21 09:08:10 +08:00 |
|
ThearchyHelios
|
31f3af8bac
|
合入:README 默认改成英文版(README.md,中文版的完整翻译),中文版独立成 README.zh-CN.md(内容不变),两边顶上互相链接;中文提示里指向 README 章节的地方改指中文版
|
2026-10-21 08:55:03 +08:00 |
|
ThearchyHelios
|
0d4ee79440
|
README.md 改成英文版(中文版 README.zh-CN.md 的完整翻译),作为仓库默认 README
逐节对译,不删不并:标题层级和顺序、45 个标题、18 个代码块、10 张表、142 条列表项、图片和外链与中文版一一对应;
代码块里命令、配置名、环境变量、路径、接口原样,只译注释(Mermaid 图的标签一并译成英文);行内代码原样(含 <密码>、
<数据目录> 这类中文占位符,含义不明显处在正文里附一句英文说明)。界面文字写英文译名,并在每个二级节首次出现时附中文
原文,如 Settings → Preferences(「设置 → 偏好设置」);附的中文都和中文版逐字一致。页内锚点全部换成英文标题的
GitHub 锚点,目录按英文标题重建;顶上一行「English | [简体中文](README.zh-CN.md)」。
核对:两份文件各 43 条页内链接(25 个锚点)0 条断链,deploy/README.md 指向 README.zh-CN.md 的 3 条带锚点链接也通;
中文版的 460 个行内代码在英文版里全部原样出现;正文里的数字除「200 万 → 2 million」这类单位换算外一致;
另按节对照通读复核一遍,改正漏译的限定语和几处语义偏差。
|
2026-10-21 08:50:47 +08:00 |
|
ThearchyHelios
|
aadc8d0115
|
中文 README 移到 README.zh-CN.md(内容不改,顶上加语言切换),中文提示里指向 README 章节的地方改指中文版
git mv 保留历史;顶上一行「[English](README.md) | 简体中文」,英文版随后单独提交。
改指 README.zh-CN.md 的:报错文字(cluster/guard.py、cluster/version.py、db/base.py 两处)、.env.example 三处注释、
scripts/prod.sh 用法说明、scripts/test-postgres.sh 注释、「口径同 README「哪些角色看得到原值」」的四处代码注释
(terms.ts 两处、DataSourcesTab.tsx、check-manage.mjs),deploy/README.md 里三处「仓库 README」写成指向
../README.zh-CN.md 对应章节的链接。
没改的:deploy/deploy.sh 四处「README 的常见问题」「README「用 PostgreSQL」」和 deploy/agentlab.env 117 行——离线包里和
deploy.sh 放在一起的 README.md 就是 deploy/README.md,那几句指的正是它的常见问题、用 PostgreSQL 两节;
deploy/README.md 第 16 行文件清单说的是它自己;version.py、runner.py 文档串里「以前 README 写…」是旧事的叙述。
验收:相关后端测试 117 通过、7 跳过;tsc -b、check-copy 通过。
|
2026-10-21 08:13:58 +08:00 |
|
ThearchyHelios
|
95415dcbf5
|
合入:交叉表支持按文字导入的指标(「高峰时段」一行写着「18-19」时落成文字列,规则起草按文字指标起草并要人确认,配方面板加「指标类型」);堵上占位符陷阱(拒收含数字的占位符,「不是数字」的下一步按格子情况写,整行文字给「按文字导入这一行」修复按钮)。验收:配方相关测试 2195 条、新增 15 条全过;check-copy 通过;check-manage 718 项全过;真实文件本机重跑起草完整、按日 31 行、时段 527 行;泄露扫描干净
|
2026-10-20 11:41:44 +08:00 |
|
ThearchyHelios
|
9e1ff11278
|
交叉表支持按文字导入的指标(如「高峰时段」一行写着「18-19」),堵上占位符陷阱:配方的 measures 分段加 text_measures(标签 → text / hour_range),落成文字列(时段存规范写法),空格、公式、占位符照块的取值规则,数字、日期、解析不了的时段报 value_not_text / value_not_hour_range;规则起草遇到无标题指标块里整行是文字的行(标签不带词表单位)按文字指标起草,并出卡片和问题要人确认(「不是」就去掉,回到按数字导入、试运行拒收),确认清单加 text_measure 项,前后对照报类型和存法变化;数值区不合格的格一行合成一条起草失败(不再一行 30 条)。陷阱:以前照「请添加占位符」把「18-19」加成占位符,整格静默存成空值、干跑照样通过——静态校验拒收含数字的占位符(placeholder_digits,重放和沿用现行配方的放行),value_not_number 的下一步按格子情况写:整行文字的提示改「指标类型」并给修复按钮 declare_text_measure,含数字的不再提示加占位符;标签带单位的拒按文字导入(text_measure_unit),文字列不能写单位(unit_on_text)。配方面板每个指标多一个「指标类型」下拉(数字 / 时段 / 文字)。默认值不进规范形式,已存配方的哈希不变。测试 tests/test_recipe_text_measures.py(合成夹具,假名);check-manage 加指标类型三项
|
2026-10-20 11:41:28 +08:00 |
|
ThearchyHelios
|
c2ba06014e
|
合入「口径数字全为 0」的一组修正(部署上一份周报:取到访的那张表只存最新一天,查上周、上上周全是 0,口径卡算出一排 0 和 0%):查询区间里表里没有数据时照实说——结果里整列是 0 或空时运行时现查(data/coverage.py:界在库里按运行当天算、表的范围现查 MIN / MAX,失败退回剖析,按列判),进查询结果和快照(no_data),口径卡按列标「区间内无数据」、写作目录照实交代、出具按缺口降档、复核记缺口并可按复核重来;助手搭图自查对工具节点写死的 SQL 同样检查、交回一轮修正,单日剖析的表加提示;双盲复算两边落在无数据的列上不判一致、无法复算带上盲算的理由;口径卡分母为 0 时提示写 None、发布检查提醒 else 0、「算不出来」和「缺少输入」分开说;指标清单按格式渲染(以前比率 0.0007 写成 0.0007%);没配出具契约的成果在实例页印章上照实写缺口。验收:后端全量 14948 通过;方言容器集成测试 PostgreSQL / MySQL / MariaDB / Oracle 全过(含部署那种文字日期 + 现算上周的写法);tsc、文案检查;相关 8 项浏览器检查 3922 项全过;泄露扫描干净
|
2026-10-20 11:01:35 +08:00 |
|
ThearchyHelios
|
680ea4ecf8
|
覆盖检查:现查没成功(大表全表 MIN / MAX 超时、库一时连不上)也记 LIVE_TTL_S,期间同一张表直接退回剖析、取值观察,不再每次白等 PROBE_TIMEOUT_S 秒(测试 test_a_failed_probe_is_not_retried_for_a_while);方言容器集成测试(scripts/dialect_it.py)加一段覆盖检查:只存当天的滚动表(DATE 列,MySQL / MariaDB 另有按文字 'YYYYMMDD' 存的),按运行当天现算的上周区间判成没有数据、区间包含当天只是别的条件筛空的不报,查询后和助手自查两个入口都核——PostgreSQL 16、MySQL 8.4、MariaDB 11、Oracle Free 23 全过
|
2026-10-20 10:58:20 +08:00 |
|
ThearchyHelios
|
b0556e36d6
|
覆盖检查现查到的表的范围在进程里记 5 分钟(按数据源、上传表格的快照、表、列认):一张图里几个取数节点、助手自查几轮查同一张表,不再每次全表 MIN / MAX;查不成的、退回剖析的不记,过期了重新现查
|
2026-10-20 10:40:57 +08:00 |
|
ThearchyHelios
|
b6f7cc8378
|
应用实例页:成果没配出具契约时(印章上是「未声明出具契约」),本该降档的缺口照实写进印章的说明——口径卡里输入取自「查询区间里这张表没有数据」的列的指标、双盲复算的缺口(无法复算、审核人没采用原流程……);配了契约的已经按缺口降档,不另写
|
2026-10-20 10:39:53 +08:00 |
|
ThearchyHelios
|
f87b07694d
|
助手搭图时就发现「查的区间里表里没有数据」:自查(GraphChecker)对工具节点写死的 SQL 按今天跑一遍覆盖检查(data/coverage.sql_gaps:不跑原 SQL,只跑算界和现查范围的两条小查询,SQL 里所有带时间谓词的表都查,按表去重、限时,异步查库,带模板的 SQL 不查);完全不重叠的作为一条 sql_no_data 问题交回模型改一轮(换有这段数据的表,没有就在 done 的说明里照实告诉用户数据只到哪天),修正后仍在的不挡运行,作为提醒留在检查结果和交付的问题清单里(问数据流式、画布非流式都是)。look / db_schema 的剖析信息在日期范围最早和最晚是同一天时加一句「剖析时这张表的 X 只有一天的数据,可能每天整表重灌:算历史周期请换有历史的表」;助手节点手册写明按周期取数前先看表的日期范围,只有一天、最新日期早于要查的区间的表不能用来算这段时间
|
2026-10-20 10:38:30 +08:00 |
|
ThearchyHelios
|
a86991b57f
|
双盲复算:盲算触顶、按无法复算记时(_limit_text 那一路),把盲算交回的理由(渲染后的正文,已经过遮罩)截一段带进原因(「盲算已达每项最多查询次数(1 次);盲算交回的理由:…」),审批卡、缺口说明上看得到它查到了什么,没有理由的照旧。原值所在的格子落在「查询区间里这张表没有数据」的列上时不派盲算、按无法复算记;盲算交回的格子落在这样的列上时不判一致、按无法复算记;原因都写「查询区间里这张表没有数据(…)」
|
2026-10-20 10:33:34 +08:00 |
|
ThearchyHelios
|
6fa2e297db
|
口径卡、报告、出具、复核认「查询区间里这张表没有数据」:口径卡按输入的快照 id + 列认(cell()、按位置取的格、Agent 经 cite_fields 交来的字段,按列,同一条查询里有数的列不受影响;转抄的指标照抄),给指标标 no_data 并写明原因,清单注明「这段时间表里没有数据:不要当成 0 解读」,发一条 metric_no_data;有出具契约的成果按缺口降档(契约收来的指标,和报告直接引用的这样的格)。写作目录里这样的指标、查询格子里这样的列都写清,写作规则加一句(目录里有这样的项才加)。证据面板的指标标「区间内无数据」并写明原因,查询步骤列出这几列。复核把 query_no_data、metric_no_data 记成缺口(DEGRADED),归进新的 REBUILD:是缺口、却值得换一张有这段数据的表重建一次,should_retry 和 chat/turn.retry_after_review 都认,问数据据此给出「按复核重来」的指示
|
2026-10-20 10:29:01 +08:00 |
|
ThearchyHelios
|
8ba95c0252
|
查询区间里这张表没有数据时,查询结果里照实说(新增 data/coverage.py,接在数据源查询工具上):结果里有整列是 0 或空的数值列时,把 SQL 收窄到算出这一列的那一项(去掉别的选择项、分组、HAVING、排序、取行数,只分析不执行),认出它用到的实表和时间谓词;界是字面量的直接解析,按运行当天现算的(不含列的表达式)用同一个数据源跑一条 SELECT 界1, 界2…(Oracle 加 FROM DUAL)算出来;这一列在表里的实际范围现查 SELECT MIN(列), MAX(列)(每条 10 秒),超时或失败退回剖析、取值观察记下的范围并照实标「按 X 日的剖析」,都没有就不判。日期按常见写法归一(DATE / DATETIME、'YYYY-MM-DD'、'YYYYMMDD'、8 位整数),文本列对文本界写法要一样,认不出就不判;区间和范围完全不重叠才算没有数据,一列用到几段区间时每段都不重叠才算。探查走同一道只读守卫,遮罩列不探查不报值,总耗时有上限,出错不影响查询本身。结果和快照多一项 no_data(columns、table、column、window、data_range、basis、message),运行事件记一条 query_no_data;没查出问题不加这个键,快照和以前一字不差。可验证报告认得这个键
|
2026-10-20 10:28:49 +08:00 |
|
ThearchyHelios
|
301bbd55f3
|
口径卡分母为 0 时算不出来就是空值,和「缺少输入」分开说;指标清单按格式渲染。助手节点手册讲口径卡的那段写明分母可能为 0 时写「… if 分母 else None」、不要写 else 0,附示例;画布校验加一条提醒 metrics.zero_for_undefined(按语法树认:条件表达式一边有除法、另一边是常量 0,两边对调、套在 round 里、嵌套的都认)。输入都齐、计算式自己交回空值的指标多记 undefined: true(状态仍是 missing_input,按状态认的地方和老运行不受影响),清单、写作目录、引用解析不了的原因、运行对比、证据面板都说「算不出来(这组输入下计算式没有值,比如分母为 0)」;推演把它当不带值的字段。指标清单({{ nodes.卡.text }})改用卡上渲染好的 rendered:比率 0.0007 显示成 0.07%、金额带千分位,和报告里 [[m:]] 一致;有值却显示不出来的照实说,不拼原值
|
2026-10-20 10:04:53 +08:00 |
|
ThearchyHelios
|
8ce578042c
|
合入:工作流可以改名(画布顶栏、工作流列表各一个入口;服务端拦空名、超长、重名,内置模板不改名)
|
2026-10-20 08:19:32 +08:00 |
|
ThearchyHelios
|
3c5c9d3c15
|
工作流可以改名:画布顶栏名字旁边、工作流列表每一行多一个「重命名」,两处共用 canvas/WorkflowPicker.renameWorkflow——只改名字,不加版本、不碰图,画布上还没保存的改动原样留着(改的正是打开的这一张时只换它的名字)。服务端 PATCH /api/workflows/{id} 的名字以前原样写入:现在去掉首尾空白,空名 422、超过 200 字 422、和别的工作流同名 409;内置模板不许改名(启动时 seed_defaults 按名字补内置模板,改了名下次启动会再导入一份原名的),界面上也不给模板改名入口,要改就「以此模板新建」。测试 tests/test_workflow_rename.py
|
2026-10-20 08:18:55 +08:00 |
|
ThearchyHelios
|
3003f737a3
|
合入:助手把操作写成工具调用格式(DSML、<invoke>、<tool_call>……)时照操作读;起草时一个能落地的操作都没有就当场带纠正重写一次;报错按诊断照实说;提示词写明没有工具调用接口;画布失败轮次把原因和诊断记进 meta.cause
|
2026-10-19 22:48:39 +08:00 |
|
ThearchyHelios
|
626a423625
|
画布助手没完成的那一轮把原因和诊断记进 meta.cause,之前的轮次也摊开「怎么办」和诊断
以前画布轮次失败只记 error 那一句,诊断(模型交回了什么)没落库:部署上那几轮事后查不到为什么失败,只能靠本地重放推断。现在 error 操作的 hint、detail、code、diagnostics 按问数据一轮同样的形状记进 meta.cause(kind=copilot),和查看记录 looks 并存;面板展开「之前的轮次」时报错带上怎么办和诊断原文,和当场看到的一样,老轮次照旧只有一句。
验证:tsc、check-copy;从这个分支另起一套服务跑 studio、stream、decode 三项浏览器检查全过。
|
2026-10-19 22:48:23 +08:00 |
|
ThearchyHelios
|
6b68961c65
|
助手把操作写成工具调用格式时照操作读;一个能落地的操作都没有时当场纠正一次;报错按诊断照实说
部署上画布助手连着几轮报「助手本轮未完成:模型没有给出任何修改,也没有说明原因」,又试了一次才成。本地用同一网关、同一模型、同一底图和需求重放复现:模型思考里写着「先输出 look」,正文却是一段 DeepSeek 的 DSML 工具调用(invoke name="look",参数 need、targets),意图和参数都对,只是不是约定的单行 JSON。读流只认 JSON 和原生工具调用,于是一个操作都没认出、整轮报错;画布不处理 next=retry,点重试原样再发,几率不变。提示词里「输出这一行就停下,系统把结果交回来」很像工具调用,却从没说这里没有工具调用接口。
- engine/toolcalls:take_leaked_calls 读写成文字的工具调用(DSML 竖线一到两个、带不带空格,<function_calls><invoke>,<tool_call>{name, arguments},DeepSeek 特殊 token 两种排法),按出现先后交出已写完的调用和没写完的那一段;final 时参数写完整、只差结尾的补上结尾再读,写到一半的不硬读。_MARKUP 补认 DSML 结尾标签和 function_calls / tool_calls 包装(agent 节点的识别跟着受益)。has_markup 只认标记本身
- copilot_gen._iter_ops:从有标记的那一行起攒,一次调用写完就按名字读成操作(名字是操作名的才认,规矩同原生工具调用 _call_op;op 写在最前,接着写时交回模型的是约定写法),读到 look 照样停下去查看;读不出的记「工具调用标记的名字不认识 / 参数解析不了 / 没写完」;raw 交出正文开头一段
- Generation:起草时一次调用读完、到这时还没有能落地的操作(plan、look 不算——查看完接着写什么都没认出的整轮照样是空的),把原话交回去、附 StreamDiagnosis.correction 那句纠正,当场重写一次(FORMAT_NUDGE_PROMPT,每轮一次);什么都没写的把纠正接在最后那条消息后面。诊断按次收(absorb),记 nudged。写成标记被读出、当场纠正都打 info 日志
- 报错说法:Generation.empty 默认用 StreamDiagnosis.headline(写成工具调用格式 / 只写了思考 / 什么都没有输出 / 格式不对 / 只说了打算),不再一律「也没有说明原因」;摘要注明当场纠正过
- 提示词:look 用法(四个入口共用)和画布、应用、蓝图的输出格式都写明这里没有工具调用接口
- 问数据失败原因 meta.cause(kind=copilot)带上 code、diagnostics
验证:本地真模型重放,修后 DSML 没再出现、都正常交付;把第一次调用换成读不出的 DSML 后交给真模型,都被当场纠正救回来(先 look 再出操作);原先抓到的真实 DSML 原文离线读成 look。测试:新增 tests/test_copilot_markup_ops.py(各写法、流式切碎、和 JSON 行混写、读不出的诊断、DSML look 驱动真查看、说明文字 / 只写思考 / 只写 plan / 查看后空续写的纠正、只纠正一次、画布流不报错、报错说法、提示词);空生成相关的旧测试按「一次生成先纠正一次」更新(基线夹具 no_ops 的说法)。后端全量通过。
|
2026-10-19 22:48:23 +08:00 |
|
ThearchyHelios
|
bbc1f3b34c
|
合入:切到账号密码登录时,已经有能用密码登录的管理员就不再要求建第一个管理员(设置页按 /api/auth/settings 的 local_admins、passwordless_admins 判断;从单点登录切过来同样)
|
2026-10-19 18:49:11 +08:00 |
|
ThearchyHelios
|
fa951a2756
|
切到账号密码登录时,已经有能用密码登录的管理员就不再要求建第一个管理员:以前设置页只要从「未开启」切到账号密码登录就一律显示「第一个管理员」表单、一律提交 bootstrap(前端 needsBoot 只看切换方向),库里已经有设了密码的管理员也得再建一个。/api/auth/settings 现在带 local_admins(没停用、能用密码登录的管理员)和 passwordless_admins(没停用、还没设密码的);设置页按它判断:有能登录的就提示「切换后用其中一个账号登录,保存后会回到登录页」、不提交 bootstrap;只有没设密码的管理员时照旧要建,并说清是谁没设密码、可以在用户列表里给他重设密码。从单点登录切到账号密码登录同样按这条判(以前不显示表单、后端却要求)。用户列表里新建用户、重设密码后,登录方式那一块重新判断。判据和后端 _local_admin_exists 同一个
|
2026-10-19 18:48:22 +08:00 |
|
ThearchyHelios
|
5d5a29cfa6
|
合入前端依赖 source-map-js 1.2.1 → 1.2.2(Dependabot 高危告警,只更新锁文件)
|
2026-10-19 18:17:00 +08:00 |
|
ThearchyHelios
|
3470521f46
|
前端依赖 source-map-js 1.2.1 → 1.2.2(Dependabot 高危告警):postcss、@tailwindcss/node 的间接依赖,两者的版本范围本来就允许 1.2.2,只更新锁文件,package.json 不变。验证:在干净的拷贝上 pnpm install --frozen-lockfile 装出 1.2.2,tsc、pnpm build 通过
|
2026-10-19 18:14:05 +08:00 |
|
ThearchyHelios
|
7bf2595b23
|
合入部署实例一段问数据会话里查出的 9 条修正:复核按报告最后一次核对定档(首稿没过、重写后通过的不算缺口);被随后改对的查询失败不再写进答案;「上周」这类相对日期按运行当天算,数据覆盖不到先照实说;整表引用行号超出截到最后一行;名字里的数字(和查询结果文本值一字不差的)不算裸数字;标识列(编码、编号、分组键)不加千分位(单元格显示规则 3 版,离线核对页同步);指标后紧跟同一单位不再重复;前面写过表名时字段只显示列名;建图返回空时记诊断、重来附纠正,并修掉三处工具调用被静默丢弃的路径。验收:后端全量 14871 通过;相关 8 项浏览器检查 3922 项全过;tsc、文案检查;泄露扫描干净
|
2026-10-19 18:10:12 +08:00 |
|
ThearchyHelios
|
d6c22440df
|
名字里的数字涂白(_name_masks)先按数字串挡一道:名字一字不差出现、前后不紧挨着数字时,名字里的每一串数字在正文里都是完整的一串,正文里没有这串数字的名字不再逐个查找,快照行多时不拖慢组装和复核;放过的范围不变
|
2026-10-19 17:55:02 +08:00 |
|
ThearchyHelios
|
29c44ce65a
|
助手一个操作都没给(copilot_empty)时看得出模型交回了什么,自动重来带一句纠正,格式跑偏的操作不再被静默丢掉:copilot_gen 新增 StreamDiagnosis,起草阶段记结束原因、正文(不算空白)和思考的字数、认出几行操作、原生工具调用的名字、跳过的行按原因数(不是完整的 JSON、不是 JSON 对象、缺 op、工具调用名字不认识、参数解析不了)、正文里写成文字的工具调用标记,只记长度个数和原因、不记原文;copilot_empty 的 error 带 detail(一句话)和 diagnostics(机读),问数据、画布、应用润色、蓝图四处一致,非流式的 502 也带上。重来时交给助手的原因换成按诊断给的纠正(只写了思考 / 什么都没输出 → 直接输出操作、要看表先写一行 look;格式跑偏 → 每个操作单独一行完整的 JSON;用了工具调用 → 这里不走工具调用),chat/turn.empty_retry_instruction 附在问题后面,不原样重发;诊断随 turn.retry 事件记下。原来静默丢掉的写法照常读:分成多行写的 JSON(以「{」开头读不成就往后攒)、和围栏写在同一行的操作、原生工具调用里名字是操作名的(参数就是操作的字段)
|
2026-10-19 17:55:02 +08:00 |
|
ThearchyHelios
|
a92f590799
|
字段标记紧跟在同一张表名后面时只显示字段名(部署上的「取自 某表 的 某表.某列」):[[c:表.列]] 前面紧挨着(隔空白、「的」「中的」「里的」)刚写过同一张表的名字——写成文字或 [[t:同一张表]] 都算,按 name_key 比,带库名的全名、末段都认,英文名前面还连着字母的不算——正文只显示列名,出处、证据标识照旧是那个字段,引用上记 short: true,复核照它核对显示的字;没有这一项的老文档照旧按全名核对。整篇组装、render_markers、流式渲染一致(流式渲染记着已放出正文的末尾一截)。写作规则(ENTITY_RULES)写一句
|
2026-10-19 17:55:02 +08:00 |
|
ThearchyHelios
|
ba4c604539
|
数字标记后面重复写的单字单位也去掉(部署上的「覆盖 8条 条产线」):以前单字的单位后面紧跟着字时一律不动,现在只在它和后面的字连起来是一个更长的单位(人次、个月、台套、元/…,_LONGER_UNIT)时不动,让「人」对「人次」这样的不一致照旧露出来;「条产线」「人参加」照样去掉重复的那个字,流式渲染一致。写作规则加一条 UNIT_RULE([[m:]]、[[v:]] 自带单位,后面不要再写一遍),助手节点手册讲 [[m:]] 的那一行也写明
|
2026-10-19 17:55:02 +08:00 |
|
ThearchyHelios
|
e9bb0afd4c
|
报告里标识列的数不分千位(产线编码 1203 不再写成「1,203」):新增 engine/cell_format.plain_columns,按序看查询当时冻结的数据目录给源列标的度量类型(identifier / status / attribute 不分,flow / stock / ratio 分)、源列名像编码编号(CODE、ID、NO 整词或结尾、驼峰的 Id/No/Code、编码、编号、代码)、是分组键(列、别名、序号都认)而不是聚合;SUM、COUNT、AVG 这类聚合是量,MIN、MAX 按那一列判;判断不了的照旧分千位。只看查询快照和它指向的表结构快照(内容寻址),组装、流式渲染、写作目录、出口复核一致。单元格显示规则 3 版:真有格子因此改了写法的文档记 cell_display: 3、引用上记 plain;离线核对页认 3 版、照 plain 渲染(解析不了 SQL),老文档按记下的版本复核照旧分千位。样本里订单号(order_no)随之不分组,check-bundle 跟着改
|
2026-10-19 17:55:02 +08:00 |
|
ThearchyHelios
|
baf93ddfed
|
报告里照抄查询结果中文本格的名字(「冲压5线」「KX-205 线」)时,名字里的数字不再算裸数字:目录里每次查询的快照中、文本格里带数字的值(至少一个数字、至少一个不是数字的字,本身不是数也不是带单位的数),在正文里一字不差地出现、前后不紧挨着数字的那几段,查裸数字时涂白。组装和出口复核用同一条规则;只认快照里真有的值,不做模糊匹配,同一个数单独写出来照样要出处,数值格不受影响
|
2026-10-19 17:06:08 +08:00 |
|
ThearchyHelios
|
8f6a90c8c2
|
整表标记 rows= 的结束行越界、起始行在范围内时截到最后一行(不加注),只有起始行越界才算解析不了;行数上限按截完的行数算。单元格显示规则升到 3 版:截行只影响组装(截完照样展开成一格格的单元格引用、按格复核),复核 3 版以前的文档时没展开的整表标记照老规矩判,老文档里那句「没有第 N 行」不会被当成文档被改过。文档的 cell_display 改记渲染得出这些格子的最低一版(只有日期时间被改写的照旧记 2,离线核对页不受影响)
|
2026-10-19 17:00:32 +08:00 |
|
ThearchyHelios
|
41b350b87c
|
相对日期一律按运行当天算:助手节点手册的搭图规则(画布、问数据共用)加第 6 条——「今天、昨天、上周、本月、去年」按运行当天算,SQL 用方言里取当天的写法、agent 先调 current_time,不用 MAX(日期) 去推「上周」,要说数据最新到哪天就另取一列;报告写作规则加一条(period_rule),告诉写作者今天是哪天、上周是哪几天:数据没覆盖问的那段时间时先照实说、写明数据最新到哪天,最近一段的数可以给但写具体起止日期,不叫它「上周」「本月」
|
2026-10-19 16:53:46 +08:00 |
|
ThearchyHelios
|
5dfe2e7fd1
|
report.failed_queries 不再把「写错一条、下一条就改对了」当取数失败:同一个节点里,失败之后还有一条同一数据源的成功平台查询、读的表覆盖了失败那条的表(按 sql_semantics.facets 取表;失败那条解析不了就按同一数据源之后有成功的查询认),这次失败算已被替代,不进写作提示、不记 report_queries_failed;一次成功的都没有时照旧写「这次一次成功的查询都没有」
|
2026-10-19 16:47:07 +08:00 |
|
ThearchyHelios
|
1e87504e5c
|
复核把「首稿没过、重写后已通过」当缺口:report_repair、report_rewrite 这类「改过一次」的信号按同一个报告节点最后一次 report.checked 定档——最终通过的(没有违规;裁判摘要里不再有证据不支持的句子)不进复核的异常清单,复核模型被别的信号叫起来时,说明里另起一节「已经处理好的」写「报告「x」首稿有 N 处没过核对,重写后已全部通过」,不再写成「核对仍未全部通过、可能不准」;最终没过的照旧记缺口。report_repair、report_rewrite 的日志带上处数
|
2026-10-19 16:43:54 +08:00 |
|
ThearchyHelios
|
43909ea3f0
|
合入编排完善第 2 波(docs/design/orchestration-round §5):应用库可移植到 PostgreSQL(AGENTLAB_DATABASE_URL,缺省仍是 SQLite;方言调整只装在应用库引擎上、两种库行为一致;迁移按方言;断点用 langgraph-checkpoint-postgres;python -m app.db copy-to-postgres 连断点一起搬、孤儿行与缺省值照实处理;数据目录文件先写临时文件再改名;bubblewrap 沙箱不再继承环境变量);多进程协调(工作进程在库里登记、租约按库的时钟、卡住的进程自我隔离不再写、终态按属主写、运行事件 (run_id, seq) 唯一;跨进程停止;四类运行名额、交互留底其余可借;调度只由一个进程当班;实时流 LISTEN/NOTIFY 跨进程转发;花费账、额度、限流、锁、缓存失效进库;AGENTLAB_DATABASE_DIRECT_URL 与 PgBouncer 事务模式;版本不同的进程拒绝同连一个库;SQLite 单进程空闲不写库);部署时 PostgreSQL 一起起(deploy.sh install --postgres、migrate-to-postgres 失败原样退回 SQLite、升级前自动备份、内置库按部署编号认、dev.sh --postgres、启动时等库就绪);第 1 波与下一轮遗留收口(助手讲驳回出口、驳回去向的说法、子工作流在循环里的编号与外部写入幂等键、运行对比与反方审稿认子工作流、复核去重、问数据心跳不落库与事件日志清理、接手时重新核对身份、事件触发批量查询、多行查询行序不定、对账预选对照、口径凑不齐参数记日志);.env.example 与 deploy/agentlab.env 补全配置项。验收:后端全量 SQLite 14803 通过、PostgreSQL 14808 通过;多进程端到端 10/10(含进程被冻住再恢复的两种情形);tsc、文案检查;相关的 19 项浏览器检查 6830 项全过;泄露扫描干净
|
2026-10-19 16:34:08 +08:00 |
|
ThearchyHelios
|
68da5795b8
|
合入 nr8/d 的复核修复 R-d1–R-d6(内置库按部署编号与记下的名字认、起不来的库容器回退后不再重启、卸载只删自己建的网络、升级备份含记录表、dev.sh 读 .env 的写法与数据目录、sudo 下的 ~ 按 SUDO_USER 展开)
|
2026-10-19 16:19:44 +08:00 |
|