Commit Graph

  • 078c2c4d97 评测的模块说明补分析期望:judgements.py 管什么、有分析期望的题集开评时拍一份分析设置(算期望、作答都按它,记进指纹,别的题集不拍) ThearchyHelios 2026-10-21 18:23:57 +08:00
  • 9358d9ec48 评测前端认两种分析期望:题目编辑器在预览之后选贡献或判定(分析方法、模式、按哪几列、期次、点名前几段),试算写出服务端算的判定和判定语;结果页逐题写期望和答案的判定,点开写判定语、引用了哪一份结论或正文那一句;总览按期望的种类分开写结论 ThearchyHelios 2026-10-21 18:23:57 +08:00
  • 84e6c2e13f 设置「偏好设置」加「分析」一节(服务端 analysis 一组):判定用的阈值、Agent 每次执行最多分析几次、最多下钻几层、列出前几段,分成变化拆解、波动基线与趋势判断、差异检验、次数与层数四组。照口径账本一节的写法:草稿由偏好页持有、和其余设置共用一条保存条,存的时候整组写 analysis(没改的照原值带上,不被冲回缺省);叫法、范围照契约 LABELS / RANGES(每项下面写范围,类型、范围当场按契约的说法说,保存键不能点),两两之间的大小交给服务端核、422 的原话写在保存条上;服务端把 2 存成 2.0、写「2.0」不算改;老服务端没有这一组时不显示。check-manage 加一节:十七项的叫法都是契约的、显示生效的值、超范围和整数项、保存条的叫法、整组写、服务端拒收、改回原值、老服务端 ThearchyHelios 2026-10-21 18:20:10 +08:00
  • 78800511e0 前端:分析卡节点(分析能力一轮)。节点库「把关」一类加「分析卡」(类型色 --nt-analysis,亮暗两套),卡片摘要写做哪几种分析(「波动基线、变化拆解(可加)」,叫法照契约);检查器的分析项编辑器:每项标识、分析方法(五个算子)、模式(有模式的才给)、输入只列上游的查询节点(调用数据库查询工具的「调用工具」节点、合并查询,删掉或挪到下游的照实列出),按方法摆参数格(analysisItems.paramSpecs:维度列、期次、基期、本期、度量列或分子分母、乘积和因子、比较方式、粒度、对照组、几对……,期次可以写 {{ }}),可加、比率的变化拆解另有总数核对两格和下钻(上一层只列排在前面的变化拆解),变化拆解、可比性检查可以写成基期、本期两份查询,换方法、模式时只留新方法用得到的参数;在验证什么一句话;阈值覆盖只列写了的几项、从没写的里选,范围当场按契约说(两两之间的大小交给服务端),全删掉不留空对象。服务端按 items[i].<键> 报的问题落在那一格下面,定位退不到的子键(params.parent.key)逐段往上退;查询节点连到分析卡时还没选输入的第一项选上它(同合并查询,和连线同一步撤销)。报告节点加「分析说法核对」(缺省重写一次后标出)、「分析范围」(高级,缺省有分析结论时附上),选项以 engine/labels.py 的短说法开头。叫法、范围只照契约一份(lib/termsAnalysis:OP_LABELS / MODE_LABELS / LABELS / RANGES,check-studio 读后端源码逐项比对)。check-studio 加两节:叫法与契约一致、分析卡的画布编辑与校验定位 ThearchyHelios 2026-10-21 18:17:56 +08:00
  • 83cd5da72e 虚构库 retail_trends 与分析题集:26 周的零售订单(截止昨天、固定种子),相对上一个整周埋了八个效应;题集 analysis_suite.json 每个效应一题,期望由平台的分析方法在期望 SQL 上算 ThearchyHelios 2026-10-21 18:12:12 +08:00
  • 7794794278 评测的两种分析期望(贡献、判定):期望 SQL 的探针快照上用平台的算子(app.analysis.run,随数据变化的调用错误记成算不了)算出期望的判定,评分沿用五种结论 ThearchyHelios 2026-10-21 18:11:57 +08:00
  • 690e855ea5 内置模板 ⑪「异动分析(可追溯)」:两个调用工具节点取数(整体按周 26 周、按地区两周,期次在 SQL 里按每周第一天的日期算出来、整体按周倒序排),分析卡固定做两项(本周的变化放回历史看的波动基线、按地区的可加变化拆解,总数取整体按周的第 0、1 行核对闭合;阈值不写死、取设置),报告撰写节点按受管级别写明最严的几项(含分析说法核对严格),出口按报告来自 + 单元格引用的契约出具。拿来就能按受管级别发布。界面文案白名单加一条:模板 SQL 里中文列别名按 SQLite 加的双引号是 SQL 语法。测试:画布校验、受管发布检查没有错误(模板 ⑨ 一并核)、接一份虚构的四地区 26 周零售库从头运行,两项都做成(明显超出常规波动、主要来自华东)、完整出具 ThearchyHelios 2026-10-21 18:08:59 +08:00
  • 97a37d4bd2 复核信号认分析能力一轮的缺口:一次运行里算不了的几次分析并成一条「有 n 次分析没做成」,点名是哪一项、为什么(叫法取契约的 OP_LABELS,不再写 analysis_baseline 这样的工具名;老事件没带这几项的照日志原话),排在第一次出现的位置;分析调用写错(tool.error 带 call_error)后来同一个分析工具做成了是 Agent 照说明改对了,不再报 tool_args_fixed、为它叫一次复核模型,一直没做成的并成一条 analysis_call_failed(缺口,只写说明),不再落成 tool_error(严重、可重来,一次写错的分析会让整轮问数据重来);判断词核对重写后仍有的照报告节点原话说处数和重写次数。核对过第 1 波新增的日志代码:report_analysis_claims、analysis_refused、metric_comparability_skipped 三种,都已登记、都是缺口、都在只写说明的一组,RETRYABLE / REBUILD 不加。改了一条旧测试:test_analysis_signals_are_registered_as_gaps_that_only_need_a_note 原来断言三种日志正好等于 NOTE_ONLY,NOTE_ONLY 多了 analysis_call_failed 这种不是日志代码的信号,改成比去掉它之后的 ThearchyHelios 2026-10-21 18:08:48 +08:00
  • 8a81fa767e 助手建图认分析能力:节点手册加分析卡一段(用途是模板里固定要做的分析,items / overrides,输入只认调用数据库查询工具的调用工具节点和合并查询,产出 nodes.<id>.results.<项> 可按判定分支,结果不进口径卡)、agent 段补五个分析工具(分析类问题绑,绑了平台注入分析方法,只绑给查库的 agent)、报告段补分析结论的引用写法(a:An、a:An.键、v:An.r0.列、table:An、句末 see:An)和分析说法核对(check 缺省、strict、off,只能往严里改)、分析范围,受管指引和发布前修复的硬性约定写明分析说法核对要严格;搭图规则加一条。问数据的包装加「分析类问题」的形状(input → agent 绑查询、表结构和分析工具 → report 按分析结论写、引用判定语 → output)。报告的证据来源认分析卡。自查:GenerateIn 加 question(问数据的一轮把原问题带上,重来时 instruction 是带着原因的那段话),问题是分析类、查库的 Agent 没绑分析工具、图里也没有分析卡时提一条问题(analysis_tools_missing,带 for_model),照 coverage 只交回模型改一轮,改过一轮仍在的不挡运行、收尾时留作提醒。测试:手册里的引用写法交给真解析器、分析卡与工具的叫法取契约、包装的分析形状、自查只挡一轮与几种不提的情形、重来按原问题判 ThearchyHelios 2026-10-21 18:08:37 +08:00
  • 5617deb80b 分析方法定稿(ANALYSIS_METHOD_PROMPT,guide id 升到 analysis.method@2):在第一版六条上写清按问题选基期(环比比上一个整期、同比比去年同期并写 lag、和目标比要库里有目标,没说就比上一个整期,本期取最近一个过完的整期);周序列的期次在 SQL 里由日期列算出来,写每周第一天的日期(附 SQLite 写法)或 ISO 周,SQLite 的 %W、MySQL 的 %u 不是 ISO 周,直接取现成的周号文本本期齐不齐核对不了;先可比性与基线、趋势,再拆因子与结构、按维度由粗到细,找到主要来源再下钻一层;每次写明在验证什么,拆了不集中也是结论;不作因果断言;阈值不由模型定、算不了照实说、调用写错照说明改;最后交给写作者的文字里列出做过的分析(An)和判定原话。测试守这几件事都在、点名的工具是那五个、五个工具共用这一份 ThearchyHelios 2026-10-21 18:08:25 +08:00
  • 040040d23a 问题意图(app/analysis/intent.py):确定的词表判一句问题是不是分析类问题(原因、变化从哪来、是否异常、波动、趋势、差异站不站得住六类),带版本 INTENT_VERSION 1,给助手搭问数据的图时自查用。只收明确的问法、宁可漏判:问原因的词要和涨跌、高低的说法在同一句(「为什么报错」不算),「原因」要是变化的原因(「退款原因有哪些」是字段不算),「异常」后面是订单、记录这类名词的是业务状态,「系统正常吗」「表结构有什么变化」问的不是数,「持续」前后要有涨跌;按句子认、逗号不分句;英文只收几种明确问法。和说法核对的说法表不共用词表:意图判用户的问题,不判写作者的句子。测试:43 个正例、26 个反例、分句、引文截短 ThearchyHelios 2026-10-21 18:08:16 +08:00
  • 998ab23bae 报告末尾「分析范围」里的编号点得开:证据接口加 GET /runs/{id}/evidence/analyses/{alias}(?report= 同片段接口),交回那份分析结论的出处链(判定 → 方法 → 计算 → 输入 → 复算 → 封存,和点开正文里它的判定语同一条,按导出页已有的 _scope_chain),正文没引用的结论(算不了的、可比性检查)也点得开;只认这份报告证据目录里的分析结论,没有的 404(evidence_analysis_not_found)。选报告、文档完好与否的几种错误挪进 _open_report,片段接口和它共用同一套错误码。测试:同一条链、算不了的照实给原因、目录里没有的和不是分析结论的 404、文档被改过 409 ThearchyHelios 2026-10-21 18:02:34 +08:00
  • 5f61661625 分析工具的 tool.end 另带一小段判定(tools/analysis.event_view:编号、算子、模式、状态、判定码、方向、判定语、算不了的原因码):preview 只是结论 JSON 的前一截(截到 2000 个字符),可加拆解、可比性检查的判定语都在截掉的那段里,问数据时间线照这一段显示,不从 preview 里拼。编号和交回模型的「【分析 An】」同一个(AnalysisScope.next_alias,记台账时 add_result 紧接着按它编),写错的调用不带这一段、不占编号;协作成员按自己的分析容器编号;Agent 写的假设不带。测试:编号与交回模型的一致、判定语只在这一段里、算不了的带原因码、成员自己编号 ThearchyHelios 2026-10-21 17:53:56 +08:00
  • 843be9a556 评测执行的测试不依赖同进程里的数据源个数、等待都有时限:别的测试建的数据源超过评测拍目录快照的上限时,作答运行在排队前就失败,原来的等待循环永远等不到、整次测试卡死(上传源测试和评测测试分到同一个进程时复现);这里的评测不测这个上限,测试里把上限放大,等待改成 30 秒等不到就失败并说清在等什么 ThearchyHelios 2026-10-21 17:17:02 +08:00
  • 24b5aebae4 叫法消毒按词认判断词(scan bare):说法核对修复后 scan 缺省按整句规矩认(没说变化的「主要来自」不算判断),叫法是一个名字不是一句话,「主要来自华东的销售额」这样的叫法要整个不要 ThearchyHelios 2026-10-21 17:12:48 +08:00
  • a02dc41424 合入复核修复(说法核对):结论句判定回到原来的词表(扩充的判断词只给裁判排先后)、表格正文不核、补因果与来源的口子、说法表按样本调整(96 句样本表)、连续按末尾方向核、复核认三种日志且只写说明、分析结论算可引用的来源、自动修复对认不出的取值照 claims 做、候选维度写明只认码值表、scan 加只按词认 ThearchyHelios 2026-10-21 17:12:18 +08:00
  • 2d616d01e8 说法表的 scan 加 bare=True:只按词认、不看上下文(构成、建议计划、业务状态、「相当」的比法、「未见异常」的主语这些只对整句话成立的规矩都不用),给认叫法(度量的叫法、因子名)里夹带的判断词用——叫法是一个名字不是一句话,「主要来自华东的销售额」照样认出来源;缺省照旧按整句的规矩。原因只是指代的那条注释改准。测试:几个叫法按词认、按整句不认 ThearchyHelios 2026-10-21 17:10:43 +08:00
  • 41ad3a1c05 合入复核修复(证据接入与入口):跨段指标不当两期查、证据接口重渲染与组装同一个函数、一次请求同一份结论只复算一次、比率闭合核对、代入式按点名的段、写作目录分析段限额、核对页写方法叫法、运行对比只认做完的执行、读快照进线程、四个工具与合并查询的真算子测试、夹具清源 ThearchyHelios 2026-10-21 16:58:45 +08:00
  • 34097a2339 合入复核修复(算子与分析卡运行器):周号按 SQL 的格式串算真实起止、分析卡里随数据变化的错误记成算不了、同口径先去排序再比、拿不到 p 值判算不了、敏感性只在真实各组找、叫法消毒幂等且不许夹带判断词、趋势连续期数看方向、闭合容差、集中不小于主要、重名列报错、单份快照拆解核本期齐不齐、阈值覆盖运行时再核 ThearchyHelios 2026-10-21 16:58:45 +08:00
  • 2efea2b753 周号超出任何算法(W54 以上)的认不出、算起止超出日期范围的当这一周没有(复核 R3 补):认不出算法时原来按周号排先后,「2026-W99」也会当一周收下,现在周号大于 53 的不当周号写法,原因里照实举它;按算法算起止时日子超出日期能表示的范围(公元 9999 年末)交回没有这一周,不抛异常 ThearchyHelios 2026-10-21 16:56:48 +08:00
  • f5e6e77ea9 测试用的假结论按各算子的形状给(复核 R31):testing.fake_result 不再一律拿可加拆解的结果表——波动基线(期次、value、change、role)、趋势(期次、value、change)、差异检验(a、b、a_value……p_adj、flag)、可比性检查(check、status、base、target、note)各给自己形状的结果表(带列类型)、具名标量、参数和输入(可比性检查是基期、本期两份),数是编的、和判定语对得上;差异检验没写模式时按比率。变化拆解那一份照旧。测试对着真算子核对列和具名标量的键 ThearchyHelios 2026-10-21 16:16:40 +08:00
  • 19bdcf55d8 分析卡运行时对合并后的阈值再核一遍(复核 R28):画图时阈值覆盖只能对着缺省值校验(schema 不改),发起时的设置快照合进来以后可能冲突——管理员把「超出常规波动」调到 3、卡上把「明显超出」覆盖成 2.5,就永远判不出超出。卡上写了覆盖时,运行时对缺省 ← 快照 ← 覆盖合并后的阈值跑一次 contract.settings_problem,有问题让卡失败并说清「阈值覆盖和这次运行的分析设置冲突:…。请改分析卡上的阈值覆盖」(配置错误,不是数据问题,一项都不算) ThearchyHelios 2026-10-21 16:11:00 +08:00
  • d5836eb845 写作目录省略说明里分析结论那几句改成给模型看的常量(ANALYSIS_TABLES_OMITTED_PROMPT、ANALYSIS_TRIMMED_PROMPT、ANALYSIS_LEVEL_PROMPT_WORDS),和别的写作规则同一个认法,界面文案检查不再把它们当界面上的字;「没列出的照样能引用」改成「没列出的也能引用」 ThearchyHelios 2026-10-21 16:10:01 +08:00
  • f7a09eb108 一份快照按期次分组的变化拆解也核本期齐不齐(复核 R20):可加、比率、乘积三种模式用波动基线同一套完整性检查(comparable.period_complete:不到整周、没过完、数据没到、SQL 截掉一部分),本期不齐算不了(partial_target,「本期数据只到 2026-10-20,还差 5 天,和完整的周比没有意义」),核对不了(查不到表的范围、周号认不出算法、期次不是日期)附一句说明,只在证据面板、不进判定语(两份快照时可比性结论照旧进判定语);结论的 params 记下运行当天。期次按 periods.parse_compared 认:周号按 SQL 认算法;快照里往往只有比的两期,值都是日期、推断成按周、期次列又是直接取的日期列(原样、date(列)、DATE(列)、CAST 成日期)时按天认——昨天对上周同一天正好隔 7 天,光看值分不出是两天还是两周。可比性检查按期次分组、没给粒度时同样按它认。证据接口的一条测试(tests/test_analysis_evidence_api.py)跟着补上这一句说明的种类 ThearchyHelios 2026-10-21 16:09:21 +08:00
  • cf1cc568d6 分析范围的候选维度写明只认码值表:剖析目前不记每列的取值数(码值列另有取值分布的观察、键列只核唯一),方案 §3.6 的「剖析的取值数 ≤ 50」等剖析记了每列取值数再补,没有码值表的属性列不进候选(第 1 波复核 R34,记为偏离)。只改注释 ThearchyHelios 2026-10-21 16:09:00 +08:00
  • 9817830d4a 自动修复和门禁对 analysis_claims 写了认不出的值(如 loose)对齐 claims 的做法:G3 那一条修复(_plan_report_policy)不再顺手改成 strict(门禁跳过它、交给校验报),认不出的取值由校验那条 report.analysis_claims_invalid 自己的修复管——受管级别改成 strict(G3 只认它,答案唯一),别的级别不核对、重写一次后标出、重写后仍有的计入缺口三档要人选,不给建议(同 claims_invalid 的 _plan_claims);跳过认不出的取值统一按门禁的 _POLICY_PROBLEMS 判。测试:受管级别 G3 修复只改 numbers、认不出的取值另有一条改成 strict,一起应用后通过;已发布级别三档候选、选了照写 ThearchyHelios 2026-10-21 16:08:22 +08:00
  • 41d95721ce 分析入口的测试补真算子:test_analysis_e2e 加 agent 调波动基线(本周明显超出常规波动、历史新低,本期完不完整按现查的表范围判)、趋势、差异检验(逐行明细,华东的单笔金额高于华南)、可比性检查(两份查询各一周)各一次的端到端,台账、交回模型的那一段、复算逐字段相同都核;分析卡以合并查询为输入跑一次(输入写明 sqlite 方言、工件就是合并查询的快照)。test_analysis_card 的下钻样例 DRILL 原来 by 和 period 是同一列、真算子下会报错:shop 加渠道列(各地区两周的合计不变),DRILL 改成读华东按渠道的那次查询(drill_graph),另用真算子跑一遍下钻(闭合、主要来自线上、parent 是上一项的结论工件、复算一致);夹具改用 scratch_source。过时的说明照实改:替身的用途、口径卡可比性挂钩里「还没有算子」的说法 ThearchyHelios 2026-10-21 16:06:40 +08:00
  • 6503b095cb 报告撰写节点的「上游没有可引用的来源」认分析结论(_CITABLE 加分析结论,_no_evidence 照 00-总方案 D10):「证据来自」只选了分析卡时不再误报没有可引用的来源;分析卡做的结论总能引用,受管级别的正式出具没开「单元格引用」、上游有分析卡结论时也不再报「只有查询结果…无法引用单元格」;Agent 现场做的分析和它查的格同一个规矩,没开单元格引用时照报,说法写明「只有查询结果和 Agent 现场做的分析…无法引用单元格和这些分析结论」,只有查询时一字不变。测试:只有分析卡结论(开没开单元格引用都不报)、Agent 的分析按单元格引用的规矩、什么都没有时点名分析结论 ThearchyHelios 2026-10-21 16:04:42 +08:00
  • 3dd53eaeb1 分析相关用例的数据源夹具前后都删干净:tests/fixtures/sources 加 sqlite_source(建之前先把同名的旧源连同数据目录、剖析和现查缓存删掉,交回新 id,可顺手探好表结构)和 forget_source(删源、数据目录随外键级联删除,再清掉 coverage 现查缓存 _LIVE 里按这个源 id 记的表范围),tests/conftest.py 加共用夹具 scratch_source(按它们建、测试结束时删)。以前各文件的 shop 夹具复用名叫 shop 的源却不清它的数据目录(复核时一条写了目录的端到端串扰了同进程后跑的用例),现查缓存按源 id 记、5 分钟内同一个进程里可能拿到别的用例的旧范围。test_analysis_e2e、test_analysis_e2e_claims、test_analysis_tools、test_metric_comparability、test_contract_analysis_claims 的 shop 夹具改用它(直接建遮罩源的两条用例一并改,去掉 try/finally);test_analysis_tools 开头「算子还没落地」的说明改成照实写替身和真算子的端到端各在哪。测试:旧源留下的数据目录和现查范围在建新源时清掉,删源后现查缓存里没有它 ThearchyHelios 2026-10-21 16:03:10 +08:00
  • 99b1406f8b 复核认分析能力一轮的三种日志:report_analysis_claims(判断词没挂对分析结论、原因没依据,重写后仍有)、analysis_refused(一份分析算不了)、metric_comparability_skipped(口径卡指标的两期没做成可比性检查)登记进 WARN_CODES,按自己的 kind 记、都是缺口(DEGRADED),照 00-总方案 §3.7 只写说明、不自动重来:不进 RETRYABLE / REBUILD,一次运行的信号全是这几种(NOTE_ONLY)时复核不叫模型,说明照信号原话写——以前没登记一律按笼统的 warn 叫一次复核模型。「改过一次」的 report_repair 按最后一次核对定档时,只剩只重写一次、留在报告里标注的违规(check 下的分析说法,和同一类的缺失断言 absence_claim)也算改好了:它们各有自己的信号,以前 report.checked 的 ok 为 False 就判没改好、多报一条;复核被别的信号叫起来时照实说「重写后只剩已标出的 1 处分析说法」,一处都没改掉的不说改好了。strict 下的分析说法是出具缺口、带满 20 条的可能还有别的,照旧判没改好。测试:三种信号的 kind 与级别、只有这几种信号时不叫模型(复核接口也是)、和别的信号一起时照常叫、check 与缺失断言的剩余算改好、strict / 还有别的违规 / 带满 20 条照旧 ThearchyHelios 2026-10-21 16:02:46 +08:00
  • fd8e392f48 维度列、期次列和结果表的固定列重名时报调用错误(复核 R17):结果表的列 id 是输入的维度列(期次列)加上固定的几列,维度列叫 flag、base、target、delta、share(可加)或 mix、rate、total、w_base……(比率),期次列叫 value、change、role(波动基线、趋势)时列 id 重复,引用结果表的格会认错,下钻还会报「A1 按 0 列拆」。common.reserved_check 不分大小写挡住这些名字,告诉 agent 在 SQL 里换个别名(比如 AS flag_name);这是结构性的调用错误,分析卡里照旧让卡失败 ThearchyHelios 2026-10-21 16:02:44 +08:00
  • 9298278fbb 两份页面脚本的测试跟上方法叫法和比率的闭合核对:可验证报告核对页的「方法与版本」写「变化拆解(可加) · decompose.additive@1」「可比性检查 · comparable@1」(服务端带来的叫法加 id);导出页点开比率拆解的判定语,总数那一格写「整体比率那一格」、闭合核对写「整体比率 x 与各段分子之和 ÷ 分母之和 y 闭合」,不写「各段之和」(比率拆解的那次封存运行抽成 ratio_run,证据接口和页面两处共用) ThearchyHelios 2026-10-21 16:00:44 +08:00
  • 472f78344d 分析设置要求「集中」的合计占比不小于「主要来源」的占比(复核 R16):contract.settings_problem 加一条(没写的项按缺省补齐了比),说法用 LABELS 的叫法:「「集中」的合计占比不能小于「主要来源」的占比」——原来「主要来源」0.9 配「集中」0.5 能通过,一段占 60% 时判分散、判定语却说「没有哪一段占到 90%」。设置页写进来的、分析卡上的覆盖都按它挡;api/settings.analysis_values 读存着的一组时这一对对不上同样两项都按缺省(同另外两对) ThearchyHelios 2026-10-21 16:00:29 +08:00
  • efff2ac4f8 闭合容差:整数的浮点按个位、下钻对上一层的精确值按精确比(复核 R15):总数那一格是整数的浮点(SQLite 的 ROUND() 交回 2120.0)时按取到个位算容差(差 0.4 也闭合),最短写法里的「.0」不再当一位小数;下钻时对上一层那一段的值是上一层算出来的精确值、没有取整过,只容浮点算出来的最后几位(相对 1e-9),820.4 对 820、700.3 对 700 不再算闭合。可加、比率两种下钻同一套 ThearchyHelios 2026-10-21 15:59:11 +08:00
  • fcbcfc9aef 判定语照方向接末尾连续期数、辛普森的结构变化只说一遍(复核 R14、R21):趋势末尾连续同向的期数和趋势同向时接「,已连续 3 周下降」,反向时接「,但最近已连续 3 周上升」,不再出现「呈下降趋势……已连续 3 周上升」。比率拆解判在结构变化上(mix_driven)时正文已经说了结构变化、点了那一段,辛普森那一句只说「各段的退款率大多在下降,整体却上升」;别的判定照旧带上哪一段占比从多少变到多少 ThearchyHelios 2026-10-21 15:57:51 +08:00
  • f05dd9e21c 「连续」按趋势结论记的末尾连续同向核(values 的 run_direction、run_length),不再先要整体判定是上升或下降:算子修复后趋势判定语在方向相反时写「,但最近已连续 N 期上升」,句子照它写「最近已连续 4 周上升」要对得上,整体没有明显趋势、末尾连续下降的也能说连续。句子写了期数的(「连续 5 周上升」「三连降」「十二连涨」,阿拉伯数字、全角数字、一到九十九的中文数字)要 run_length 不少于它,没写的至少 3 期;方向对不上照旧报相反;没记 run_direction 的老结论按整体的趋势方向。测试:期数不够、整体下降而末尾连续上升、没有明显趋势而末尾连续下降、老结论,和各种写法认出的期数 ThearchyHelios 2026-10-21 15:56:49 +08:00
  • 3fd5d1309c 说法核对按复核调整(说法表 v1,还没有线上文档,不升版本)。来源和因果的口子:「主要由」不再吃掉「由于」(主要由(?!于),「主要源于」归来源类);原因按因果词的那一边认(「由于、因为、原因是、源于、得益于」后面,「导致、造成、引起、所致、是…的主要原因」前面、「由华东造成」在「由」和「造成」之间,「受…影响」中间),挂了拆解、原因点名的是它的段才按来源核,否则按因果核——「华东下降主要由于促销结束」「下降主要由促销结束造成」不再通过;没挂拆解的,原因不是目录里拆解的段时另报,认不出时照旧并进同一分句的来源判断;原因只是指代(「以上是下降的主要原因」)不核。来源类判断要点名拆解里的段:「主要来自」「集中在」「以…为主」看判断词后面,「主导」「贡献最大」看前面(同一分句没点名的往前找最近点了名的分句),拖累拉动带动照旧看整个分句;挂了拆解却没点名任何一段(「下降主要来自线上渠道」挂按地区的拆解、「主要来自新客流失」)判对不上,同一分句引用了判定语、比率拆解说「结构变化」「自身变化」的不用点名。误报去掉:来源、集中、分散、主导、拉动带动要这句话到这个分句为止说了变化才核(构成不核);建议、计划、预测、假设的分句不核(「建议」「下周」「避免」管到后面的分句);「异常」前面是订单、物流、支付、门店、营业、库存、设备、账号的是业务状态(后面跟着涨跌的照核),「异常的 + 名词」不核;「无异常」「未见异常」主语要是指标或波动;「来源于」不是「源于」;「表结构变化」不是结构变化;「相当」只认比几组、几样的,比上期的不核。漏报补上:「是…的主要原因」「主要原因是」、「近七成 / 超过一半 / 大部分的降幅来自」、「主要靠 / 在 / 体现在」、「以…为主」、「创」和「新高」之间 0–4 个字、「显著 + 涨跌」、「趋势向好」「波动较大」「三连降」「远高于往常」「异动」「一涨一跌」。写作规则补一句「写来源要点名是哪一段」,异常类的说法带上「显著上升或下降」。样本表 tests/test_analysis_claims_lexicon.py:复核的 70 句加这次看清楚的 26 句,每句期望的类或不核,以后改说法表都过这张表;和复核标记不一样的只有「退款主要集中在生鲜品类」(说的是构成,不核);绑定测试补上复核列的几个口子 ThearchyHelios 2026-10-21 15:56:03 +08:00
  • 427a6df23c 差异检验拿不到 p 值照实说、敏感性只在真实的各组里找离群值(复核 R8、R9):一对都拿不到 p 值(比率有一组样本量为 0;均值、逐行有一组不到 2 个样本,或均值、标准差为空)时算不了,契约 REASONS 加 untestable,原因写哪一组怎么了(「华东只有 1 个样本、华南只有 1 个样本,算不了差异」),不再判 ok + 可能只是样本波动;只有一部分拿不到的,那几对不算进比了几对、不参与校正,表里写清哪一组怎么了,判定语后接「另有 n 对算不了(…)」(契约 CAVEATS 加 untested,排在判定语附带说明的前面)。逐行模式比三组以上时,离均值最远的那一笔只在真实的各组里找(原来池子里混着各对的「其余各组合计」,第一组以外的离群值删不到它自己那一组,漏报 outlier_sensitive),去掉以后由各组重建每一对的「其余」合计再检验 ThearchyHelios 2026-10-21 15:56:16 +08:00
  • 475d1a2bda agent 分析时按本节点查询认表,同一条 SQL 一个节点里只解析一次:context_of 加 tables_cache(SQL → 用到的表),AnalysisScope 带一份、分析工具每次调用交进去。以前每次分析调用都把本节点全部查询的 SQL 从头解析一遍(目录、剖析事实、探查都按表给)。测试:两条查询、三次分析,每条 SQL 只解析一次 ThearchyHelios 2026-10-21 15:53:07 +08:00
  • 460af221f9 同口径先去掉最外层排序、按去掉日期的写法比(复核 R7):same_query 不再只在规范形式完全相同时才把日期换成占位——两边都去掉最外层的 ORDER BY(同一层有 LIMIT / OFFSET 时不去:排序决定取哪几行),时间条件的界(字面量、按运行当天现算的都算)和像日期的字面量换成同一个占位后规范化再比:一样就通过,只差字面量判「两边除了日期,筛选的还不一样」,还不一样才交给 explain_sql_diff;交给它的也去掉最外层排序、现算的界换成按先后编号的日期字面量(它只认字面量的时间范围),只差时间范围、排序的照旧算同口径。只有一边带 ORDER BY、上周对本周到今天这类现算界写法不同的不再落进兜底判成结构不同,两份快照的变化拆解也不再因此不拆 ThearchyHelios 2026-10-21 15:51:30 +08:00
  • 9339facf9a 运行对比里的分析卡只认做完了的那次执行:analysis.end 先按卡记在这一次执行里,见到这张卡的 node.finished 才算数(新的 node.started 清掉上一次没做完的)。分析卡执行到一半失败时前几项已经发了 analysis.end,以前运行对比会把这次失败执行的判定当成结果列出来、也算进执行次数。测试:中途失败的那次不列、不算次数,失败后重来做完的按做完的那次对比 ThearchyHelios 2026-10-21 15:50:15 +08:00
  • 27ac11fa5f 可验证报告的核对页给分析结论的方法写上中文叫法:服务端在随文件附带的分析结论条目上带 method_label(contract.method_label,和导出页同一份),verifier.js 的数字详情、指标上的可比性两处「方法与版本」照导出页写「变化拆解(可加) · decompose.additive@1」,页面只显示、不另起叫法;条目上没带叫法的只写 id。以前只显示方法 id。测试:分析结论、口径卡指标上的可比性两种条目都带叫法 ThearchyHelios 2026-10-21 15:49:06 +08:00
  • 6e38df4fbf 分析卡里随数据变化的调用错误记成算不了的一项,不让卡失败(复核 R6):analysis.run 加参数 refuse_data_errors(缺省假),为真时 DATA_ERRORS 里的调用错误——上一层没做成 parent_refused、下钻的段这期没有 parent_key_missing、期次这期没有 period_not_found(变化拆解、波动基线的本期、差异检验按期比、可比性检查)、总数那一格越界或为空 row_out_of_range / headline_empty、要比的组这期没有 unknown_group / too_few_groups、要用的那一格这期为空 empty_cell(乘积拆解的乘积和因子;差异检验的计数为空原来报的是 not_count,改报 empty_cell)——记成 status refused 的结论:契约 REASONS 加 parent_refused、input_unavailable,CallError 加 reason(照实说是哪一项、哪个值,不带改法),判定语「{叫法}没有做成:原因」;params 照调用原样(label 照样消毒),取过还没记用法的快照都记进输入(Inputs.settle,角色照第一次取时的),上一层在核对它做没做成之前就记进输入,复算按它们走到同一处;阈值和判定标准同各算子自己算不了时那一份(各模块的 USED / refusal_basis,算子本身也改用它)。recompute 一律按真复现;结构性的调用错误照旧抛。分析卡运行器传真,agent 工具不传。顺手:段数不够的原因里维度叫法和汉字之间照 say 的规矩补空格 ThearchyHelios 2026-10-21 15:47:30 +08:00
  • fa33b98fef 写作目录有省略时,分析结论一段最多占预算的一半(_PROMPT_ANALYSIS_SHARE):每条结论四种样子从全到简(ANALYSIS_LEVELS:full 连同结果表的前几段、compact 结果表只写一句、brief 只留判定语和具名的数、head 只列编号那一行),先都按 compact 列,超了按结论的先后从后往前降成 brief、再降成 head;结果表的段照旧先于查询的行补,但这一段补完也不超过上限。开头那句照实写各样子各有几条,以及没列的照样能引用(判定语写 [[a:编号]]、结果表写整表引用、没列出的具名的数不要编造);只是结果表没列各段的照旧那一句。以前这一段没有上限,40 份结论、每份 1000 段时在 51.2k 的预算里占 50.6k,查询只剩一行摘要;现在占 25.6k 以内,那次查询列满 20 行。测试:20 份结论截到 compact + brief、80 份截到 brief + head,这一段不超过一半、越往后越简、编号都在、查询照样展开 ThearchyHelios 2026-10-21 15:47:00 +08:00
  • 83c5c04d76 关键数的代入式找判定点名的那一段,维度值按算子写段的同一个函数比(_decompose_row 用 app.analysis.phrases.key_text:空值写「(空)」、布尔写「是 / 否」,两列用「·」连),段的叫法也照它写。以前拿原值的 str 去比 subjects,空值、布尔维度的段对不上,代入式退回结果表第一行,写成了反方向变化最大的那一段。测试:点名的段是空值、布尔、又不在第一行时,代入式写的是点名的那段 ThearchyHelios 2026-10-21 15:41:38 +08:00
  • 40918a7fb1 可疑实体找「最接近的名字」时重建的目录(_scope_catalog)不收分析结论:候选只看表和字段,用不到结论的内容,以前每点开一个可疑的名字都把这次运行的分析结论读盘、复验一遍哈希(build_catalog 给 A 条目装整份结论)。查询、表和字段的编号不受影响。测试:台账里有分析结论时重建目录不读任何工件,按报告节点和退回不分范围两条路都是 ThearchyHelios 2026-10-21 15:39:43 +08:00
  • 2e57c401e6 说法核对不核表格正文的格(原来只跳过表头):一格是一个值不是一句话,写作者表格里状态列的「异常」、说明列的「主要来自线上」「持续增长」每一格都单独报没挂分析结论;裁判的预筛 judge.claim_priority 本来就不送表格的格。测试:表格九格都不报,表格外的列表照核,组装和复核一样 ThearchyHelios 2026-10-21 15:38:54 +08:00
  • 0acf9fb3a8 叫法消毒做到不再变化、截到第一个分句标点、不许夹带判断词(复核 R12、R18):clean_label 反复去引用标记、数字、符号、空括号直到不变(「销售额[ [v:Q1.r0.gmv] ]」去完数字拼出的「[[v:Q.r.gmv]]」接着去掉),再去掉剩下的方括号、截到第一个分句标点(,。;:!?、,.;:!?)之前、去掉截完没配上对的左括号,整个过程再做到不变,消过的再消一遍不变——复算拿记下的叫法再消,判定语逐字相同。消完的叫法里有说法表的判断词(engine/analysis_claims.scan,在函数里导入)就整个不要,退回下一个来源;目录叫法、当叫法用的列名同一个函数,同样处理 ThearchyHelios 2026-10-21 15:37:48 +08:00
  • 7e2ee912b3 结论句的判定回到原来的方向词、因果词(evidence._DIRECTIONAL 照 main 原样):W1-d 为了让裁判优先判判断句把「主要、集中、异常、偏离、持续、趋势、显著、大幅、新高、新低、抵消、分散」等加进了 _DIRECTIONAL,可 _classify 用同一个正则认结论句,没有数字、没有引用的「下面是主要渠道的表现。」「促销期间活动效果显著。」「整体运行平稳,未见异常。」就成了结论句,结论句策略要求挂依据(模板 ⑨ 和已发布的受管版本都这么写)时计入缺口、出具降档,改了已发布版本的档位;出口的 io._concluding 也照它认代码块里的正文。扩充的判断词挪到 judge._JUDGEMENT,只给 claim_priority 排送判的先后(结论句里有它们的排第二)。测试:判断词让结论句先送判、不让连接性的话变成结论句;结论句要挂依据、出口带契约的周报多写这三句,档位照旧 formal、没挂依据的结论 0 句 ThearchyHelios 2026-10-21 15:37:41 +08:00
  • 496dc27419 比率拆解的总数闭合核对:证据面板的输入一步按拆解的模式认 headline 对着哪个数(_HEADLINE_TOTALS 分可加、比率两套:可加对各段之和 base_total / target_total,比率对整体比率即各段分子之和 ÷ 分母之和 r_base_total / r_target_total),closure 带上 mode;比率拆解的两格角色写「基期整体比率」「本期整体比率」。以前只认 base_total / target_total,比率的 headline 在证据面板不显示闭合核对。导出页(report_export/runtime.js)比率的写「整体比率 x 与各段分子之和 ÷ 分母之和 y 闭合 / 对不上」、那一格叫「整体比率那一格」,可加的照旧。测试:可加拆解的 closure 带 mode、角色叫法不变,比率拆解两格各自闭合、复算一致 ThearchyHelios 2026-10-21 15:37:20 +08:00
  • cf8ec15831 周号按 SQL 里的格式串算真实起止(复核 R3):「YYYY-Www」不再一律当 ISO 周。periods.week_scheme 看期次列在最外层 SELECT 里的写法(从 CTE、子查询里原样取出的往里找),认格式化函数里配套的年份和周号——SQLite strftime 的 %Y-%W / %Y-%U / %G-%V、MySQL DATE_FORMAT 的 %Y-%U / %Y-%u / %X-%V / %x-%v、PostgreSQL / Oracle to_char 的 YYYY-WW / IYYY-IW;week_span 按算法算一周的起止(W00、W53 按各自的算法,不走 fromisocalendar),先后按算法排(跨年切开的两期也连着)。认不出算法(方言不知道、只取了现成的字符串、年份和周号不配套)的起止置空,本期齐不齐一律核对不了、附说明,绝不判齐,先后按周号排。按年截断的算法里跨年切开的那两期不到整周:当本期判 partial_target,当比较期判 target_gap 并说清只有几天,不算进波动基线的历史(附 partial_periods 说明,只在证据面板),趋势取最后连着的整周。可比性检查按期次分组时也走这套:有一期不到整周的按实际天数比窗口、照算星期构成。period_unreadable 的原因里举认不出的那几个值(写法认不出、写法混着的少数、算法里没有的那一周、对不上给的粒度分开说);比较期那一格为空时照实说为空,不再说成缺期(趋势往前断开的原因同样分开说)。期次是序号、周号认不出算法时也附一句核对不了。契约 CAVEATS 加 partial_periods ThearchyHelios 2026-10-21 15:35:00 +08:00
  • b6efee81fd 一次请求里同一份分析结论只复算一次:_Sealed 加 rechecks(结论工件 id → 复算的结论,只活在这一次请求里),_analysis_recheck 按工件先查它。导出页里同一份结论被判定语、具名的数、整表展开的每一格、分析范围的编号各引一处,引用键不同、各接一条链,以前每条链各复算一次(1000 段的拆解导出一次复算 33 次、1.66 s,现在 1 次、0.2 s)。分析范围的编号先查导出的 memo:正文已经引了判定语的(同一个引用键)不再建一遍链(_scope_chains 换成按编号建的 _scope_chain,引用键 _scope_cite_key)。测试:判定语、具名的数、整表 12 格、依据、分析范围一起导出只复算一次,各链的复算一步照样是复算一致;下一次请求重新复算 ThearchyHelios 2026-10-21 15:34:37 +08:00
  • 8a62826034 证据接口重新渲染分析结论的引用改用组装、出口复核同一个函数:_analysis_rendered 按封存的结论走 evidence.resolve_ref(resolve_ref 加 display,按文档记下的单元格显示规则),结果表的格照结果表记的列类型、显示规则、标识列渲染,和组装时的 _resolve_cell 一致。以前不看列类型和显示规则,文本码值「1203」重渲染成「1,203」、ISO 日期时间带着 T,render_ok 为假,证据面板和导出页报假的「与按结论渲染的结果不一致」。片段上没记引用的(口径卡指标上的可比性、分析范围的编号)照旧按判定语渲染。测试:门店码、时段两种格在片段接口和导出页数据块里都 render_ok ThearchyHelios 2026-10-21 15:32:21 +08:00
  • 3b06202b15 口径卡的可比性挂钩只在两期之间做:两份同形 SQL 不同的字面量里至少有一对两边都是日期或期次(_dated_pairs:data/coverage 认出的时间条件的界,含 yr = 2026、month = '2026-09'、week = '2026-W41'、按运行当天现算的 date('now', '-7 days'),加上别处认得出的真正的日期,和可比性算子「同口径」一项同一套认法)才查;只差地区、门店号这类字面量的(华东对华南的倍数、门店 1203 对 1204)是两段不是两期,不查、不记日志,带契约的出口不再因此判两期不可比、降档。日期和地区都不同的照查,真算子判不可比。基期、本期的先后只按日期、期次排(_period_key:真正的日期按那一天,月、周、季、年按同一种写法的先后),去掉会把门店号、偏移量当期次的 [\dW\-/Qq]+ 那条;排不出的照旧是表达式里先出现的那份算本期。读查询快照放进线程(asyncio.to_thread),不占着事件循环。测试:只差地区、只差门店号不查,日期和地区都不同照查且按日期定基期,各种写法认不认得出、先后怎么排,真算子下华东对华南的倍数照常正式出具、日期和地区都不同的判不可比降档 ThearchyHelios 2026-10-21 15:28:59 +08:00
  • a286792e13 分析范围的「检验」照方案写明校正过没有:W1-d 在 ScopeBlock 里记了 corrected,导出页(report_export/build.render_scope)和可验证报告的核对页(verifier.js renderScope)只写了次数;只做了一次的接「(一次里比了几对的已按次数校正)」,不止一次的接「,几次检验之间没有按次数校正」,两处同一种说法;测试补上 corrected ThearchyHelios 2026-10-21 14:49:02 +08:00
  • d307d087bc 审计单列一行的分析说法违规码改为引用 engine/analysis_claims.CODES,去掉 api/evidence 里另写的一份字面量 ThearchyHelios 2026-10-21 14:47:19 +08:00
  • 5fad78a264 补一条贯穿第 1 波四个包的端到端测试(tests/test_analysis_e2e_claims.py):Agent 查两次库(两周总数、按地区两周)、调变化拆解(带总数核对闭合),写作模型引用判定语和句末依据,另一句故意写「主要来自华南」;check 下重写一次仍不符就标出、档位和写对了的那次一样,strict 下按最多重写次数重写后计入缺口降档、报告节点那条不重复收;出口独立复核核出的和报告节点同几处;判定语的出处链六步、复算逐字段相同,审计单列标出的那一处;文档的分析范围按数据目录写出拆过地区、没拆渠道,Agent 写的假设不进 ThearchyHelios 2026-10-21 14:15:52 +08:00
  • 72be600ea2 转正 W1-b 的端到端测试(tests/test_analysis_e2e_evidence.py):分析卡、agent 分析工具、口径卡指标上的两期可比性各发起一次真运行,片段接口的出处链、证据图、审计、报告导出、可验证报告都按封存的输入真复算、逐字段相同;打印改成断言 ThearchyHelios 2026-10-21 14:08:56 +08:00
  • 5f96a23452 分析次数上限照实按每个 Agent 每次执行说:设置叫法「Agent 每次执行最多分析几次」,次数用完的调用错误「这个 Agent 这次执行最多做 N 次分析,已经用完」(入口按本节点这次执行的分析容器数次数,本来就是这样算的) ThearchyHelios 2026-10-21 14:08:56 +08:00
  • e11a461a10 可验证报告认分析卡一项做完的事件改用 EventType.ANALYSIS_END,去掉 bundle/build 里的字面量 _ANALYSIS_END ThearchyHelios 2026-10-21 14:08:56 +08:00
  • d529e5f694 算子的叫法只留契约一份:contract.OP_LABELS / MODE_LABELS 是唯一来源,趋势定为「趋势判断」;engine/labels 的 ANALYSIS_OP_LABEL 直接引用 OP_LABELS、ANALYSIS_MODE_LABEL 按 MODES 从 MODE_LABELS 分到各算子(分析卡校验、应用说明、前端表单照它),phrases 去掉 OP_NAMES,「{叫法}没有做成」的判定语和算子的调用错误都用契约的叫法 ThearchyHelios 2026-10-21 14:08:56 +08:00
  • a81a0a66ac 合入 W1-d 说法核对:说法表与绑定、check / strict / off、出口独立复核与文档版本、分析范围、血缘口子、G3 ThearchyHelios 2026-10-21 14:00:07 +08:00
  • 4afe8e6f4f 合入 W1-c 入口:五个分析工具与方法注入、分析卡、口径卡可比性、运行对比按项对齐、设置与快照、使用者白名单 ThearchyHelios 2026-10-21 13:59:06 +08:00
  • 28db25631d 合入 W1-b 证据接入:台账 A、写作目录、a / v:A / table:A / see:A 引用、出处链与复算、证据图、审计、导出与可验证报告、裁判摘录、账本跳过 ThearchyHelios 2026-10-21 13:58:18 +08:00
  • cb2fdd860f 证据接入按 W1-a、W1-c 的实际接口对齐:复算就是真的 app.analysis.recompute——load 交查询快照工件的原内容、load_result 交上一层结论(只认封存范围内交回过的查询、台账记过的结论,取不回照实说取不回哪一份),方法升没升版按结论里的 method 和现在的 contract.METHODS 比(升了版、复算成立的写结果同不同,现在的方法复算不了的写明原因),去掉为算子没落地准备的那一套;关键数的代入式按真的具名的数写(乘积拆解补上,波动基线按变化率比的按百分比写,负数加括号)。口径卡指标上的可比性结论(不进台账、只从卡上引用)点得开:证据面板的指标步骤带它整条出处链(判定 → 方法 → 计算 → 输入 → 复算 → 封存,封存按卡上记的 sha256 认),报告导出收在一个可展开的块里,可验证报告随附带的卡一起附上、④ 按已核对的卡认它、数字详情里展示各项检查和服务端复算;裁判的指标摘录、写作目录照卡上记的判定语写。现查结果分清按运行当天现算的界、一列一个值都没有、表的范围;可验证报告里分析工具的 tool.end、分析卡的 analysis.end 和结论同一个认法才带内容,输入的角色写叫法。测试改用真算的结论(run 交的输入照分析入口的写法,复算交工件原内容),下钻、总数闭合、方法升版、可比性端到端都过真的复算 ThearchyHelios 2026-10-21 13:49:09 +08:00
  • aa62393edb 出口认分析结论的引用:报告引用的判定语、具名标量、当依据的分析结论按结论工件记进「引用的查询」(结果表的格原来就会走到),顺着结论的输入找到查询,输入查询没通过 SQL 检查的照样计入缺口(受影响的引用写「A1(判定语)」「A1「top_share」」「A1(结论依据)」);逐个数字的出处里具名标量照实记成分析结论(analysis: A1.top_share),不再记成空的运行输入 ThearchyHelios 2026-10-21 13:29:23 +08:00
  • 472115c817 说法核对接上证据接入(W1-b)和真算子(W1-a):一句的分析依据按引用的编号认(A 开头、目录条目 kind analysis),判定语 [[a:A1]]、具名标量 [[a:A1.键]] 整段不扫,[[see:A1]]、[[see:A1.r0]]、[[see:a:A1]] 都当依据;目录条目只带摘要的(存进文档的那份)复核时按工件取回整份结论(_Snapshots.analysis)。算子、模式的叫法从契约取(OP_LABELS、method_label)。比率拆解的结构为主、各段自身为主(判定语就说「主要来自…」)也能挂来源类判断;ASCII 的段名认整词时,挨着的汉字不算连着。去掉测试里代为解析 [[see:A…]] 的替身;新增挂真算子结论的绑定测试:可加拆解的主要来源与拖累带动、分散、持平带抵消、比率拆解的结构变化、乘积拆解的因子、波动基线的方向和新高新低与正常波动、趋势的方向和连续期数、差异检验两组的先后、算不了的基线,以及经组装和复核时判定语、具名标量不扫 ThearchyHelios 2026-10-21 13:29:23 +08:00
  • 71dc16bc1a 分析能力入口(七):按 W1-a 算子库的实际接口对齐。工具参数名以算子为准:差异检验的均值是 mean / sd / n 或 sum / sumsq / n,逐行是 value,可选 pairs / reference;可比性检查另收可选的 measure、grain(不收 label);分析卡的参数校验用同一份定义,运行当天、目录事实、下钻层数由算子自己记,分析项里写了不收。交给算子的输入是工件库里那份查询快照原样(含 SQL 检查结果 checks、「查询区间里这张表没有数据」no_data、查询当时记下的遮罩),加上出处和遮罩列(数据源设的、按 SQL 认出改了名字的、遮罩运行里查询时就遮掉的),合并查询写明 sqlite 方言;agent 的容器在分析前把每份换成完整快照(每份只取回一次)。探查器改用 analysis.make_prober(数据源名 → 按运行固定版本解析出的源,coverage.Cache 一个节点里共用),剖析事实一律用 analysis.probe.profile_facts(查询工具的覆盖检查也改用它,原来那段同样的取法删掉)。分析次数用完交回 analysis.exhausted 的那句;口径卡的可比性写成 {工件, 判定码, 判定语, analysis.comparable_reasons 拆出的原因},删掉自己拆原因的那段。加真算子的端到端测试:agent 变化拆解并下钻(父结论按内容哈希认)、审批恢复重放不再算、分析卡的波动基线和变化拆解(本期完整按现查的表范围判)、口径卡跑真可比性检查(可比、有条件可比带原因),每份结论都按封存的工件复算、逐字段相同 ThearchyHelios 2026-10-21 13:27:12 +08:00
  • e40847c142 合入 W1-a 补丁:快照列类型的标注照实际形状;结果表带列类型(文本码值不加千分位) ThearchyHelios 2026-10-21 13:23:35 +08:00
  • 707218a9a4 分析结论的结果表带上列类型:ResultTable 加可选的 column_types({列 id: 类型},写法同查询快照)。维度列照输入快照里那一列查询时记下的类型(文本型的码值 "1203" 不会被渲染成「1,203」,没记类型的不写),数值列 number,说明、叫法这类文字列 text;差异检验和「其余各组合计」比时对照组那一列写 text;可比性检查表全是 text。契约里 InputSnapshot.column_types 的标注改成实际形状 dict[str, str] | list[str | None](to_payload 给的是 {列: 类型},按列序的列表也认)。复算逐字段相同照旧成立 ThearchyHelios 2026-10-21 13:19:27 +08:00
  • 9f014560fe Merge branch 'an1/b' into an1/d ThearchyHelios 2026-10-21 13:19:10 +08:00
  • bea1119a6c 说法核对按算子的真实结论形状对齐:点名的段只认拆解的维度列(params.by,乘积拆解是因子叫法)和差异检验的 a、b 两组,别的算子没有段;比率拆解的 n_base、n_target 是度量列;「抵消」除了 offset 也认判定为基本持平、各段有涨有跌的(持平的判定语本身说了此消彼长) ThearchyHelios 2026-10-21 13:16:48 +08:00
  • d2b5096e97 合入集成分支 an/w1(W1-a 分析算子库):证据接入按真的 run / recompute 对齐 ThearchyHelios 2026-10-21 13:14:48 +08:00
  • fdbf896dd4 Merge branch 'an/w1' into an1/d ThearchyHelios 2026-10-21 13:13:11 +08:00
  • 010e74b006 Merge branch 'an/w1' into an1/c ThearchyHelios 2026-10-21 13:13:04 +08:00
  • a690b5c571 门禁 G3 加一条:受管级别的报告撰写节点要把「分析说法核对」设为严格(REPORT_POLICY 加 analysis_claims: strict,没写时运行时是 check、只标注)。受管级别挡住发布、已发布级别只警告,写错的值交给校验;已经发布的版本照常运行(按缺省的 check 核),下次发布才按新规则查。同一份要求自动跟到自动修复(一键写明)、一键升级成受管、按口径出具起草的报告节点;自动修复「不许放宽」的判断认这一项(从严格改回去算放宽);白话补一句分析说法;模板 ⑨ 的报告节点补上这一项,拿来照旧能发布成受管。各处「受管要求都满足」的图(测试夹具)跟着补上这一项 ThearchyHelios 2026-10-21 13:13:04 +08:00
  • 8a5f96be4b 出口契约:分析说法出口独立复核、指标可比性、引用模式的血缘口子。引用模式下 verify_doc 按文档记下的那一项再核一遍分析说法:处置取文档和报告节点产出里更严的那个,strict 有违规记一条缺口(降档),报告节点报上来的同一条不重复收,check 只写进出具声明(analysis_claims,counted 为 false),要求 strict 却没有核对记录的照实记缺口,老文档不核。口径卡指标上的可比性(MetricComparability):报告引用了的(引用模式按文档,别的按数字回指)和契约必需的指标两期不可比记缺口,有条件可比的只写进出具声明(comparability)。血缘(D15):收齐报告引用的指标([[m:]] 片段和句末依据里的 m:),按卡上记的输入认追不到原始数据的,受管级别的正式运行记缺口,其余写进出具声明的 untraced(counted 为 false);_untraced_gaps 拆出可传子集的 _untraced。现有受管正式运行的两条用例(裁判判档)档位不变、缺口里多一条血缘,断言不涉及缺口列表,不用改 ThearchyHelios 2026-10-21 13:12:24 +08:00
  • 767b1ac07a 报告撰写节点加「分析说法核对」(analysis_claims:off / check / strict,缺省 check)和「分析范围」(analysis_scope:auto / off,缺省 auto),画布校验和执行时报同一句话(report.analysis_claims_invalid / analysis_scope_invalid),界面叫法进 labels,运行对比登记这两项。check:判断词没挂对分析结论、原因没有依据的句子交回写作者重写一次(不按最多重写次数反复),仍有的标在报告里、写一条日志 report_analysis_claims,不影响档位;strict:按最多重写次数重写,仍有的写进产出的 issuance_gaps(另记 analysis_gap);两种都不让节点失败(不挡生成);off 不核、写作规则和文档一字不变;升级前发起的运行照旧。写作者角色改成「挑重点、组织结构、说清变化;有分析结论时说清变化来自哪里;原因只按证据写」,写作规则按目录里有没有分析结论各加一段判断词规则,重写请求列出违规和修法;这次有分析结论、取值 auto 时每一稿文档都带系统写的 analysis_scope。产出和 report.checked 记下处置。几个测裁判、结论句策略、审计表的用例写作者那句「增长主要来自新客」没有拆解可挂,把分析说法核对关掉 ThearchyHelios 2026-10-21 13:12:15 +08:00
  • a6f7572a9e 报告文档里系统写的「分析范围」(engine/analysis_scope,契约 ScopeBlock):按写作目录里的 A 条目照实写现象(可比性、基线、趋势)、拆过(按下钻链,上一层在前)、排除(分散的拆解、差异可能只是样本波动的检验)、算不了(带原因)、检验次数;agent 写的假设不进这一段。没拆的候选维度确定地从数据目录算:拆解所用查询 SQL 里的事实表(目录标了 fact / log,没标且只读一张表时就是它)上标成属性、状态、不遮罩(数据源设置和查询当时记下的遮罩列)、取值不多(码值表不超过 50 个取值或已列全)的列,加上关联的维度表(标了 dimension 或多对一)上同样的列;拆解按的列对不上目录、读不到目录、源还没有目录、取不回查询、认不出事实表的,not_decomposed 为 None、note 照实写核对不了。目录经这次运行的目录视图读(data/catalog_view,关掉的当核对不了),出错不挡报告。契约的 ScopeBlock 加一项 corrected(检验之间有没有校正:只做一次为 true、不止一次为 false、没做为 None) ThearchyHelios 2026-10-21 13:12:05 +08:00
  • 7acee0faed 分析说法核对的说法表与绑定(engine/analysis_claims):判断词分来源、分散、抵消、结构、异常、新高新低、正常、趋势、无趋势、差异、无差异、因果几类,一处定义、带版本(LEXICON_VERSION 1);只收强判断词(「持续」要跟着涨跌、「异常」后面是订单数据这类名词或前面是数据系统的不算、「相当」只认句读前的,「大幅」按细案收进异常类、要跟着涨跌动词);否定(前 4 个字以内、跳过「出现」「明显」这类填充词,「不但」「不少」「无论」不算)翻到反面类;来源与因果分界(因果词所在分句点名的是拆解的段或因子按来源核),推测说法、同句的知识库原话和运行输入豁免因果,说的是数据本身的原因不算;不扫判定语(a:)、知识库原话(q:)、别的引用渲染出来的字、标题、代码块、表头。绑定:一句的分析依据按这次重新解析的引用算,A 条目经 contract.catalog_result 读,核判定、点名的段(全半角归一)、拖累拉动的方向、新高新低、连续的期数,挂了算不了的结论算对不上;违规三种(analysis_claim_uncited / analysis_claim_mismatch / causal_unsupported),每条带判断词、句子、类、要的 op、这句挂的 A、给人看的和交回写作者的各一句,同一分句同一类只报一处。挂点:compose_doc 收 analysis_claims(check / strict)时文档顶层记下处置和说法表版本,verify_doc 只核记了这一项的文档(按记下的版本,认不出的记 bad_schema),老文档复核结果和统计一字不变;_DIRECTIONAL 补主要、集中、异常、偏离、持续、趋势、显著、明显高于 / 低于等预筛词(列提纲、建议、引出图表的写法除外),裁判优先判这类句子 ThearchyHelios 2026-10-21 13:11:56 +08:00
  • f816fc4c25 合入 W1-a 分析算子库:五个算子(变化拆解三种模式与下钻、波动基线、趋势、差异检验、可比性检查)、纯 Python 统计、规范十进制、判定语与标签消毒、目录事实、期次、现查与复算;Wilson 移到 analysis/stats 共用 ThearchyHelios 2026-10-21 13:11:45 +08:00
  • ab98c7430c 分析算子收尾:复算剔除系统字段改用同一个 DERIVED_PARAMS;去掉没用的导入和小函数;测试按仓库的写法从 tests.analysis_samples 导入样例 ThearchyHelios 2026-10-21 13:08:14 +08:00
  • d8375c2251 可验证报告认分析结论:报告引用的(含分析范围里点名的)分析结论按原字节嵌入,连同它的输入快照和下钻的上一层结论;任一份输入快照证明不了没碰遮罩列的,结论也只给 id;分析卡的节点完成事件在它的结论都随文件附带时才带内容。导出时服务端按封存的输入复算一遍,结果记在结论的条目上。核对页:③ 遮罩白名单加分析结论,④ 按「已核对的分析结论的输入」认输入快照,⑤ 判定语、具名的数、结果表的格逐字核对是不是结论里写的那几个字(同服务端的渲染规则,不在浏览器里重算统计),数字详情里有分析结论一节(判定语、判定标准、方法与版本、附带说明、Agent 写的假设、输入的核对状态、导出时服务端的复算结论),正文后面渲染分析范围、编号点得开。另在 node 里用最小的 DOM 替身把导出页、核对页点开分析结论的路径各跑一遍 ThearchyHelios 2026-10-21 13:07:55 +08:00
  • 7474fa5030 证据接口认分析结论:封存范围按台账记下分析结论;证据图的 A 条目带算子、判定、谁做的,连「派生自」的边到它的输入(Q…)和下钻的上一层(A…);片段接口的出处链为判定 → 方法 → 计算 → 输入(每份输入落到哪个 Q、用了哪些列和行、headline 闭合、下钻的上一层,接输入快照的查询步骤并照常遮罩)→ 复算(按 sha256 取回封存的输入、在线程里复算并逐字段比,算子没落地、出意外照实写复算失败,不让接口出错)→ 封存,结论哈希不符的只给判定和封存两步并写明原因;Agent 写的假设标成 Agent 写的假设;片段说明分判定语、具名的数、结果表的格三种。指标步骤展示口径卡记的两期可比性(点得开那份可比性结论)。审计:分析判定、分析结论的叫法,结果表的格按台账认封存,分析说法核对的三种违规单列一行,违规码补上判断词未挂分析结论、判断与分析结论不符、因果说法没有依据,以及原来就缺的依据写在句子中间、缺失断言。报告导出:判定语片段按引用键共用出处链,分析范围里的编号接同一条链。裁判的 loader 把分析结论的输入快照也逐份遮好 ThearchyHelios 2026-10-21 13:07:55 +08:00
  • 4dd6889e69 报告导出认分析结论:点开判定语、具名的数、结果表的格,面板依次是判定(判定语、判定标准、点名的段与方向、这一处引用的是哪一项、谁做的、附带说明、Agent 写的假设)、方法(方法与版本、参数、实际用的阈值、现查的表范围)、计算(关键数的代入式、具名的数、结果表,引用的格高亮)、输入(角色、落到哪个 Q、用到的列和行、总数那一格的闭合核对、下钻自哪个 A,后面接输入快照的查询步骤)、复算、封存;指标那一步另展示两期可比性。报告文档带系统写的「分析范围」时,正文后面服务端渲染这一段(现象、拆过按下钻缩进、排除、算不了、没拆、检验次数),编号点得开同一条出处链;没有这个字段的文档一个字都不多。顺手修掉查询步骤「共 N 行」那一行把函数原文当标签显示的老毛病 ThearchyHelios 2026-10-21 13:07:55 +08:00
  • 7e95703a94 结论句裁判与口径账本认分析结论:引用了分析结论的句子,裁判摘录里给方法与版本、判定语、判定标准、关键数、附带说明、结果表(被引用的行先给)、输入取自哪几个 Q 用了哪几列和它们的 SQL、下钻自哪个 A(核查 agent 的摘录照旧分段遮);摘录里有分析结论时裁判规则另加一条(判定是系统算的,只判句子说法和判定是否一致,分析说明不了原因),没有分析结论的报告规则一字不差。口径账本不给分析结论里的数(判定语、具名标量、结果表的格)标口径、不按它们投影比对、不进整题判断的计数,也不算成没比对 ThearchyHelios 2026-10-21 13:07:36 +08:00
  • 855a559300 分析结论进证据链(引擎):台账 kind analysis 的条目在写作目录里按台账先后编 A1、A2……(只收报告祖先里的,报告节点的「证据来自」按做它的节点过滤),条目照 catalog_result 的约定带着从工件取回、复验过哈希的整份结论,取不回、哈希不符的记明原因;存进报告文档的目录只留摘要,整份结论按工件取回。引用:[[a:A3]] 渲染判定语(一个片段,种类 analysis,整段涂白、不算裸数字),[[a:A3.键|换算]] 渲染具名标量(换算同指标),[[v:A3.r0.列]]、[[table:A3 …]] 取结果表(表头写结果表的列名,表头里的数不算裸数字),[[see:A3]]、[[see:A3.r0]] 当依据;写错的编号、键、越界的行、判定语加换算都照实说为什么。受管级别的正式出具、契约没开「单元格引用」时,Agent 现场做的分析和它查的格同一个规矩,分析卡做的照常引用。写作目录加「分析结论」一段(判定语、判定标准、具名的数、结果表前 table_top_k 段与其余几段、附带说明、算不了的原因、来自哪几个 Q、下钻自哪个 A、输入查询的 SQL 检查问题,外加引用写法一句),放不下时判定和具名的数一律列出、结果表排在查询的行前面补、最后才退;口径卡指标上的可比性(有条件可比、不可比)照实写出原因。SQL 问题顺着分析结论的输入往下找。另有复算(analysis_recheck:算子没落地、调用写错、出意外都照实写「复算失败:原因」,方法升版写明前后两版)、复算用的输入快照、关键数的代入式,证据面板、导出、可验证报告共用 ThearchyHelios 2026-10-21 13:07:36 +08:00
  • 8137f0cf37 分析契约补两样(只加不改):算子、模式给人看的叫法(OP_LABELS、MODE_LABELS,method_label 拼成「变化拆解(可加)」),证据面板、写作目录、审计、导出、可验证报告、裁判摘录同一份;按形状认一件工件是不是分析结论(is_result:op 是五个算子之一、method 是文字、inputs 是列表),证据接入取回结论工件、SQL 问题顺着结论的输入往下找、可验证报告认嵌进来的工件都按它认 ThearchyHelios 2026-10-21 13:07:36 +08:00
  • 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 只用记下的、不现查;判定码、原因码、附带说明码都在契约里;输入记下方言和遮罩列名,复算逐字段相同;测试用虚构零售库,每个用例都核对复算 ThearchyHelios 2026-10-21 13:04:58 +08:00
  • 6a96083dcb 分析能力入口(六):口径卡的可比性挂钩(engine/nodes/metrics.py 的 _comparability):一个指标的输入里取自查询快照的格(cell() 取的格、按位置取的格、Agent 按出处交来的字段)恰好落在两份不同的快照上,两份 SQL 按规范化(data/sql_semantics.normalize_sql,按数据源的方言)同形、只差字面量、查的是同一个数据源时(本周对上周),口径卡执行时调分析算子 comparable(早的那期作基期:第一处不同的字面量是日期或同样写法的期次的按先后,认不出的表达式里先出现的那份算本期),结论落成工件,指标上记 comparability(contract.MetricComparability:工件、判定、判定语、fail / warn 的原因,原因先按结论表的 status 一列取,没有再按判定语拆)。SQL 结构不同(退款额 / 销售额)、两次是同一条 SQL、数据源不同的不是同一个量的两期,不查也不记日志;同一对快照一张卡里只查一次。快照读不出来、探查失败、算子出错、算不了、还没有算子(第 1 波的 run 抛 NotImplementedError)都不挡口径卡,照实记一条 metric_comparability_skipped,这个指标不写 comparability ThearchyHelios 2026-10-21 13:03:38 +08:00
  • 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) ThearchyHelios 2026-10-21 13:03:35 +08:00
  • e079e0ba88 分析能力入口(五):运行对比里两次运行的分析卡按节点和项的标识对齐(engine/compare.py 的 analyses,最小可用):按封存范围内每项一条的 analysis.end 认,循环里执行了几次的取最后一次(照实写进说明);每项列出两次的状态、判定、方向、判定语和结论工件,change 写 same / verdict(状态或判定变了)/ phrase(判定一样、判定语里的数变了)/ added / removed,不拆变化来源 ThearchyHelios 2026-10-21 13:03:29 +08:00
  • 654cc23c85 分析结论的数与判定语:numbers.py(快照里的数换成精确的 Fraction,写成规范的十进制字符串:不带指数、去尾零、没有 -0,除不尽的和浮点留 12 位有效数字,同输入逐字节同输出);phrases.py 一处定义判定语模板(细案 01 §7.2)、数的写法(百分比一位小数带正负号、量千分位最多两位小数、百分点,ROUND_HALF_UP 同 render_cell)、label 消毒(去引用标记、出具校验认的数字写法、单位符号,≤ 20 字,空了退回目录叫法和列名)、附带说明的一句话(判定语后最多接两条)、照实际阈值写的判定标准 ThearchyHelios 2026-10-21 13:03:23 +08:00
  • fc6d4bd92d 分析能力入口(四):发起运行时把分析设置快照进 run.options["analysis"](engine/launch.py 的 _with_analysis_snapshot,照核查设置的 _with_verify_snapshot):只在图(含一层层套着的子工作流,同一个工作流的同一版只读一次)里有分析卡、或 Agent / 协作成员(节点上没写就取图级 defaults)绑了任一分析工具时写,调用方已经给了这一组的照它的;别的图 options 原样不动,run.started 一字不变。runner 本来就把整份运行选项放进 RunContext.extra,分析工具、分析卡、口径卡的可比性检查都只读这一份,没有快照的现读设置。子工作流的遍历抽成 _any_graph,核查设置的判断照旧 ThearchyHelios 2026-10-21 13:03:23 +08:00
  • 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 例子、小样本精确分布对照暴力枚举) ThearchyHelios 2026-10-21 13:03:12 +08:00
  • 3009a43cee 分析能力入口(三):分析卡(节点类型 analysis,和口径卡平级,engine/nodes/analysis.py)。配置 items: [{id, op, mode, from, params, hypothesis}] 和阈值覆盖 overrides;画图时校验(schema.analysis_issues,执行前同一套再过一遍):至少一项、标识合法且不重复、分析方法和模式是契约里的、输入(from,或两份查询的 base_query / target_query,总数两格落在的节点)指向上游的调用工具 / 合并查询节点(Agent、不产出查询的节点、不在上游的报错,调用别的工具的只提醒)、参数和 agent 工具同一份定义且不能写阈值、下钻指向同卡排在前面的变化拆解、阈值覆盖按 contract.settings_problem。执行照合并查询的做法从 state.nodes 取上游的查询快照 id、复验哈希,只认台账里 kind query 的快照,遮罩列同证据面板;参数里的 {{ }} 先渲染;阈值是缺省 ← 发起时的快照 ← 卡上的覆盖;每项的结论落成工件、台账记一条带 item 的 kind analysis、发一条 analysis.end;产出 nodes.<卡>.results.<项> = {status, verdict, direction, values, phrase, artifact},条件分支能按判定走、成果能取判定语。一项算不了照实记(analysis_refused),不让卡失败;调用写错让卡失败并说清是哪一项、怎么改。登记:事件 analysis.end、叫法「分析卡」「分析项」「阈值覆盖」和分析方法、模式的叫法,编译器,治理(分析卡算可追溯的节点;受管级别分析卡的输入要是数据库查询或合并查询 governed.analysis_input,画布那条同义的提醒不再重复列;口径卡读分析卡的结果给提示 governed.caliber_analysis_input,输入按 via analysis 记、追不到原始数据),升级提醒的证据类节点,变量表(每项的结论、对上游节点的引用),数据目录影响面(同合并查询经由输入),助手查看的工作流说明,两条新编号的白话 ThearchyHelios 2026-10-21 13:03:00 +08:00
  • 601b84918d 分析能力入口(二):五个 agent 分析工具(analysis_decompose / baseline / trend / differ / comparable,名字取 contract.TOOL_NAMES),参数只有「算什么」(引用本节点查过的结果 Q3、列的角色、期次、总数 headline、下钻 parent、度量叫法、在验证什么),没有阈值参数;五个工具共用一份「分析方法」说明(ToolSpec 新增 guide:方法说明 + 去重用的 id,register / build_tools 透传进工具的 metadata),Agent 节点、协作成员绑了任一分析工具就接在 Skill 后面注入 system,同一份只注入一次,模型调用节点不注入。Agent 建工具时经 ToolContext.extra 交一个本节点的分析容器(app/tools/analysis.py 的 AnalysisScope),每次查询记台账时往里放一份输入快照(编号和「【证据 Qn】」同一个),分析结论落成 analysis_result 工件、台账记 contract.ledger_entry(带 call_id),交回模型「【分析 An】」加判定语、判定标准、关键数、附带说明、算不了的原因、结果表前几段;tool.end 带 analysis_artifact;下钻按 An 取本节点的结论;调用写错(contract.CallError,含这个节点的分析次数用完 max_calls)作为工具错误交回、不记台账、不占编号;算不了照样记结论并发一条 analysis_refused。编号只在记台账时放进容器,审批恢复重放时分析不再执行、编号不错位。遮罩列按证据面板同一个函数认(数据源设的、按 SQL 认出改了名字的),遮罩运行交给算子的是遮过的快照。阈值读发起时的快照,没有就现读设置;运行期依赖给运行当天、按运行目录视图读的目录、剖析事实、现查表范围的探查(W1-a 的 make_prober,还没有时不给)。协作成员同样注入方法、同样编号(协作节点不记台账)。使用者问数据的白名单加上五个分析工具和分析卡;调用工具节点调分析工具在画布上就报错(analysis.tool_node)。能力登记不把它们当查询(is_platform_query 不认) ThearchyHelios 2026-10-21 13:02:30 +08:00
  • a9f1555da2 分析能力入口(一):设置加「分析」一组(api/settings.py 的 analysis:判定用的阈值、一次运行最多分析几次、最多下钻几层、列出前几段),键、缺省、取值范围、叫法全取 app/analysis/contract.py(DEFAULTS / RANGES / LABELS / settings_problem),设置接口里和 ledger 组同一个写法:GET 按生效的样子给(存坏了的项按缺省,「明显超出」不大于「超出常规波动」、最多用几期历史小于至少几期的那一对一起按缺省),PUT 先查后写(不认识的键、类型、范围、两两之间的大小,说法用设置项的叫法),浮点的项存成浮点;analysis_settings 给发起时的快照和没有快照时现读用 ThearchyHelios 2026-10-21 13:01:47 +08:00
  • 38906a92ea 分析能力骨架补跨包约定:写作目录里分析条目的读法(catalog_result:A{n} 条目 kind analysis、result 为整份结论)、口径卡指标上的可比性字段(MetricComparability)、报告文档里系统写的「分析范围」结构(ScopeBlock / ScopeItem) ThearchyHelios 2026-10-21 11:55:38 +08:00
  • 844f5571f0 分析能力骨架:app/analysis 契约(结论的工件种类、台账条目、写作目录前缀 A、引用标记 a、分析卡节点类型、五个算子与模式、方法版本、判定码、算不了的原因码、附带说明码、工具名)、设置缺省 / 取值范围 / 叫法与校验、阈值合并(缺省 ← 发起时快照 ← 分析卡覆盖)、复算比较;run / recompute 的签名(第 1 波实现);测试用的假结论 ThearchyHelios 2026-10-21 11:53:43 +08:00