﻿# Sentry 数据附件

对应文章：《一个开源项目里的两套寻路：从“明知已有，另起一套”到“引流用户”》后日谈部分。

本目录是正文所引 Sentry 数字的原始查询结果。每个 CSV 对应一次（或一组分片）查询，查询条件记录在 `queries.json`，查询时间见其中的 `queried_at`。数据来自 MaaEnd 的共享 Sentry 组织，spans 数据集，`span.op:mxu.node`（MaaFramework 的节点 span）。组织成员可在 Sentry Explore → Spans 中按 `queries.json` 里的时间窗、查询串与分组字段复现。

`sentry-data.zip` 是本目录全部文件的打包，`SHA256SUMS.txt` 为各文件的校验值。

## 脱敏

导出只保留聚合结果：pipeline 节点名（仓库内公开）、release 字符串（MXU 与 MaaEnd 版本号）、状态计数。未导出 trace ID、span ID、用户或设备标识、IP、机器信息与日志内容。`d1b` 是逐条失败记录，只保留时间戳、节点名与状态。

## 字段

| 列 | 含义 |
|---|---|
| `node` | `span.description`，即 pipeline 节点名 |
| `release` | Sentry release，格式 `MXU@<MXU 版本>+MaaEnd@<MaaEnd 版本>` |
| `count` | `count()`，采样外推后的 span 数 |
| `count_sample` | `count_sample()`，Sentry 实际存储的 span 数 |
| `ok` / `internal_error` / `cancelled` | `count_if(span.status,equals,…)`，采样外推值 |
| `rc2_custom_action` | 该节点在 `v2.23.0-rc.2` tag 的 pipeline 中的 `custom_action` 取值 |
| `task` | 查询所用的 `task:` 过滤 |
| `window_start` / `window_end` | 分段查询时每一段的时间窗 |

失败 = `internal_error`。`cancelled` 在各数据集中均为 0，列出备查。

## 存储抽样

Sentry 对约 30 天以前的 span 只保留 1/8 抽样。查询窗口只要包含这部分数据，整次查询都走抽样层：`count ÷ count_sample = 8`，`ok`、`internal_error`、`cancelled` 也是乘 8 后的外推值。窗口完全落在近 30 天内时，`count = count_sample`，为实际条数。

正文的换算方式：

- 第四节 rc.2 分组表、“同一节点换引擎前后”表：写的是存储条数。调用 = `count_sample`，失败 = `internal_error ÷ 8`。两列同乘 8 即外推值，比值不变。
- 第四节 v2.30.1 表：窗口在全量保留期内，调用 = `count`，失败 = `internal_error`，均为实际条数。
- 第八节各模块表、折线图、SeizeDeliveryJobs：用外推值，成功率 = `ok ÷ count`。

## 文件与正文的对应

时间均为北京时间（UTC+8）。“后日谈第 N 节”指文章后日谈部分的小节。

| 文件 | 正文位置 | 时间窗 | 行数 |
|---|---|---|---:|
| `d1-rc2-window-em-move-by-node.csv` | 第四节，按 rc.2 实际调用分组的表 | 08-08 00:00 – 08-10 00:00 | 31 |
| `d1b-rc2-window-mapnavigateaction-failures.csv` | 第四节，`MapNavigateAction` 的 2 次失败 | 同上 | 2 |
| `d2-em-move-by-node-and-release.csv` | 第四节，“同一节点换引擎前后”表 | 08-08 00:00 – 09-30 13:30 | 301 |
| `d3-v2.30.1-em-move-by-node.csv` | 第四节，“截至本文发布：v2.30.1”表 | 09-26 14:47 – 09-30 13:30 | 54 |
| `d5-rc2-0807-window-by-node.csv` | 第五节，““不利于” MapNavigator 的一组数字”表 | 08-08 01:30 – 04:15 | 133 |
| `d6-bigmap-teleport-beta5-beta6.csv` | 第八节，大地图选点 beta.5 → beta.6 | 08-19 03:48 – 09-02 03:48 | 48 |
| `d4-modules-nav-nodes-by-release.csv` | 第八节，各模块迁移前后的表与折线图 | 08-06 00:00 – 09-29 21:00 | 541 |
| `d7-seizedeliveryjobs-by-release.csv` | 第八节，SeizeDeliveryJobs 一条 | 08-06 00:00 – 09-30 00:00，分四段 | 248 |

