Commit Graph

4 Commits

Author SHA1 Message Date
ThearchyHelios 41d95721ce 分析入口的测试补真算子:test_analysis_e2e 加 agent 调波动基线(本周明显超出常规波动、历史新低,本期完不完整按现查的表范围判)、趋势、差异检验(逐行明细,华东的单笔金额高于华南)、可比性检查(两份查询各一周)各一次的端到端,台账、交回模型的那一段、复算逐字段相同都核;分析卡以合并查询为输入跑一次(输入写明 sqlite 方言、工件就是合并查询的快照)。test_analysis_card 的下钻样例 DRILL 原来 by 和 period 是同一列、真算子下会报错:shop 加渠道列(各地区两周的合计不变),DRILL 改成读华东按渠道的那次查询(drill_graph),另用真算子跑一遍下钻(闭合、主要来自线上、parent 是上一项的结论工件、复算一致);夹具改用 scratch_source。过时的说明照实改:替身的用途、口径卡可比性挂钩里「还没有算子」的说法 2026-10-21 16:06:40 +08:00
ThearchyHelios 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 开头「算子还没落地」的说明改成照实写替身和真算子的端到端各在哪。测试:旧源留下的数据目录和现查范围在建新源时清掉,删源后现查缓存里没有它 2026-10-21 16:03:10 +08:00
ThearchyHelios 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),不占着事件循环。测试:只差地区、只差门店号不查,日期和地区都不同照查且按日期定基期,各种写法认不认得出、先后怎么排,真算子下华东对华南的倍数照常正式出具、日期和地区都不同的判不可比降档 2026-10-21 15:28:59 +08:00
ThearchyHelios 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 变化拆解并下钻(父结论按内容哈希认)、审批恢复重放不再算、分析卡的波动基线和变化拆解(本期完整按现查的表范围判)、口径卡跑真可比性检查(可比、有条件可比带原因),每份结论都按封存的工件复算、逐字段相同 2026-10-21 13:27:12 +08:00