Phase 2 测试与验证报告 - MaybeAI Sheet CLI

生成时间:2026-07-01 13:19:41 ;分支:feat-phase2-command-tree;基准提交:6472af6;工作目录:/Users/dengwei/work/ai/maybeai-uni/mcp/maybeai-sheet-cli

总体结论

PASS

Phase 2 已实现已验证的公开 play-be 路由命令;缺失路由保持未实现。

本地测试

81/81 PASS

uv run python -m unittest discover -s tests -v 通过。

真实 API 验证

PASS=29 / FAIL=0 / SKIP=0

真实请求已发送到 https://play-be.omnimcp.ai

验证工作簿

https://www.maybe.ai/docs/spreadsheets/d/6a44a2abef4212b56a15f5d0?gid=0

Document ID: 6a44a2abef4212b56a15f5d0

范围

本报告覆盖 docs/superpowers/plans/2026-07-01-mbs-agent-friendly-phase-2.md 中 Phase 2 的已验证命令族:worksheet lifecycle、row、column、range search、style、formula calculate/lineage、history、file。

以下命令保持未实现:range used-rangerange last-rowrange last-columnformula compile。原因是没有公开 routed API 合同。

流程

sequenceDiagram participant User as 用户/Agent participant CLI as mbs CLI participant API as play-be /api/v1/excel participant Book as 一次性验证工作簿 User->>CLI: 创建 workbook + 写入 seed 数据 CLI->>API: workbook/range/formula Phase 1 基础请求 API->>Book: 创建并写入 Sheet1 User->>CLI: 执行 Phase 2 命令族 CLI->>API: worksheet,row,column,range,style,formula,history,file API->>Book: 真实变更/读取/导出 CLI-->>User: JSON envelope + endpoint + target Note over CLI,API: 所有请求发送到 https://play-be.omnimcp.ai Note over Book: 验证工作簿 6a44a2abef4212b56a15f5d0
Mermaid 源文本
sequenceDiagram
  participant User as 用户/Agent
  participant CLI as mbs CLI
  participant API as play-be /api/v1/excel
  participant Book as 一次性验证工作簿
  User->>CLI: 创建 workbook + 写入 seed 数据
  CLI->>API: workbook/range/formula Phase 1 基础请求
  API->>Book: 创建并写入 Sheet1
  User->>CLI: 执行 Phase 2 命令族
  CLI->>API: worksheet,row,column,range,style,formula,history,file
  API->>Book: 真实变更/读取/导出
  CLI-->>User: JSON envelope + endpoint + target
  Note over CLI,API: 所有请求发送到 https://play-be.omnimcp.ai
  Note over Book: 验证工作簿 6a44a2abef4212b56a15f5d0

验证命令

命令结果说明
uv run python -m unittest discover -s tests -vPASS81 个本地单元测试全部通过,包含 Phase 2 CLI、endpoint registry、verbose metadata。
uv run mbs ... --helpPASS已检查 mbsworksheetrangeformularawrowcolumnstylehistoryfile 帮助输出。
uv run mbs ... real endpoint flowPASS创建一次性工作簿并执行 29 个真实 play-be 请求,全部通过。

真实请求明细

