Files
claw/docs/superpowers/specs/2026-04-08-95598-repair-city-dispatch-operation-analysis.md
木炎 630190e4d3 docs: add command center analysis artifacts
Capture the command-center operation analyses, inventory outputs, and browser pipeline reference files produced during the current research pass so they can be reviewed from the branch.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 10:43:09 +08:00

217 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 95598-repair-city-dispatch 操作分析
## 1. 场景概述
`95598-repair-city-dispatch` 对应“95598抢修-市指”场景,目标是监测抢修工单队列,并在必要时触发提醒、日志写入与自动派单等后续动作。根据 `D:\data\ideaSpace\rust\sgClaw\claw\claw\skills\skill_staging\scenes\95598-repair-city-dispatch\scene.json``D:\data\ideaSpace\rust\sgClaw\claw\claw\skills\skill_staging\skills\95598-repair-city-dispatch\SKILL.md``D:\data\ideaSpace\rust\sgClaw\claw\claw\skills\skill_staging\skills\95598-repair-city-dispatch\scripts\collect_repair_orders.js` 以及两份规则资产,当前最严谨的结论是:本场景的 packaged JS collector 已经实现输入驱动的 `monitor-snapshot` 归一化 / 比较逻辑,会按状态分桶 repair orders、解析 monitor/dispose logs、推导 `pending_ids` / `new_pending_ids`、给出 `success/partial/empty/blocked` 状态,并附带 desk 规则来源、配置基础页与已知问题元数据;但更强的业务监测、提醒与自动派单 workflow 证据仍主要存在于 desk 规则资产中,证据等级分别为 `code-confirmed`
必须显式区分三层证据:
1. packaged runtime-snapshot-collector`collect_repair_orders.js` 已直接实现 repair-order 分类、历史比较、状态判定与标准化快照输出,并显式携带 `workflow_rule_sources``config_base_page``config_base_role``packaged_collector_role``known_issues`,证据等级:`code-confirmed`
2. 业务监测逻辑:`D:\desk\智能体资料\大四区报告监测项\95598抢修-市指_业务检测配置.txt` 直接展示了队列采集、状态分类、监测日志比较、音频提醒与监测日志写入逻辑,证据等级:`code-confirmed`
3. 自动派单 / 提醒逻辑:`D:\desk\智能体资料\大四区报告监测项\95598抢修-市指_自动处理配置.txt` 直接展示了去重、班组匹配、自动派单请求、音频提醒、短信发送、外呼触发与处置日志写入逻辑,证据等级:`code-confirmed`
但这些 `code-confirmed` 只表示“代码或规则资产中存在这些实现分支或动作定义”,不等于“运行时已验证成功”。本文不对运行时成功做任何拔高表述。
## 2. 证据来源
本分析统一只使用四个证据等级标签:`code-confirmed``contract-defined``implementation intent exists but not rigorous / buggy``no direct evidence / candidate only`
1. `D:\data\ideaSpace\rust\sgClaw\claw\claw\skills\skill_staging\skills\95598-repair-city-dispatch\scripts\collect_repair_orders.js`
- 直接定义 `STATUS_GROUPS``LOCAL_SERVICE_ENDPOINTS``WORKFLOW_RULE_SOURCES``CONFIG_BASE_PAGE``KNOWN_ISSUES`,并实现 repair-order 分类、monitor/dispose log 解析比较、`new_pending_ids` 推导、`success/partial/empty/blocked` 状态判定,以及带 `evidence` / `known_issues``monitor-snapshot` 输出,证据等级:`code-confirmed`
2. `D:\desk\智能体资料\大四区报告监测项\95598抢修-市指_业务检测配置.txt`
- 直接实现工单队列采集、按状态分桶、待处理列表比较、音频提醒、监测日志写入,且暴露待处理分类 bug证据等级`code-confirmed`
3. `D:\desk\智能体资料\大四区报告监测项\95598抢修-市指_自动处理配置.txt`
- 直接实现处置日志去重、班组范围匹配、自动派单请求、自动派单成功/失败/异常/未匹配分支、音频日志、短信日志、外呼触发与 `setDisposeLog` 写入,证据等级:`code-confirmed`
4. `D:\data\ideaSpace\rust\sgClaw\claw\claw\skills\skill_staging\skills\95598-repair-city-dispatch\SKILL.md`
- 定义“优先使用 packaged collector、把监测快照与下游动作分离、允许 partial”的运行契约证据等级`contract-defined`
5. `D:\data\ideaSpace\rust\sgClaw\claw\claw\skills\skill_staging\skills\95598-repair-city-dispatch\references\collection-flow.md`
- 定义以页面配置为入口、结合规则资产理解语义、采集状态 `00/01/06/08`、对比 monitor/dispose logs 的一阶流程,证据等级:`contract-defined`
6. `D:\data\ideaSpace\rust\sgClaw\claw\claw\skills\skill_staging\skills\95598-repair-city-dispatch\references\data-quality.md`
- 定义状态分类、partial 规则、empty/failure 区分和下游副作用边界,证据等级:`contract-defined`
7. `D:\data\ideaSpace\rust\sgClaw\claw\claw\skills\skill_staging\scenes\95598-repair-city-dispatch\scene.json`
- 声明场景分类、输入 `time`、依赖和动作类型,证据等级:`code-confirmed`
8. `D:\data\ideaSpace\rust\sgClaw\claw\claw\skills\skill_staging\scenes\95598-repair-city-dispatch\scene.draft.json`
- 展示早期推断中对 `trigger-alert``configServices` 是否拆分的犹豫,属于候选整理结果,证据等级:`no direct evidence / candidate only`
## 3. 实际入口与运行边界
实际入口在 `scene.json` 中已固定:场景页面入口为 `index.html`,技能工具名为 `95598-repair-city-dispatch.collect_repair_orders`,输出类型为 `monitor-snapshot`,输入为 `time`,这些都属于 `code-confirmed`
其中 `assets/scene-snapshot/index.html` 只应被视为配置基础页(例如班组、联系人、范围维护),不应被当作规则 workflow 的主执行证据。
运行边界方面,需要做两个强制区分:
- packaged JS runtime collector 的实际边界:它已经能基于输入 `repair_orders``monitor_logs``dispose_logs` 做状态分类、历史比较、`new_pending_ids` 推导与 `success/partial/empty/blocked` 判定,并返回标准 `monitor-snapshot`;但它仍是输入驱动归一化 collector不直接发起浏览器请求也不直接承载完整业务 workflow证据等级`code-confirmed`
- rule-asset 行为边界:业务检测规则和自动处理规则分别展示了浏览器请求、日志比较、提醒副作用与自动派单副作用,证据等级:`code-confirmed`
也就是说,本场景不能被单句描述成“统一 packaged collector 已完整实现实时队列监测与自动派单”。更严谨的说法是packaged collector 已实现可测试的输入驱动快照归一化 / 比较逻辑;而较强的实时监测与自动处理链路证据仍来自 desk 规则资产,证据等级:`code-confirmed`
同时,`SKILL.md` 与 reference 明确要求把“快照采集成功”与“音频、短信、外呼、自动派单等下游效果”分开表达;这属于运行契约约束,证据等级:`contract-defined`
## 4. 代码已证实的实际操作流程
### 4.1 packaged runtime-snapshot-collector 已证实流程
`collect_repair_orders.js` 中现在能严格确认:
1. 调用 `collectRepairOrders(input)`,读取 `input.repair_orders``input.monitor_logs || input.monitor_log``input.dispose_logs || input.dispose_log``input.local_write_failures``input.blocked_reason` 等输入。
2. 通过 `classifyRepairOrders(...)``STATUS_GROUPS.pending = ["00", "01"]``STATUS_GROUPS.audit = ["06"]``STATUS_GROUPS.processed = ["08"]` 对 repair orders 分桶,并记录未知状态。
3. 从 pending orders 提取 `pending_ids`,再解析 monitor/dispose logs识别 malformed payload并据此推导 `new_pending_ids`
4.`blocked > partial > empty > success` 的优先级计算 `status`,并把未知状态、日志缺失、日志解析失败、本地写失败等写入 `partial_reasons`
5. 返回 `type: "monitor-snapshot"``scene: "95598-repair-city-dispatch"``pending``audit``processed``pending_ids``new_pending_ids``status``partial_reasons`
6. 在返回对象中附带 `evidence.workflow_rule_sources``evidence.config_base_page``evidence.config_base_role``evidence.packaged_collector_role = "runtime-snapshot-collector"`,以及 `known_issues`
7. 模块额外导出 `STATUS_GROUPS``LOCAL_SERVICE_ENDPOINTS``WORKFLOW_RULE_SOURCES``CONFIG_BASE_PAGE``KNOWN_ISSUES`
以上都属于 `code-confirmed`
### 4.2 业务监测规则已证实流程
`95598抢修-市指_业务检测配置.txt` 中可直接确认:
1. 通过 `BrowserAction("sgBrowerserJsAjax2", ...)` 请求 `repairOrder/list`,查询条件包含 `statusName=00,01,06,08` 与当天时间窗,证据等级:`code-confirmed`
2. 将返回列表按状态分到 `list``shlist``ycjList`,并构造 `pending/audit/processed``pendingList`,证据等级:`code-confirmed`
3. 读取 `getMonitorLog`,并基于待处理列表对比决定是否播报音频提醒,证据等级:`code-confirmed`
4. 将监测结果写入 `setMonitorData``setMonitorLog`,证据等级:`code-confirmed`
5. 音频提醒结果会写入 `setAudioPlayLog` 成功/失败/异常三类状态,证据等级:`code-confirmed`
但这里同时存在一个直接可见的 bug待处理判断写成了 `item.status == "00" && item.status == "01"`,这在单个状态值上不可能同时成立,因此规则中的 `pending` 列表构造逻辑不严谨,证据等级:`implementation intent exists but not rigorous / buggy`
### 4.3 自动处理规则已证实流程
`95598抢修-市指_自动处理配置.txt` 中可直接确认:
1. 先写一条“进入自动派单”的监测日志,再读取 `getDisposeLog` 做已派单去重,证据等级:`code-confirmed`
2. 对未派过单的待处理工单,读取 `getClassList`,按 `scope` 对故障地点 `gzdd` 做班组匹配,证据等级:`code-confirmed`
3. 匹配成功时,请求 `repairOrder/initProcess` 进行自动派单,证据等级:`code-confirmed`
4. 自动派单成功时,会触发成功音频播报、短信发送、外呼触发,并写 `setDisposeLog(state="成功")`,证据等级:`code-confirmed`
5. 自动派单失败时,会触发失败音频播报,并写 `setDisposeLog(state="失败")`,证据等级:`code-confirmed`
6. 自动派单异常时,会触发异常音频播报,并写 `setDisposeLog(state="异常")`,证据等级:`code-confirmed`
7. 未匹配到班组时,会触发未匹配音频播报,并写 `setDisposeLog(state="未匹配")`,证据等级:`code-confirmed`
以上动作都只是“规则层实现分支存在”的直接证据,不代表运行时已经验证成功。
## 5. 标准化抽象流程
若为 command-center 做严格抽象,本场景更合理的标准化流程应写成:
1. 接收监测任务输入 `time`
2. 使用规则资产定义的浏览器请求采集 95598 抢修队列。
3. 将源数据分为 `pending``audit``processed`,并保留规则层可见的待处理列表语义。
4. 用 monitor log / dispose log 做比较上下文,得出“新增待处理”或待自动处理集合。
5. 若进入标准配置归一层,再把这些结果映射为 `pending_ids``new_pending_ids` 等 canonical 字段。
6. 先返回或保留监测快照语义。
7. 再执行音频提醒、短信、外呼、自动派单、日志写入等下游动作。
其中第 1 步可由 packaged collector 的显式输入 `time` 支撑,第 3、4、5、6 步可由 packaged collector 的输入驱动归一化 / 比较逻辑支撑,证据等级:`code-confirmed`;第 2、7 步主要由规则资产直接支撑,证据等级:`code-confirmed`;“快照应先于下游副作用表达”这一边界来自 `SKILL.md` / references证据等级`contract-defined`
如果进一步把这个抽象流程说成“已由统一 packaged collector 严格承载实时浏览器采集与自动派单副作用”,那就不严谨了,因为这些更强 workflow 证据仍在 desk 规则资产而不是 packaged collector 中,证据等级只能降为 `implementation intent exists but not rigorous / buggy`
## 6. 输入、上下文与依赖
### 输入
- `time` 是 scene 与 packaged script 共同声明的显式输入,证据等级:`code-confirmed`
- 当天时间窗拼接逻辑出现在业务监测规则中,即 `00:00:00``23:59:59`,证据等级:`code-confirmed`
- “当前队列窗口通常是当天”在 reference 中被明确说明,证据等级:`contract-defined`
### 运行上下文
- 平台 session、org/user 上下文、浏览器可执行 `BrowserAction` 是规则资产和 reference 共同依赖的前提,证据等级分别为 `code-confirmed``contract-defined`
- 页面本身更偏配置页,而真正监测语义来自规则资产,这一点在 `collection-flow.md` 中被明确指出,证据等级:`contract-defined`
### 依赖
- `scene.json` 中声明 `browser``local-service``repair-order-source``history-log``status-classification`,证据等级:`code-confirmed`
- 业务监测规则直接使用 `repairOrder/list``MonitorServices/getMonitorLog``setMonitorData``setMonitorLog``setAudioPlayLog`,证据等级:`code-confirmed`
- 自动处理规则直接使用 `getDisposeLog``getClassList``repairOrder/initProcess``setDisposeLog``setSendMessageLog` 与外呼触发 `mac.callOutLogin`,证据等级:`code-confirmed`
- `configServices` 是否需要单独提升为正式依赖,在 `scene.draft.json` 中仍是待确认项,证据等级:`no direct evidence / candidate only`
## 7. 输出结构
当前输出结构需要分层描述。
### 7.1 packaged runtime collector 已直接定义的输出
`collect_repair_orders.js` 直接定义:
- `type: "monitor-snapshot"`
- `scene: "95598-repair-city-dispatch"`
- `time`
- `pending`
- `audit`
- `processed`
- `pending_ids`
- `new_pending_ids`
- `status`
- `partial_reasons`
- `evidence.workflow_rule_sources`
- `evidence.config_base_page`
- `evidence.config_base_role`
- `evidence.packaged_collector_role`
- `known_issues`
以上全部属于 `code-confirmed`
### 7.2 规则资产已展示的实际快照字段语义
业务监测规则直接构造了:
- `time`
- `type: "95598抢修-市指"`
- `pending`
- `pendingList`
- `audit`
- `processed`
这说明规则层实际快照对象与 packaged stub 的字段命名并不完全一致,尤其是 `pendingList` vs `pending_ids``type` vs `scene`,证据等级:`code-confirmed`
### 7.3 `new_pending_ids` 的证据强度
`SKILL.md`、reference 和 `data-quality.md` 都把 `new_pending_ids` 当作期望输出的一部分,证据等级:`contract-defined`。但在已读规则资产里,能直接看到的是“对 monitor log / dispose log 做比较并决定是否提醒或进入自动派单”,而没有看到显式字段 `new_pending_ids` 被直接写出,因此“存在历史比较意图”是 `code-confirmed`,“`new_pending_ids` 已被当前实现严谨产出”只能标为 `implementation intent exists but not rigorous / buggy`
## 8. 下游动作证据表
| 下游动作 | 当前证据 | 证据等级 | 严谨结论 |
| --- | --- | --- | --- |
| 返回 `monitor-snapshot` runtime collector 输出 | `collect_repair_orders.js` 直接返回对象 | `code-confirmed` | packaged JS 直接证明标准 snapshot 字段、状态判定与 collector metadata 已存在。 |
| 队列采集请求 | 业务监测规则调用 `repairOrder/list` | `code-confirmed` | 队列采集逻辑直接存在于规则资产中。 |
| 音频提醒调用 | 业务监测规则和自动处理规则都调用 `mac.audioPlay(...)` | `code-confirmed` | 只能确认规则层存在音频提醒调用,不代表运行时已验证成功。 |
| 短信发送调用 | 自动处理规则调用 `mac.sendMessages(request)` | `code-confirmed` | 只能确认规则层存在短信发送调用。 |
| 电话 / 外呼触发 | 自动处理规则调用 `mac.callOutLogin(params)` | `code-confirmed` | 只能确认规则层存在外呼触发分支。 |
| 自动派单请求调用 | 自动处理规则请求 `repairOrder/initProcess` | `code-confirmed` | 自动派单请求分支可直接定位。 |
| `setDisposeLog` 成功写入 | 自动处理规则成功分支写 `state="成功"` | `code-confirmed` | 成功路径处置日志写入定义明确存在。 |
| `setDisposeLog` 失败写入 | 自动处理规则失败分支写 `state="失败"` | `code-confirmed` | 失败路径处置日志写入定义明确存在。 |
| `setDisposeLog` 异常写入 | 自动处理规则异常分支写 `state="异常"` | `code-confirmed` | 异常路径处置日志写入定义明确存在。 |
| `setDisposeLog` 未匹配写入 | 自动处理规则未匹配分支写 `state="未匹配"` | `code-confirmed` | 未匹配路径处置日志写入定义明确存在。 |
| `new_pending_ids` 严格产出 | 只在 skill/reference/data-quality 中被要求 | `implementation intent exists but not rigorous / buggy` | 有明确目标语义,但当前读到的规则资产未直接产出同名字段。 |
| 把下游动作结果等同于采集成功 | skill/reference 明确禁止 | `contract-defined` | 契约要求把快照成功与副作用成功分离。 |
## 9. 当前代码疑点 / 不严谨点
1. 最明显的已知 bug 是业务监测规则中的待处理分类条件写成 `item.status == "00" && item.status == "01"`。这会导致 `pending` 分桶逻辑不可能按作者意图工作,证据等级:`implementation intent exists but not rigorous / buggy`
2. packaged collector 与规则资产的输出命名仍不一致collector 使用 `scene``pending_ids``new_pending_ids`,规则对象使用 `type``pendingList`,证据等级:`code-confirmed`
3. `SKILL.md``new_pending_ids` 作为输出重点,但当前直接证据更强的是“做日志比较并决定提醒/自动派单”,而不是“显式产出同名字段”,证据等级:`implementation intent exists but not rigorous / buggy`
4. `scene.draft.json` 仍在犹豫 `trigger-alert` 是否拆成 audio-alert、message-alert、callout 三类动作,说明标准动作建模尚未完全收敛,证据等级:`no direct evidence / candidate only`
5. 虽然规则层存在音频、短信、外呼、自动派单与日志写入定义,但本文不能据此声称这些动作已完成运行时验证,任何这种拔高都不严谨。
## 10. 对 command-center 标准配置的修订建议
1. 对本场景应显式拆分两层实现证据:
- `packaged_collector`: `collect_repair_orders.js` 的 runtime snapshot collector、状态判定、历史比较与 metadata规则来源、配置基础页角色、已知问题证据等级`code-confirmed`
- `rule_asset_workflow`: 业务监测与自动处理规则资产中的真实流程分支,证据等级:`code-confirmed`
2. 在标准配置中把业务监测与自动处理拆成两个子流程:
- `monitoring_flow` 对应 `95598抢修-市指_业务检测配置.txt`
- `auto_processing_flow` 对应 `95598抢修-市指_自动处理配置.txt`
这样可以避免把两份规则混成单一 collector。
3. 输出 schema 建议区分:
- `canonical_snapshot_fields`: `pending_ids` / `new_pending_ids` 等标准字段;
- `observed_rule_fields`: `pendingList` / `type` 等规则层字段。
当前两套命名并存,证据等级:`code-confirmed`
4. 对状态分类增加 `known_bug_note`,明确记录 `status == "00" && status == "01"` 的待处理分类 bug防止后续文档误把 pending 计数写成稳定事实,证据等级:`implementation intent exists but not rigorous / buggy`
5. 对下游动作增加 `effect_channels` 明细,至少拆出 `audio-reminder``sms-send``callout-trigger``auto-dispatch-request``dispose-log-write`,因为这些都已在规则资产中直接出现,证据等级:`code-confirmed`
## 11. 最终严谨结论
关于 `95598-repair-city-dispatch`,当前最可靠的结论是:仓库已经同时存在一个可测试的 packaged JS runtime collector以及两份更强的 desk 规则脚本实现(`D:\desk\智能体资料\大四区报告监测项\95598抢修-市指_业务检测配置.txt``D:\desk\智能体资料\大四区报告监测项\95598抢修-市指_自动处理配置.txt`),其中 packaged collector 已直接实现 repair-order 分类、monitor/dispose log 比较、`new_pending_ids` 推导与 `success/partial/empty/blocked` 状态判定;业务监测规则直接证实了队列采集、日志比较、音频提醒与监测日志写入,自动处理规则直接证实了去重、班组匹配、自动派单请求、短信发送、外呼触发以及 `setDisposeLog` 在成功 / 失败 / 异常 / 未匹配路径上的写入定义,证据等级:`code-confirmed`
但同样必须严格说明:这些 `code-confirmed` 只证明“代码或规则层存在这些实现分支”不证明运行时已验证成功。此外desk 业务监测规则里还存在 `status == "00" && status == "01"` 的待处理分类 bug因此 rule workflow 本身也不能被描述为严谨无误。对 command-center 而言本场景最应该被建模为“packaged collector 已具备输入驱动快照归一化能力、desk rule-asset workflow 证据更强、且监测流与自动处理流必须分开表达”的 monitor scene。