以下“版本”均指 `release` 中 `MaaEnd@` 之后的部分；同一 MaaEnd 版本会搭配多个 MXU 版本，分成多行，复算时先相加。

### d1、d1b：rc.2 窗口，环境监测 31 个 `*Move` 节点

窗口与版本是 isHarryh 面板筛定的：`release:*MaaEnd@v2.23.0-rc.2`，08-08 00:00 至 08-10 00:00。每行一个节点，`rc2_custom_action` 取自 `v2.23.0-rc.2` tag 的 pipeline。

复算：`rc2_custom_action` 为 `MapNavigateAction` 的 7 行一组，其余 24 行（`MapTrackerMove` / `MapTrackerGoal` / `MapTrackerToward`）一组；调用 = `count_sample` 之和，失败 = `internal_error` 之和 ÷ 8。结果为 117 次调用、2 次失败（1.71%），348 次调用、91 次失败（26.15%）。

`d1b` 是前 7 个节点在同一窗口内的全部失败 span，逐条列出，共 2 条，与 `d1` 的存储条数口径一致。

### d2：同一节点换引擎前后

每行一个节点 × release。查询按版本、节点分片，共 11 次。

复算：迁移前取版本 `v2.23.0`；迁移后取 `v2.25.0`、`v2.26.0`、`v2.27.0`、`v2.28.0`、`v2.29.0`、`v2.30.0`、`v2.30.1` 七个版本相加。按 `rc2_custom_action` 分组（同 d1），三个单列节点按 `node` 取出，“其余 21 个”为 24 个 MapTracker 节点去掉这三个。调用 = `count_sample` 之和，失败 = `internal_error` 之和 ÷ 8。

### d3：v2.30.1

窗口在全量保留期内，每行 `count = count_sample`，为实际条数。另有少量 MXU 测试版的行（如 `MXU@2.6.0-beta.1`），一并计入。

复算：分组同 d1；调用 = `count` 之和，失败 = `internal_error` 之和。结果为 17,887 / 759（4.24%）、54,083 / 1,334（2.47%），合计 71,970 / 2,093（2.91%）。

### d5：rc.2 窗口（`2026-08-07T17:30Z – 20:15Z`）

`release` 正向指定 `MXU@2.4.3+MaaEnd@v2.23.0-rc.2`，按任务分片；自动采集有 107 个节点，超过单次查询 100 行的上限，再按节点名分两片。`task` 为查询所用的任务过滤；`rc2_custom_action` 为空的行是非导航节点（`AutoCollectClick`）。

**这份数据复现不出正文的表。** 正文的表是 2026-08-08 按当时的全量数据算的：窗口内共 2,557 次调用，MapTracker 1,597 次、失败 25，MapNavigator 392 次、失败 8。现在 Sentry 对这一窗口只保留 1/8 抽样：

| | 存储条数 | 外推调用 | 外推失败 | 失败的存储条数 |
|---|---:|---:|---:|---:|
| 全部 | 318 | 2,544 | 24 | 3 |
| `rc2_custom_action` 为 `MapTracker*` | 193 | 1,544 | 8 | 1 |
| `rc2_custom_action` 为 `MapNavigateAction` | 56 | 448 | 16 | 2 |
| 非导航节点 | 69 | 552 | 0 | 0 |

外推的总调用数与原值接近。失败只剩 3 条存储记录，按引擎拆开后的比例由抽样决定，这份数据既不能复现原表，也不能推翻原表。原表在正文中照录，并注明了这一限制。

### d6：大地图传送节点，beta.5 / beta.6

只取 `__ScenePrivateMap*` 传送节点，窗口与正文看板读数相同（截至 2026-09-02 03:48 的 14 天）。