用例结果EndpointCLI 命令备注
workbook.create PASS /api/v1/excel/write_new_sheet mbs workbook create --title Phase2 Verify 20260701-131626 --sheet-name Sheet1 创建一次性验证工作簿。
range.write seed PASS /api/v1/excel/update_range mbs range write --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 --range A1:E4 --values /var/folders/_2/mz1mjyr1731b3j13_htf0txr0000gn/T/mbs-phase2-live-1kj_qcda/values.json --verify 写入基础数据并执行 read-back verify。
formula.set seed PASS /api/v1/excel/formula/set mbs formula set --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 --cell E5 --formula =SUM(B2:D2) 为后续 formula.calculate 和 lineage 准备公式单元格。
worksheet.create temp PASS /api/v1/excel/write_new_worksheet mbs worksheet create --doc-id 6a44a2abef4212b56a15f5d0 --name Phase2Temp 真实 play-be 请求返回成功。
worksheet.rename PASS /api/v1/excel/rename_worksheet mbs worksheet rename --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Phase2Temp --new-name Phase2Renamed 真实 play-be 请求返回成功。
worksheet.copy PASS /api/v1/excel/copy_worksheet mbs worksheet copy --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Phase2Renamed --new-name Phase2Copy 真实 play-be 请求返回成功。
worksheet.move PASS /api/v1/excel/move_worksheet mbs worksheet move --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Phase2Copy --index 1 真实 play-be 请求返回成功。
worksheet.delete PASS /api/v1/excel/delete_worksheet mbs worksheet delete --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Phase2Copy --yes 真实 play-be 请求返回成功。
row.insert PASS /api/v1/excel/insert_rows mbs row insert --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 --row 5 --count 1 真实 play-be 请求返回成功。
row.move PASS /api/v1/excel/move_rows mbs row move --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 --row 5 --count 1 --destination-row 6 真实 play-be 请求返回成功。
row.delete PASS /api/v1/excel/delete_rows mbs row delete --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 --row 6 --count 1 --yes 真实 play-be 请求返回成功。
column.insert PASS /api/v1/excel/insert_columns mbs column insert --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 --column F --count 1 真实 play-be 请求返回成功。
column.move PASS /api/v1/excel/move_columns mbs column move --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 --column F --count 1 --destination-column G 真实 play-be 请求返回成功。
column.delete PASS /api/v1/excel/delete_columns mbs column delete --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 --column G --count 1 --yes 真实 play-be 请求返回成功。
column.width PASS /api/v1/excel/set_columns_width mbs column width --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 --start-column A --end-column E --width 96 真实 play-be 请求返回成功。
range.search PASS /api/v1/excel/search_sheet mbs range search --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 --query revenue --max-results 10 真实 play-be 请求返回成功。
style.freeze-panes PASS /api/v1/excel/freeze_panes mbs style freeze-panes --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 --cell B2 真实 play-be 请求返回成功。
style.auto-filter.set PASS /api/v1/excel/set_auto_filter mbs style auto-filter set --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 --range A1:E4 真实 play-be 请求返回成功。
style.auto-filter.remove PASS /api/v1/excel/remove_auto_filter mbs style auto-filter remove --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 真实 play-be 请求返回成功。
style.columns-width PASS /api/v1/excel/set_columns_width mbs style columns-width --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 --start-column A --end-column E --width 110 真实 play-be 请求返回成功。
style.rows-height PASS /api/v1/excel/set_rows_height mbs style rows-height --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 --start-row 1 --end-row 4 --height 24 真实 play-be 请求返回成功。
formula.calculate PASS /api/v1/excel/calc-formula mbs formula calculate --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 --cell E5 --formula =SUM(B2:D2) 真实 play-be 请求返回成功。
formula.lineage PASS /api/v1/excel/lineage/trace mbs formula lineage --doc-id 6a44a2abef4212b56a15f5d0 --worksheet-name Sheet1 --cell E5 --format tree 真实 play-be 请求返回成功。
history.list PASS /api/v1/excel/list_versions mbs history list --doc-id 6a44a2abef4212b56a15f5d0 --limit 5 真实 play-be 请求返回成功。
history.read PASS /api/v1/excel/read_version mbs history read --doc-id 6a44a2abef4212b56a15f5d0 --version 20 --worksheet-name Sheet1 --range A1:E5 使用 history.list 返回的版本 id 读取历史版本。
file.export PASS /api/v1/excel/export/6a44a2abef4212b56a15f5d0 mbs file export --doc-id 6a44a2abef4212b56a15f5d0 --out /var/folders/_2/mz1mjyr1731b3j13_htf0txr0000gn/T/mbs-phase2-live-1kj_qcda/phase2-export.xlsx 导出 XLSX 到本地临时文件;export_exists=true.
file.list PASS /api/v1/excel/list_files mbs file list --limit 5 真实 play-be 请求返回成功。
file.search PASS /api/v1/excel/search_files mbs file search --query Phase2 --limit 5 真实 play-be 请求返回成功。
workbook.manifest final PASS /api/v1/excel/workbook_profile mbs workbook manifest --doc-id 6a44a2abef4212b56a15f5d0 真实 play-be 请求返回成功。

覆盖率

区域已覆盖总数百分比备注
Endpoint registry4343100.0%已覆盖 Phase 1、已验证 Phase 2、missing/deferred metadata
Worksheet lifecycle44100.0%rename/delete/copy/move
Row/column structure77100.0%row insert/delete/move; column insert/delete/move/width
Range discovery1425.0%search covered; used-range/last-row/last-column deferred as missing route
Style layout55100.0%freeze-panes, auto-filter set/remove, columns-width, rows-height
Formula Phase 22366.7%calculate/lineage covered; compile deferred as missing route
History/file55100.0%history list/read; file export/list/search

关键发现

需要人工核验

请打开验证工作簿,确认 Sheet1 存在且可访问:https://www.maybe.ai/docs/spreadsheets/d/6a44a2abef4212b56a15f5d0?gid=0。自动化已证明 API 请求成功、导出文件存在;视觉格式如冻结窗格、筛选器和宽高变化仍建议人工快速看一眼。