教学服务现为 Launcher 0.1.42 / CLI 0.1.25,本轮 Pivot 平面、网格、TopN、父级占比、首末基准与层级树代表题通过,见升级记录。当前启动信息以 lab/runtime/launcher-start-current.json 为准。
以下保留历史验收:0.1.39 的 12 项向上/层数查询、3 项下钻回归通过,补充验证与示意图;#162 原请求及原生 Pivot 通过,Pivot 验证与复跑。主 Bundle 共 11 个 TM/QM 文件。下方 0.1.38 内容为初验过程,旧计数与阻塞不代表当前状态。
2026-10-23。Runtime http://127.0.0.1:18067;Launcher 0.1.38、CLI 0.1.25;Java 17.0.12 / Python 3.11.5 / Windows。实际监听 PID 为 6580,已核对对应 JAR;Console/FAP 未启用,securityMode 为 none-dev-test-only。
chinook-multidim;命名数据源:chinook-multidim-sqlite;Bundle:chinook-multidim-teaching。data/Chinook.sqlite。通过 SQLite backup 复制原 Chinook v1.4.5,仅新增 EmployeeClosure,不改原表记录。Invoice → Customer.SupportRepId → Employee 归属;仅代表当前客户支持分配,不是历史员工销售业绩。金额沿用样例原始单位。| QM | TM 与用途 |
|---|---|
| ChinookEmployeeDirectoryQueryModel | 员工 TM,目录含无账单员工;公开 employee$id、employee$caption、上级与职位 |
| ChinookSupportInvoiceQueryModel | 账单 TM,公开日期、账单指标与 support$id、support$caption |
当前 JSON describe 将两个 ID 字段标为 hierarchical=true,hierarchyOps 列出五种操作:childrenOf、descendantsOf、selfAndDescendantsOf、ancestorsOf、selfAndAncestorsOf。本章实际使用已公开成员字段加操作符,不猜测未公开的 $hierarchy$id 名称;祖先分组留下一章。
Markdown 由引擎按已加载模型实时生成。当前快照在 evidence,不属于需要手工维护的模型源码。
以下脚本在项目根目录运行,只用于首次建立本章独立环境:
python lab/checks/prepare-chapter-22.py
python lab/checks/onboard-chapter-22.py
python lab/checks/load-chapter-22.py
python lab/checks/verify-chapter-22.py
准备脚本已有数据库时只校验摘要;不覆盖已变更副本。接入脚本注册命名数据源、绑定 Namespace,先 inspect 四张表,再编写模型。加载脚本先 validate,再登记 Bundle、refresh、describe。首次加载已经完成,后续不要重复注册同名资源。
现有环境只读复跑:
python lab/checks/verify-chapter-22.py
复跑时重新获取模型说明,每次另存验证目录。修改模型后应先校验、刷新,再运行该脚本,不把数据源接入脚本当作模型更新器。
| 范围 | 结果 |
|---|---|
| Nancy(2)本人 | 目录存在;2012 年直属账单 0 张,SUM 为空 |
| Nancy 本人及全部下属 | 83 张 / 477.53 |
| Andrew(1)直接下级 | 目录为 2、6;账单 0 张 |
| Andrew 全部后代 | 目录为 2—8;83 张 / 477.53 |
| Jane(3)本人、本人及后代 | 均为 28 张 / 146.60;只查后代为空范围 |
| ID 999 | 员工目录查不到;不能根据账单聚合结果推断存在 |
23 项层级执行通过,覆盖目录、成员姓名/上级、直接/全部后代、包含自身、祖先、深度、叶子、无效成员、账单金额与计数。另 1 项不存在字段在校验阶段拒绝,未执行。旧 chinook 绑定与原账单查询额外回归通过,仍为 83 张 / 477.53。
独立依据是原始 ReportsTo 的内存遍历和 Invoice/Customer 行,不复用引擎闭包 JOIN;金额用 Decimal。原三个教学库及旧模型摘要不变,新副本查询前后摘要也不变。
首次目录保存 actual Runtime 身份、capabilities、命名数据源/绑定与 diagnostics、表结构、模型校验、实时 JSON/Markdown、逐条查询 payload、退出码、响应和生成 SQL。queries 保留正文及边界用例,错误字段文件只用于验证拒绝。
以上为第二十二章阶段记录。本会话实际运行公开 CLI,未另开干净 AI 会话仅凭正文提示词验收;未验证其他数据库、生产身份权限或重启恢复。
数据、Namespace 和 Bundle 沿用上文,原四份模型不改。新增以下 4 个文件,共 8 个文件校验、刷新通过:
| 新增源码 | 用途 |
|---|---|
| ChinookSupportRollupQueryModel.qm | 复用原账单 TM,以 ref/name/alias 公开 ancestorId、ancestorName,同时保留实际支持人员与账单字段 |
| ChinookEmployeeRollupQueryModel.qm | 复用员工目录 TM,按祖先统计成员数,核对内部节点自身也被包含 |
| ChinookSupportPivotModel.tm | 复用账单关联定义,增加 SQLite 方言年月属性 yearMonth |
| ChinookSupportPivotQueryModel.qm | 公开交叉分析所需维度和两个原生指标 |
祖先列采用字符串 ref 加明确 name/alias,经过 describe 确认进入公开 schema;不能直接把未出现在元数据中的内部路径交给 AI 猜。无别名探索与被拒绝的多 $ V2 ref 记录保留在此前 runs 中,正式创建脚本只使用已通过的方案。
首次增加上述文件时,在项目根目录运行:
python lab/checks/prepare-chapters-23-25.py
python lab/checks/verify-chapters-23-25.py
准备脚本仅写本轮四个模型、校验刷新与获取说明,不重新注册数据源、不修改数据库。它用于教材初次准备;已有自定义模型先审阅差异,日常只复跑 verify。
| 当前结果 | 证据 |
|---|---|
| 第 23 章 7 项执行通过 | 五个节点汇总、Nancy 单节点、三人展开、Jane 的 16 位客户/28 张账单、重叠范围合并、员工自身计数 |
| 第 24 章 1 项普通长表通过 | 十月/十一月的 14 个有业务组合逐格与原始行核对,两月 80.24 / 14 张 |
| 第 25 章 3 项普通分组参照通过 | 完整父级、仅美国范围、全年各月,用于后续分母与基准核对 |
| 9 种 Pivot validate 阻塞 | 6 种普通/树形组合、3 种派生指标;同一入口缺陷,未执行 |
| 第 22 章回归 | 23 项实际执行及 1 项错误字段拒绝通过,数据库与原模型摘要不变 |
本轮验收 · 初始加载目录 · 最新复跑目录 · Pivot 失败位置与复现。
Pivot 校验入口问题已提交 引擎 #162,请求、响应、关键日志和完整复现模型均在 issue 正文中,发布后已回读核对。
每次 verify 保存独立目录,包括原始输入、CLI 响应与退出码、当前元数据、源码/数据库保护检查、日志尾部及独立基线。reference-matrix.json 与 independent-pivot-oracle.json 是普通分组和 Python 原始行核对的参照,不是原生 Pivot 输出。未来 validate 通过时,脚本会标记待补逐格执行验收,不自动宣称计算通过。