复算：按版本相加，`v2.26.0-beta.5` 24 个节点 15,128 次调用、失败 40；`v2.26.0-beta.6` 24 个节点 17,144 次调用、失败 0（外推值）。正文表中的 15K / 102、16K / 27 是看板读数，看板的节点范围与本文件不同，两者方向一致。

### d4：各模块导航节点

每行一个任务 × release。查询按任务 × 小版本（v2.22 至 v2.31）分片，共 70 次，完整过滤条件见 `queries.json`。

复算：同一任务、同一 MaaEnd 版本的行相加，成功率 = `ok ÷ count`。折线图只画合并后调用数超过 500 的版本。

表中各列所取版本：环境监测、自动采集、赠送干员礼物、售卖弹性物资为 v2.23.0 / v2.25.0 / v2.30.1；基质刷取为 v2.25.0 / v2.26.0 / v2.29.0；生态农场为 — / v2.23.0 / v2.30.1；选剑演武为 v2.23.0 / — / v2.30.1。

合计行 = 前五个模块同列的 `ok` 之和 ÷ `count` 之和，结果为 97.74% / 98.29% / 98.00%；去掉环境监测为 99.04% / 98.59% / 98.04%。

### d7：SeizeDeliveryJobs

时间窗切成四段查询（单次结果上限 100 行），`window_start` / `window_end` 标明每行所属分段。各段的 `count`、`ok` 可以直接相加；前段在抽样层、后段在全量层，`count_sample` 跨段相加没有意义。

复算：按 MaaEnd 版本合并四段；节点名含 `Depot` 的（`SeizeDeliveryJobsWalkToDepot*`、`AutoDeliveryNavigateDepot`）为“走到仓库”，`AutoDeliveryNavigateDestination` 为“送往目的地”；成功率 = `ok ÷ count`。“走到仓库”v2.23.0 98.61%、v2.25.0 98.68%，v2.26.0 至 v2.30.1 在 98.56–99.53%；“送往目的地”v2.26.0 83.24%，v2.30.1 93.12%。

## 未能导出的看板与截图读数

以下数字取自当时的 Sentry 看板、截图或当时按全量数据的计算，本目录没有对应的 CSV：

| 正文位置 | 读数 | 来源 |
|---|---|---|
| 第四节 | 左侧失败集中在 `GoToFloraObservationPointMove` | 08/13 在面板上按节点拆分 |
| 第四节 | 正式版全量口径 76,906 次调用、1,727 次失败、97.75%；beta.4 两侧失败率 6.30% / 8.82% | 2026-08-13 查询，窗口为当时的最近 24 小时 |
| 第四节 | MapNavigator 侧 14 个调用点 44 个事件，MapTracker 侧 72 个调用点 129 个事件 | 08/07 10:25 面板截图，截图见正文 |
| 第五节 | MapTracker 1,597 / 25，MapNavigator 392 / 8（共 2,557 次调用） | 2026-08-08 按当时全量数据计算，现存抽样见 d5 |
| 第五节 | 两套埋点在 234 个节点上逐节点失败数一致 | 2026-08-08 核对，按当时全量数据 |
| 第八节 | beta.5 15K / 102（99.3332%），beta.6 16K / 27（99.8386%） | 看板，截至 2026-09-02 03:48 的 14 天；span 级对照见 d6 |
| 第八节 | v2.26.0 330K / 5,101（98.4559%），v2.27.0-beta.3 61K / 830（98.6557%） | “MapNavigator 版本成功率”看板，过去 24 小时，2026-09-02 03:48 |
| 第八节 | `AutoDeliveryNavigateDestination` 2.9K 次、失败率 16.81%；`…WithZipline` 469 次、50.32% | 同日节点级面板 |
| 第八节 | 99.05% → 99.89%，样本 11,158 与 3,591 | [#5075 评论](https://github.com/MaaEnd/MaaEnd/pull/5075#issuecomment-5420040585)（zmdyy0318），原图见正文 |

滚动 24 小时窗口的读数，查询时点已过，且相应时段现只剩 1/8 抽样，无法按原样重跑。
