diff --git a/README.md b/README.md index 2796a9a5..46f5376c 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,10 @@ **一个 CLI 搞定钉钉工作台所有功能 — 为人类和 AI Agent 而生。**
覆盖通讯录、日历、待办、考勤、智能表格等核心能力,无需样板代码即可调用,所有响应均为结构化 JSON 输出,并内置 Agent Skills 让 AI 开箱即用。 +

+ DWS Product Overview +

+ > [!IMPORTANT] > **共创阶段**:本项目涉及钉钉企业数据访问,需企业管理员授权后方可使用。当前为灰度共创阶段,请加入钉钉 DWS 共创群,提供以下材料给官方人员完成白名单配置:① 钉钉应用的 Client ID;② 企业主管理员确认开通的凭证。后续将支持企业管理员自助审批开通。 > @@ -186,7 +190,7 @@ Token 使用 **PBKDF2(600,000 次迭代)+ AES-256-GCM** 加密存储,密 dws auth login # 钉钉身份认证 dws contact user search --keyword "悟空" # 搜索联系人 dws calendar event list # 列出日历事件 -dws todo task create --title "准备季度汇报材料" --executors me # 创建待办 +dws todo task create --title "准备季度汇报材料" --executors "" # 创建待办 ``` ## AI Agent Skills diff --git a/README_en.md b/README_en.md index 10f27496..a7a378bd 100644 --- a/README_en.md +++ b/README_en.md @@ -3,6 +3,10 @@ **One CLI for all of DingTalk Workspace — built for humans and AI agents.**
Access contacts, calendar, todos, attendance, AI tables and more with zero boilerplate, get structured JSON responses ready for automation, and leverage built-in Agent Skills for seamless AI integration. +

+ DWS Product Overview +

+ > [!IMPORTANT] > **Co-creation Phase**: This project accesses DingTalk enterprise data and requires enterprise admin authorization. We are currently in a gray-scale co-creation phase. Please join the DingTalk DWS co-creation group and provide the following materials to the official staff for whitelist configuration: ① Your DingTalk application's Client ID; ② Confirmation from the enterprise admin to enable access. Self-service approval by enterprise admins will be supported in the future. > @@ -186,7 +190,7 @@ Tokens are encrypted at rest using **PBKDF2 (600,000 iterations) + AES-256-GCM** dws auth login # authenticate with DingTalk dws contact user search --keyword "Alice" # search contacts dws calendar event list # list calendar events -dws todo task create --title "Prepare quarterly report" --executors me # create a todo +dws todo task create --title "Prepare quarterly report" --executors "" # create a todo ``` ## AI Agent Skills diff --git a/test/.DS_Store b/test/.DS_Store new file mode 100644 index 00000000..250699f3 Binary files /dev/null and b/test/.DS_Store differ diff --git a/test/reports/dynamic-real-functional-20260327-145736.md b/test/reports/dynamic-real-functional-20260327-145736.md deleted file mode 100644 index ce7d3c2a..00000000 --- a/test/reports/dynamic-real-functional-20260327-145736.md +++ /dev/null @@ -1,270 +0,0 @@ -# CLI 动态发现真实功能测试报告 - -| 项目 | 值 | -|---|---| -| 时间 | 2026-03-27 14:59:01 | -| 登录命令退出码 | `0` | -| 动态发现服务数 | `10` | -| 枚举命令节点数(`--help`) | `118` | -| `--help` 失败数 | `0` | -| 叶子命令真实执行数 | `83` | -| 执行成功数 | `75` | -| 执行失败数 | `8` | - -## 登录结果 - -```text -[OK] Token 有效,无需重新登录 -企业 ID: ding8196cd9a2b2405da24f2f5cc6abecb85 -有效期: 30 天后 -Token 将自动刷新,无需重复登录 -``` - -## 同产品包命令依赖关系分析 - -### aitable - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `attachment` | `upload` | 参数 `base-id` 依赖上游实体标识 | -| `base` | `create` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `template-id` 依赖上游实体标识 | -| `base` | `delete` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识 | -| `base` | `get` | 参数 `base-id` 依赖上游实体标识 | -| `base` | `list` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `base` | `search` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `base` | `update` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识 | -| `field` | `create` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `field` | `delete` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识;参数 `field-id` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `field` | `get` | 参数 `base-id` 依赖上游实体标识;参数 `field-ids` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `field` | `update` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识;参数 `field-id` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `record` | `create` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `record` | `delete` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识;参数 `record-ids` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `record` | `query` | 参数 `base-id` 依赖上游实体标识;参数 `field-ids` 依赖上游实体标识;参数 `record-ids` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `record` | `update` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `table` | `create` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识 | -| `table` | `delete` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `table` | `get` | 参数 `base-id` 依赖上游实体标识;参数 `table-ids` 依赖上游实体标识 | -| `table` | `update` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `template` | `search` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### attendance - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `record` | `get` | 参数 `date` 与时间窗口强相关;参数 `user` 依赖组织/人员上下文 | -| `rules` | `rules` | 参数 `date` 与时间窗口强相关 | -| `shift` | `list` | 参数 `end` 与时间窗口强相关;参数 `start` 与时间窗口强相关;参数 `users` 依赖组织/人员上下文 | -| `summary` | `summary` | 参数 `date` 与时间窗口强相关;参数 `user` 依赖组织/人员上下文 | - -### auth - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `login` | `login` | 参数 `login-timeout` 与时间窗口强相关;参数 `token-url` 依赖外部凭证;参数 `token` 依赖外部凭证 | -| `logout` | `logout` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `reset` | `reset` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `status` | `status` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### cache - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `refresh` | `refresh` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `status` | `status` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### calendar - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `busy` | `search` | 参数 `end` 与时间窗口强相关;参数 `start` 与时间窗口强相关;参数 `users` 依赖组织/人员上下文 | -| `event` | `create` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `end` 与时间窗口强相关;参数 `start` 与时间窗口强相关 | -| `event` | `delete` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `id` 依赖上游实体标识 | -| `event` | `get` | 参数 `id` 依赖上游实体标识 | -| `event` | `list` | 参数 `end` 与时间窗口强相关;参数 `start` 与时间窗口强相关 | -| `event` | `list-mine` | 参数 `end` 与时间窗口强相关;参数 `start` 与时间窗口强相关 | -| `event` | `update` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `end` 与时间窗口强相关;参数 `id` 依赖上游实体标识;参数 `start` 与时间窗口强相关 | -| `participant` | `add` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `users` 依赖组织/人员上下文 | -| `participant` | `delete` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `users` 依赖组织/人员上下文 | -| `participant` | `list` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `room` | `add` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行 | -| `room` | `delete` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行 | -| `room` | `list-groups` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `room` | `search` | 参数 `end` 与时间窗口强相关;参数 `group-id` 依赖上游实体标识;参数 `start` 与时间窗口强相关 | - -### chat - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `bot` | `search` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `group` | `create` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `users` 依赖组织/人员上下文 | -| `group` | `add` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `id` 依赖上游实体标识;参数 `users` 依赖组织/人员上下文 | -| `group` | `add-bot` | 参数 `id` 依赖上游实体标识 | -| `group` | `remove` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `id` 依赖上游实体标识;参数 `users` 依赖组织/人员上下文 | -| `group` | `rename` | 参数 `id` 依赖上游实体标识 | -| `message` | `list` | 参数 `time` 与时间窗口强相关;参数 `user` 依赖组织/人员上下文 | -| `message` | `recall-by-bot` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `message` | `send` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `user` 依赖组织/人员上下文 | -| `message` | `send-by-bot` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `message` | `send-by-webhook` | 参数 `at-users` 依赖组织/人员上下文;参数 `token` 依赖外部凭证 | -| `search` | `search` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### completion - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `(root)` | `completion` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### contact - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `dept` | `list-children` | 参数 `id` 依赖上游实体标识 | -| `dept` | `list-members` | 参数 `ids` 依赖上游实体标识 | -| `dept` | `search` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `user` | `get` | 参数 `ids` 依赖上游实体标识 | -| `user` | `get-self` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `user` | `search` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `user` | `search-mobile` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### devdoc - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `article` | `search` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### ding - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `message` | `recall` | 参数 `id` 依赖上游实体标识 | -| `message` | `send` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `users` 依赖组织/人员上下文 | - -### report - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `create` | `create` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `template-id` 依赖上游实体标识;参数 `to-user-ids` 依赖上游实体标识;参数 `to-user-ids` 依赖组织/人员上下文 | -| `detail` | `detail` | 参数 `report-id` 依赖上游实体标识 | -| `list` | `list` | 参数 `end` 与时间窗口强相关;参数 `start` 与时间窗口强相关 | -| `sent` | `sent` | 参数 `end` 与时间窗口强相关;参数 `modified-end` 与时间窗口强相关;参数 `modified-start` 与时间窗口强相关;参数 `start` 与时间窗口强相关 | -| `stats` | `stats` | 参数 `report-id` 依赖上游实体标识 | -| `template` | `detail` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `template` | `list` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### todo - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `task` | `create` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行 | -| `task` | `delete` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `task-id` 依赖上游实体标识 | -| `task` | `done` | 参数 `task-id` 依赖上游实体标识 | -| `task` | `get` | 参数 `task-id` 依赖上游实体标识 | -| `task` | `list` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `task` | `update` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `task-id` 依赖上游实体标识 | - -### version - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `(root)` | `version` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### workbench - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `app` | `get` | 参数 `ids` 依赖上游实体标识 | -| `app` | `list` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -## 叶子命令真实执行明细 - -| 命令路径 | 退出码 | 自动补齐入参数量 | 摘要 | -|---|---:|---:|---| -| `dws aitable attachment upload` | `0` | `3` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable base create` | `0` | `3` | { "data": { "baseId": "3NwLYZXWyrmRolXLcQG7gxMdVkyEqBQm", "baseName": "auto-test-name" }, "error": {}, "meta": {}, "status": "success", "summary": "Created base | -| `dws aitable base delete` | `0` | `2` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable base get` | `0` | `2` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable base list` | `0` | `1` | { "data": { "bases": [ { "baseId": "3NwLYZXWyrmRolXLcQG7gxMdVkyEqBQm", "baseName": "auto-test-name" }, { "baseId": "QPGYqjpJYRyab0nx | -| `dws aitable base search` | `0` | `2` | { "data": { "bases": [ { "baseId": "14dA3GK8gkP4oNl0crRvZyXv89ekBD76", "baseName": "测试AI 表格" }, { "baseId": "DnRL6jAJMNX9kAgycZdkqoY | -| `dws aitable base update` | `0` | `3` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable field create` | `0` | `3` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable field delete` | `0` | `4` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable field get` | `0` | `4` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable field update` | `0` | `5` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable record create` | `0` | `3` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable record delete` | `0` | `4` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable record query` | `0` | `6` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable record update` | `0` | `3` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable table create` | `0` | `3` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable table delete` | `0` | `3` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable table get` | `0` | `3` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable table update` | `0` | `4` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable template search` | `0` | `2` | { "data": { "hasMore": false, "nextCursor": "10", "templates": [ { "description": "随堂小测试模板用于课堂即时检测,适用教师与学生,快速收集反馈,提升教学效率。", "name": "随堂小测试", | -| `dws attendance record get` | `3` | `3` | { "error": { "category": "validation", "code": 3, "message": "--date format error, use YYYY-MM-DD, e.g. 2026-03-08" } } | -| `dws attendance rules` | `3` | `2` | { "error": { "category": "validation", "code": 3, "message": "--date format error, use YYYY-MM-DD or yyyy-MM-dd HH:mm:ss: test" } } | -| `dws attendance shift list` | `3` | `4` | { "error": { "category": "validation", "code": 3, "message": "--start date format error, use YYYY-MM-DD" } } | -| `dws attendance summary` | `3` | `3` | { "error": { "category": "validation", "code": 3, "message": "--date format error, use yyyy-MM-dd HH:mm:ss" } } | -| `dws calendar busy search` | `0` | `2` | { "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: startTime cannot be blank", "result": [ { "scheduleItems": null } ], "success": false, | -| `dws calendar event create` | `0` | `2` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Start time cannot be blank for a non-all day event.", "result": { "attendees": nu | -| `dws calendar event delete` | `0` | `2` | { "arguments": [], "errorCode": "300014", "errorMsg": "Event not exist", "result": {}, "success": false, "trace_id": "213ee25c17745946765898223e0af0" } | -| `dws calendar event get` | `0` | `2` | { "arguments": [], "result": { "attendees": null, "categories": null, "reminders": null }, "success": false, "trace_id": "0bab027317745946772971785e07c5" } | -| `dws calendar event list` | `0` | `1` | { "arguments": [], "result": { "events": [ { "attendees": [ { "displayName": "尘舟", "optional": false, "responseS | -| `dws calendar event list-mine` | `0` | `1` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API erro | -| `dws calendar event update` | `0` | `3` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Event does not exist.", "result": {}, "success": false, "trace_id": "2106d9811774 | -| `dws calendar participant add` | `0` | `2` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "success": false, "trace_id": "2127d89817745947042464823e | -| `dws calendar participant delete` | `0` | `2` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "2106d98117 | -| `dws calendar participant list` | `0` | `1` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": { "attendees": null }, "success": false, | -| `dws calendar room add` | `0` | `1` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "2132f5ca17 | -| `dws calendar room delete` | `0` | `1` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "213ee25c17 | -| `dws calendar room list-groups` | `0` | `1` | { "result": { "groupList": [ { "groupId": 41, "groupName": "绿城·未来park", "parentId": 0 }, { "groupId": 74, "groupName | -| `dws calendar room search` | `0` | `2` | { "arguments": [], "errorCode": "400002", "errorMsg": "filterStartTime or filterEndTime error", "result": { "result": [ { "labels": null } ] } | -| `dws chat bot search` | `0` | `4` | { "robotList": [], "success": true } | -| `dws chat group create` | `0` | `3` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API erro | -| `dws chat group members add` | `0` | `3` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API erro | -| `dws chat group members add-bot` | `0` | `3` | { "errorCode": "500025", "errorMsg": "robotCode不存在", "success": false, "trace_id": "0bab027317745947105987158e0780" } | -| `dws chat group members remove` | `0` | `3` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API erro | -| `dws chat group rename` | `0` | `3` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API erro | -| `dws chat message list` | `3` | `4` | { "error": { "category": "validation", "code": 3, "message": "--time is required" } } | -| `dws chat message recall-by-bot` | `0` | `1` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程 | -| `dws chat message send` | `5` | `4` | { "error": { "category": "internal", "code": 5, "message": "accepts 1 arg(s), received 0" } } | -| `dws chat message send-by-bot` | `0` | `3` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程 | -| `dws chat message send-by-webhook` | `0` | `6` | { "errcode": "300005", "errmsg": "token is not exist" } | -| `dws chat search` | `0` | `2` | { "result": { "hasMore": true, "nextCursor": "abe74d73660ef3d46bc92185e05915f2f48689450699e0bf70849ba71758a903", "total": 262, "value": [ { "extensi | -| `dws contact dept list-children` | `0` | `2` | { "result": [], "success": true } | -| `dws contact dept list-members` | `0` | `2` | { "deptUserList": [], "success": true } | -| `dws contact dept search` | `0` | `2` | { "deptList": [], "hasMore": false, "totalCount": 0 } | -| `dws contact user get` | `0` | `2` | { "result": [ { "orgEmployeeModel": { "depts": null, "labels": null, "orgId": null } } ], "success": true } | -| `dws contact user get-self` | `0` | `1` | { "result": [ { "isAdmin": true, "orgEmployeeModel": { "corpId": "ding8196cd9a2b2405da24f2f5cc6abecb85", "depts": [ { "deptI | -| `dws contact user search` | `0` | `2` | { "userId": [ "033067356464903146", "030037243111903146", "025109313335903146" ] } | -| `dws contact user search-mobile` | `0` | `2` | { "arguments": [], "success": true } | -| `dws devdoc article search` | `0` | `2` | { "result": { "currentPage": 1, "hasMore": true, "items": [ { "desc": "标题: 创建知识库文档 - 开放平台\n内容: * * *\n例如,企业员工小明在测试知识库内,单击**新建** 按钮创建文档,与调用本接口实现效果一致,如下图: | -| `dws ding message recall` | `0` | `2` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "2106d98117745947215725878e0ad1" } | -| `dws ding message send` | `0` | `3` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "2106d98117745947223905960e0ad1" } | -| `dws report create` | `3` | `4` | { "error": { "category": "validation", "code": 3, "message": "json_parse: invalid JSON: invalid character 'è' looking for beginning of value" } } | -| `dws report detail` | `0` | `2` | { "errorMsg": "ok", "result": { "contentV2": [ { "images": null } ], "images": [], "report_Id": "test-001", "report_content": [ { | -| `dws report list` | `0` | `1` | { "errcode": 40035, "errorMsg": "不合法的参数", "result": { "report_list": null, "size": 0 }, "success": false, "trace_id": "0bab027317745947235068184e0780" } | -| `dws report sent` | `0` | `2` | { "code": "ERROR", "error": "操作失败", "message": "操作失败。发生错误,建议稍后重试", "retryable": true, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root. | -| `dws report stats` | `0` | `2` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程 | -| `dws report template detail` | `0` | `2` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程 | -| `dws report template list` | `0` | `1` | { "items": [ { "last_modified_time": 1697702695000, "report_template_id": "18b46f75236c558cc63be07419f8d65f", "report_template_logo_url": "https://landray.d | -| `dws todo task create` | `0` | `2` | { "arguments": [], "errorCode": "999", "errorMsg": "system error: java.lang.NullPointerException", "success": false, "trace_id": "2106d98117745947277007837e0b34" } | -| `dws todo task delete` | `0` | `2` | { "result": { "success": false } } | -| `dws todo task done` | `0` | `2` | { "result": { "success": false } } | -| `dws todo task get` | `0` | `2` | { "arguments": [], "errorCode": "500", "errorMsg": "NewTodoService#getTodoDetail taskId is null", "result": {}, "success": false, "trace_id": "213ee25c17745947295756384 | -| `dws todo task list` | `0` | `2` | { "result": { "todoCards": null } } | -| `dws todo task update` | `0` | `3` | { "result": { "success": false } } | -| `dws workbench app get` | `0` | `2` | { "eventData": { "activityType": "MULTI_PANEL", "content": { "assets": { "description": "工作台扩展", "entry": "https://dev.g.alicdn.com/dingding/dd-chat | -| `dws workbench app list` | `0` | `1` | { "appList": [ { "d": "商业保险", "i": "0_2403230743", "n": "商业保险" }, { "d": "助力组织文化活动快速落地", "i": "0_2680655126", "n": "组织文化管理平台" | -| `dws auth login` | `0` | `7` | [OK] Token 有效,无需重新登录 有效期: 24 小时后 Token 将自动刷新,无需重复登录 | -| `dws auth logout` | `0` | `1` | [OK] 已清除所有认证信息 请运行 dws auth login 重新登录 | -| `dws auth reset` | `0` | `1` | [OK] 认证信息已重置 请运行 dws auth login 重新登录 | -| `dws auth status` | `0` | `1` | 状态: 未登录 运行 dws auth login 进行登录 | -| `dws cache refresh` | `0` | `1` | [OK] 缓存刷新完成:已刷新 10 个服务,失败 10 个 缓存目录: /Users/tianlei.qjb/.dws/cache | -| `dws cache status` | `0` | `1` | 缓存目录: /Users/tianlei.qjb/.dws/cache 文件数: 1 大小: 63214 字节 | -| `dws completion` | `5` | `1` | { "error": { "category": "internal", "code": 5, "message": "accepts 1 arg(s), received 0" } } | -| `dws version` | `0` | `1` | { "go": "1.24+", "version": "v1.0.0" } | - -## 执行口径说明 - -- 本次为**真实命令执行**(非 go test,非 dry-run);为了避免破坏性写入,入参使用自动生成测试值,部分写操作可能因业务校验失败而返回非 0。 -- 所有命令均通过动态发现入口进行递归枚举,覆盖当前可见服务树。 -- 凭证未写入报告,报告仅保留退出码与脱敏输出片段。 diff --git a/test/reports/dynamic-real-functional-failure-triage-latest.md b/test/reports/dynamic-real-functional-failure-triage-latest.md deleted file mode 100644 index a0cde207..00000000 --- a/test/reports/dynamic-real-functional-failure-triage-latest.md +++ /dev/null @@ -1,76 +0,0 @@ -# 动态CLI失败项分层清单(latest) - -- 来源报告: `/Users/tianlei.qjb/Documents/my_python_project/cli/test/reports/dynamic-real-functional-full-rerun-latest.md` -- 失败总数: `33` - -| 分类 | 数量 | -|---|---:| -| 其他待分析 | 14 | -| 测试数据依赖不足 | 6 | -| 服务端能力缺失 | 6 | -| 业务规则限制 | 3 | -| 缺少真实机器人配置 | 3 | -| 命令参数映射问题 | 1 | - -## 其他待分析 - -| 命令 | 类型 | 退出码 | 摘要 | -|---|---|---:|---| -| `dws aitable base get` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": | -| `dws aitable base update` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": | -| `dws aitable field delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error" | -| `dws aitable field get` | `fail_business` | `0` | { "data": {}, "error": { "code": "GET_FIELDS_ERROR", "message": "Failed to load field schema from sheet service", "retryable": true, "type": "SYSTEM_ERROR" }, | -| `dws aitable record create` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error" | -| `dws aitable record delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error" | -| `dws aitable table delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": | -| `dws aitable table get` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": | -| `dws attendance summary` | `fail_business` | `0` | { "code": "C0002", "message": "统计类型错误", "result": {}, "success": false, "trace_id": "0bab027317745976626518395e0780" } | -| `dws chat message recall-by-bot` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程 | -| `dws chat message send-by-bot` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程 | -| `dws report create` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程 | -| `dws report stats` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程 | -| `dws todo task get` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected | - -## 测试数据依赖不足 - -| 命令 | 类型 | 退出码 | 摘要 | -|---|---|---:|---| -| `dws aitable attachment upload` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PREPARE_ATTACHMENT_UPLOAD_REQUEST", "message": "fileName is required", "retryable": false, "type": "INPUT_ERROR" }, | -| `dws aitable base create` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_NAME", "message": "baseName is required and cannot be empty or only whitespace", "retryable": false, "type": "INPUT_ER | -| `dws aitable field update` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PARAMS", "message": "At least one of newFieldName, config or aiConfig must be provided for update", "retryable": false, | -| `dws aitable record query` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "failed to resolve docId from baseId", "retryable": false, "type": "INPUT_ERROR" }, "meta": { | -| `dws aitable record update` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_RECORDS", "message": "records must contain at least one writable record", "retryable": false, "type": "INPUT_ERROR" | -| `dws aitable table create` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PARAMS", "message": "tableName is required", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": | - -## 服务端能力缺失 - -| 命令 | 类型 | 退出码 | 摘要 | -|---|---|---:|---| -| `dws calendar event list-mine` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API erro | -| `dws chat group create` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API erro | -| `dws chat group members add` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API erro | -| `dws chat group members remove` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API erro | -| `dws chat group rename` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API erro | -| `dws chat message list` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API erro | - -## 业务规则限制 - -| 命令 | 类型 | 退出码 | 摘要 | -|---|---|---:|---| -| `dws calendar event update` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Cannot patch event that is not in 'confirmed' status.", "result": {}, "success": fa | -| `dws calendar participant delete` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "0bab0273 | -| `dws calendar room add` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Cannot patch event that is not in 'confirmed' status.", "result": {}, "success": fa | - -## 缺少真实机器人配置 - -| 命令 | 类型 | 退出码 | 摘要 | -|---|---|---:|---| -| `dws chat group members add-bot` | `fail_business` | `0` | { "errorCode": "500025", "errorMsg": "robotCode不存在", "success": false, "trace_id": "213ee25c17745976757057733e0b11" } | -| `dws ding message recall` | `fail_business` | `0` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "0bab027317745976874644796e07a4" } | -| `dws ding message send` | `fail_business` | `0` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "2132f5ca17745976882365774e0a19" } | - -## 命令参数映射问题 - -| 命令 | 类型 | 退出码 | 摘要 | -|---|---|---:|---| -| `dws chat message send` | `fail_exit` | `3` | { "error": { "category": "validation", "code": 3, "message": "--group and --user are mutually exclusive" } } | diff --git a/test/reports/dynamic-real-functional-final-cleanup-20260327-153838.md b/test/reports/dynamic-real-functional-final-cleanup-20260327-153838.md deleted file mode 100644 index 92992f9b..00000000 --- a/test/reports/dynamic-real-functional-final-cleanup-20260327-153838.md +++ /dev/null @@ -1,51 +0,0 @@ -# CLI 动态功能测试最终收口报告 - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:39:06 | -| 可修复项重跑数 | `18` | -| 可修复项 pass | `10` | -| 可修复项 fail_exit | `2` | -| 可修复项 fail_business | `6` | - -## 关键上下文 - -- uid: `061978` -- event-id: `UkFPcCtZNWtTbFozRG9lSDBsOUFPdz09` -- room-id: `bdff146f0172e49511c91904cf69b186003e6834fdd7fee7` -- base-id: `9bN7RYPWdPxOBgrQubjeYd74WZd1wyK0` -- table-id: `z9JU482` -- task-id: `51470771039` -- template-id: `18b46f75236c558cc63be07419f8d65f` -- report-id: `(无)` - -## 可修复项结果 - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `fix.aitable.base.get` | `0` | `pass` | { "data": { "baseId": "9bN7RYPWdPxOBgrQubjeYd74WZd1wyK0", "baseName": "final-base-20260327-153838", "dashboards": [], "tables": [ { "tableId": "z9JU482", "tableName": "final-table- | -| `fix.aitable.base.update` | `0` | `pass` | { "data": { "baseId": "9bN7RYPWdPxOBgrQubjeYd74WZd1wyK0", "baseName": "final-base-upd-20260327-153838", "updatedAt": "2026-03-27T15:38:50+08:00" }, "error": {}, "meta": {}, "status": "success", "s | -| `fix.aitable.table.get` | `0` | `pass` | { "data": { "tables": [ { "fields": [ { "fieldId": "bIJb2LD", "fieldName": "标题", "type": "primaryDoc" }, { "fieldId": "h4D | -| `fix.aitable.table.delete` | `0` | `fail_business` | { "data": {}, "error": { "code": "InvalidRequest.Forbidden", "message": "cannot delete the last sheet", "retryable": false, "type": "USER_ERROR" }, "meta": {}, "status": "error", "summary": "F | -| `fix.aitable.record.create` | `0` | `pass` | { "data": { "newRecordIds": [ "BO49HAmJEs" ] }, "error": {}, "meta": {}, "status": "success", "summary": "Successfully created 1 record(s) in table z9JU482 of base 9bN7RYPWdPxOBgrQubjeYd74WZd1wy | -| `fix.aitable.record.query` | `0` | `pass` | { "data": { "nextCursor": "BO49HAmJEs", "records": [ { "cells": { "h4DK3d5": "ok" }, "recordId": "BO49HAmJEs" } ] }, "error": {}, "meta": {}, "status": | -| `fix.aitable.record.update` | `0` | `fail_business` | { "data": {}, "error": { "code": "InvalidRequest.ResourceNotFound", "message": "fail to find the record 'dummy'", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "s | -| `fix.aitable.field.get` | `0` | `pass` | { "data": { "fields": [ { "fieldId": "bIJb2LD", "fieldName": "标题", "type": "primaryDoc" }, { "fieldId": "h4DK3d5", "fieldName": "自动化字段FINAL", "type" | -| `fix.attendance.summary` | `0` | `fail_business` | { "code": "C0002", "message": "统计类型错误", "result": {}, "success": false, "trace_id": "2127d89817745971408062765e0aa2" } | -| `fix.calendar.event.update` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true | -| `fix.calendar.participant.delete` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "0bb7c36217745971422665047e04a6" } | -| `fix.calendar.room.add` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | -| `fix.chat.message.send` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `fix.chat.message.send-by-bot` | `5` | `fail_exit` | { "error": { "category": "internal", "code": 5, "message": "unknown flag: --users" } } | -| `fix.chat.message.recall-by-bot` | `5` | `fail_exit` | { "error": { "category": "internal", "code": 5, "message": "unknown flag: --id" } } | -| `fix.report.create` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `fix.report.list` | `0` | `pass` | { "errcode": 0, "errorMsg": "ok", "result": { "hasMore": false, "nextCursor": 0, "report_list": [], "size": 10 }, "success": true } | -| `fix.todo.task.get` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": { "todoDetailModel": { "activities": [ { "action": "task.create", "activityId": "12796115088", "cr | - -## 不可控阻塞项 - -| 项目 | 原因 | -|---|---| -| `blocked.calendar.event.list-mine` | `server_tool_missing` | -| `blocked.chat.group.*` | `server_tool_missing` | -| `blocked.ding.message.*` | `needs_real_robot_code` | diff --git a/test/reports/dynamic-real-functional-final-cleanup-latest.md b/test/reports/dynamic-real-functional-final-cleanup-latest.md deleted file mode 100644 index 92992f9b..00000000 --- a/test/reports/dynamic-real-functional-final-cleanup-latest.md +++ /dev/null @@ -1,51 +0,0 @@ -# CLI 动态功能测试最终收口报告 - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:39:06 | -| 可修复项重跑数 | `18` | -| 可修复项 pass | `10` | -| 可修复项 fail_exit | `2` | -| 可修复项 fail_business | `6` | - -## 关键上下文 - -- uid: `061978` -- event-id: `UkFPcCtZNWtTbFozRG9lSDBsOUFPdz09` -- room-id: `bdff146f0172e49511c91904cf69b186003e6834fdd7fee7` -- base-id: `9bN7RYPWdPxOBgrQubjeYd74WZd1wyK0` -- table-id: `z9JU482` -- task-id: `51470771039` -- template-id: `18b46f75236c558cc63be07419f8d65f` -- report-id: `(无)` - -## 可修复项结果 - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `fix.aitable.base.get` | `0` | `pass` | { "data": { "baseId": "9bN7RYPWdPxOBgrQubjeYd74WZd1wyK0", "baseName": "final-base-20260327-153838", "dashboards": [], "tables": [ { "tableId": "z9JU482", "tableName": "final-table- | -| `fix.aitable.base.update` | `0` | `pass` | { "data": { "baseId": "9bN7RYPWdPxOBgrQubjeYd74WZd1wyK0", "baseName": "final-base-upd-20260327-153838", "updatedAt": "2026-03-27T15:38:50+08:00" }, "error": {}, "meta": {}, "status": "success", "s | -| `fix.aitable.table.get` | `0` | `pass` | { "data": { "tables": [ { "fields": [ { "fieldId": "bIJb2LD", "fieldName": "标题", "type": "primaryDoc" }, { "fieldId": "h4D | -| `fix.aitable.table.delete` | `0` | `fail_business` | { "data": {}, "error": { "code": "InvalidRequest.Forbidden", "message": "cannot delete the last sheet", "retryable": false, "type": "USER_ERROR" }, "meta": {}, "status": "error", "summary": "F | -| `fix.aitable.record.create` | `0` | `pass` | { "data": { "newRecordIds": [ "BO49HAmJEs" ] }, "error": {}, "meta": {}, "status": "success", "summary": "Successfully created 1 record(s) in table z9JU482 of base 9bN7RYPWdPxOBgrQubjeYd74WZd1wy | -| `fix.aitable.record.query` | `0` | `pass` | { "data": { "nextCursor": "BO49HAmJEs", "records": [ { "cells": { "h4DK3d5": "ok" }, "recordId": "BO49HAmJEs" } ] }, "error": {}, "meta": {}, "status": | -| `fix.aitable.record.update` | `0` | `fail_business` | { "data": {}, "error": { "code": "InvalidRequest.ResourceNotFound", "message": "fail to find the record 'dummy'", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "s | -| `fix.aitable.field.get` | `0` | `pass` | { "data": { "fields": [ { "fieldId": "bIJb2LD", "fieldName": "标题", "type": "primaryDoc" }, { "fieldId": "h4DK3d5", "fieldName": "自动化字段FINAL", "type" | -| `fix.attendance.summary` | `0` | `fail_business` | { "code": "C0002", "message": "统计类型错误", "result": {}, "success": false, "trace_id": "2127d89817745971408062765e0aa2" } | -| `fix.calendar.event.update` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true | -| `fix.calendar.participant.delete` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "0bb7c36217745971422665047e04a6" } | -| `fix.calendar.room.add` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | -| `fix.chat.message.send` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `fix.chat.message.send-by-bot` | `5` | `fail_exit` | { "error": { "category": "internal", "code": 5, "message": "unknown flag: --users" } } | -| `fix.chat.message.recall-by-bot` | `5` | `fail_exit` | { "error": { "category": "internal", "code": 5, "message": "unknown flag: --id" } } | -| `fix.report.create` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `fix.report.list` | `0` | `pass` | { "errcode": 0, "errorMsg": "ok", "result": { "hasMore": false, "nextCursor": 0, "report_list": [], "size": 10 }, "success": true } | -| `fix.todo.task.get` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": { "todoDetailModel": { "activities": [ { "action": "task.create", "activityId": "12796115088", "cr | - -## 不可控阻塞项 - -| 项目 | 原因 | -|---|---| -| `blocked.calendar.event.list-mine` | `server_tool_missing` | -| `blocked.chat.group.*` | `server_tool_missing` | -| `blocked.ding.message.*` | `needs_real_robot_code` | diff --git a/test/reports/dynamic-real-functional-fixable-rerun-20260327-154943.md b/test/reports/dynamic-real-functional-fixable-rerun-20260327-154943.md deleted file mode 100644 index 95ef15cf..00000000 --- a/test/reports/dynamic-real-functional-fixable-rerun-20260327-154943.md +++ /dev/null @@ -1,22 +0,0 @@ -# 可修复项定向回归报告(latest) - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:49:46 | -| 重跑项数 | `4` | -| pass | `0` | -| fail_exit | `4` | -| fail_business | `0` | - -- uid: `061978` -- base-id: `(无)` -- table-id: `(无)` -- event-id: `(无)` -- room-id: `(无)` - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `fix.attendance.summary` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `fix.chat.message.send` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `fix.chat.message.send-by-bot` | `5` | `fail_exit` | { "error": { "category": "internal", "code": 5, "message": "unknown flag: --user" } } | -| `fix.chat.message.recall-by-bot` | `5` | `fail_exit` | { "error": { "category": "internal", "code": 5, "message": "unknown flag: --open-ding-id" } } | diff --git a/test/reports/dynamic-real-functional-fixable-rerun-20260327-155102.md b/test/reports/dynamic-real-functional-fixable-rerun-20260327-155102.md deleted file mode 100644 index 67ccce4f..00000000 --- a/test/reports/dynamic-real-functional-fixable-rerun-20260327-155102.md +++ /dev/null @@ -1,30 +0,0 @@ -# 可修复项定向回归报告(latest) - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:51:28 | -| 重跑项数 | `12` | -| pass | `6` | -| fail_exit | `0` | -| fail_business | `6` | - -- uid: `061978` -- base-id: `QBnd5ExVEaQd4meXt06QbeQgVyeZqMmz` -- table-id: `MoptjEc` -- event-id: `SGlWMTJLdlAzVEp3RVhaSmhxc3hLZz09` -- room-id: `d173a1976db46927cf7a9d7fa900870a003e6834fdd7fee7` - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `fix.aitable.base.get` | `0` | `pass` | { "data": { "baseId": "QBnd5ExVEaQd4meXt06QbeQgVyeZqMmz", "baseName": "fixable-155104", "dashboards": [], "tables": [ { "tableId": "MoptjEc", "tableName": "fixable-table" } | -| `fix.aitable.base.update` | `0` | `pass` | { "data": { "baseId": "QBnd5ExVEaQd4meXt06QbeQgVyeZqMmz", "baseName": "fixable-base-upd", "updatedAt": "2026-03-27T15:51:15+08:00" }, "error": {}, "meta": {}, "status": "success", "summary": "Succ | -| `fix.aitable.table.get` | `0` | `pass` | { "data": { "tables": [ { "fields": [ { "fieldId": "iizMpn1", "fieldName": "标题", "type": "primaryDoc" }, { "fieldId": "912 | -| `fix.aitable.record.create` | `0` | `pass` | { "data": { "newRecordIds": [ "1W22tVCf9b" ] }, "error": {}, "meta": {}, "status": "success", "summary": "Successfully created 1 record(s) in table MoptjEc of base QBnd5ExVEaQd4meXt06QbeQgVyeZqM | -| `fix.aitable.record.query` | `0` | `pass` | { "data": { "nextCursor": "1W22tVCf9b", "records": [ { "cells": { "912NdwK": "ok" }, "recordId": "1W22tVCf9b" } ] }, "error": {}, "meta": {}, "status": | -| `fix.attendance.summary` | `0` | `fail_business` | { "code": "C0002", "message": "统计类型错误", "result": {}, "success": false, "trace_id": "213ee25c17745978819184321e0acd" } | -| `fix.calendar.event.update` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true | -| `fix.calendar.participant.delete` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "213ee25c17745978840783439e0b54" } | -| `fix.calendar.room.add` | `0` | `fail_business` | { "arguments": [], "errorCode": "321001", "errorMsg": "code: 321001, developerMessage: [{\"roomName\":\"钉钉展厅-电视\",\"text\":\"根据管理员设置,同一时间段内只允许预定一个会议室,请移除多余的会议室\"}]", "result": {}, "success": false, "trace_id" | -| `fix.chat.message.send` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `fix.chat.message.send-by-bot` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `fix.chat.message.recall-by-bot` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | diff --git a/test/reports/dynamic-real-functional-fixable-rerun-latest.md b/test/reports/dynamic-real-functional-fixable-rerun-latest.md deleted file mode 100644 index 67ccce4f..00000000 --- a/test/reports/dynamic-real-functional-fixable-rerun-latest.md +++ /dev/null @@ -1,30 +0,0 @@ -# 可修复项定向回归报告(latest) - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:51:28 | -| 重跑项数 | `12` | -| pass | `6` | -| fail_exit | `0` | -| fail_business | `6` | - -- uid: `061978` -- base-id: `QBnd5ExVEaQd4meXt06QbeQgVyeZqMmz` -- table-id: `MoptjEc` -- event-id: `SGlWMTJLdlAzVEp3RVhaSmhxc3hLZz09` -- room-id: `d173a1976db46927cf7a9d7fa900870a003e6834fdd7fee7` - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `fix.aitable.base.get` | `0` | `pass` | { "data": { "baseId": "QBnd5ExVEaQd4meXt06QbeQgVyeZqMmz", "baseName": "fixable-155104", "dashboards": [], "tables": [ { "tableId": "MoptjEc", "tableName": "fixable-table" } | -| `fix.aitable.base.update` | `0` | `pass` | { "data": { "baseId": "QBnd5ExVEaQd4meXt06QbeQgVyeZqMmz", "baseName": "fixable-base-upd", "updatedAt": "2026-03-27T15:51:15+08:00" }, "error": {}, "meta": {}, "status": "success", "summary": "Succ | -| `fix.aitable.table.get` | `0` | `pass` | { "data": { "tables": [ { "fields": [ { "fieldId": "iizMpn1", "fieldName": "标题", "type": "primaryDoc" }, { "fieldId": "912 | -| `fix.aitable.record.create` | `0` | `pass` | { "data": { "newRecordIds": [ "1W22tVCf9b" ] }, "error": {}, "meta": {}, "status": "success", "summary": "Successfully created 1 record(s) in table MoptjEc of base QBnd5ExVEaQd4meXt06QbeQgVyeZqM | -| `fix.aitable.record.query` | `0` | `pass` | { "data": { "nextCursor": "1W22tVCf9b", "records": [ { "cells": { "912NdwK": "ok" }, "recordId": "1W22tVCf9b" } ] }, "error": {}, "meta": {}, "status": | -| `fix.attendance.summary` | `0` | `fail_business` | { "code": "C0002", "message": "统计类型错误", "result": {}, "success": false, "trace_id": "213ee25c17745978819184321e0acd" } | -| `fix.calendar.event.update` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true | -| `fix.calendar.participant.delete` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "213ee25c17745978840783439e0b54" } | -| `fix.calendar.room.add` | `0` | `fail_business` | { "arguments": [], "errorCode": "321001", "errorMsg": "code: 321001, developerMessage: [{\"roomName\":\"钉钉展厅-电视\",\"text\":\"根据管理员设置,同一时间段内只允许预定一个会议室,请移除多余的会议室\"}]", "result": {}, "success": false, "trace_id" | -| `fix.chat.message.send` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `fix.chat.message.send-by-bot` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `fix.chat.message.recall-by-bot` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | diff --git a/test/reports/dynamic-real-functional-full-rerun-20260327-153337.md b/test/reports/dynamic-real-functional-full-rerun-20260327-153337.md deleted file mode 100644 index 18a89b7a..00000000 --- a/test/reports/dynamic-real-functional-full-rerun-20260327-153337.md +++ /dev/null @@ -1,60 +0,0 @@ -# CLI 动态服务发现全量功能测试报告(完整重跑) - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:34:46 | -| 动态服务数 | `10` | -| 命令节点(`--help`) | `118` | -| `--help` 失败 | `0` | -| 叶子命令执行数 | `83` | -| 语义成功(pass) | `50` | -| 退出码失败 | `3` | -| 业务失败 | `30` | - -## 关键上下文 - -- `uid`: `061978` -- `event-id`: `ZWVVS1Y2S3VLalpwZFJPK2l1YitKZz09` -- `room-id`: `bdff146f0172e49511c91904cf69b186003e6834fdd7fee7` -- `base-id`: `7dx2rn0Jbakrq9O5t6NRK1DRVMGjLRb3` -- `table-id`: `iFiXjY8` -- `task-id`: `51681032441` -- `template-id`: `18b46f75236c558cc63be07419f8d65f` - -## 失败明细 - -| 命令 | 分类 | 退出码 | 摘要 | -|---|---|---:|---| -| `dws aitable attachment upload` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PREPARE_ATTACHMENT_UPLOAD_REQUEST", "message": "fileName is required", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "su | -| `dws aitable base create` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_NAME", "message": "baseName is required and cannot be empty or only whitespace", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "err | -| `dws aitable base get` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable base update` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable field delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to get current fi | -| `dws aitable field get` | `fail_business` | `0` | { "data": {}, "error": { "code": "GET_FIELDS_ERROR", "message": "Failed to load field schema from sheet service", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "s | -| `dws aitable field update` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PARAMS", "message": "At least one of newFieldName, config or aiConfig must be provided for update", "retryable": false, "type": "INPUT_ERROR" }, "meta": { | -| `dws aitable record create` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to create records | -| `dws aitable record delete` | `fail_exit` | `3` | { "error": { "category": "validation", "code": 3, "message": "--record-ids is required" } } | -| `dws aitable record query` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "failed to resolve docId from baseId", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary": "Fa | -| `dws aitable record update` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_RECORDS", "message": "records must contain at least one writable record", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", | -| `dws aitable table create` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PARAMS", "message": "tableName is required", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to create | -| `dws aitable table delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable table get` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws attendance summary` | `fail_business` | `0` | { "code": "C0002", "message": "统计类型错误", "result": {}, "success": false, "trace_id": "0bb7c36217745968417782683e04a7" } | -| `dws calendar event list-mine` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws calendar event update` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Cannot patch event that is not in 'confirmed' status.", "result": {}, "success": false, "trace_id": "2127d898177459684755 | -| `dws calendar participant delete` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "2127d89817745968487392353e09fc" } | -| `dws calendar room add` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Cannot patch event that is not in 'confirmed' status.", "result": {}, "success": false, "trace_id": "2104a64c177459685002 | -| `dws chat group create` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group members add` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group members add-bot` | `fail_business` | `0` | { "errorCode": "500025", "errorMsg": "robotCode不存在", "success": false, "trace_id": "2127d89817745968545635804e0aa2" } | -| `dws chat group members remove` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group rename` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat message list` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat message recall-by-bot` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws chat message send` | `fail_exit` | `3` | { "error": { "category": "validation", "code": 3, "message": "--group and --user are mutually exclusive" } } | -| `dws chat message send-by-bot` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws ding message recall` | `fail_business` | `0` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "2127d89817745968660356774e0a02" } | -| `dws ding message send` | `fail_business` | `0` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "2104a64c17745968669262499e0a07" } | -| `dws report create` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `dws report stats` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws todo task get` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | diff --git a/test/reports/dynamic-real-functional-full-rerun-20260327-154715.md b/test/reports/dynamic-real-functional-full-rerun-20260327-154715.md deleted file mode 100644 index 103b0c35..00000000 --- a/test/reports/dynamic-real-functional-full-rerun-20260327-154715.md +++ /dev/null @@ -1,60 +0,0 @@ -# CLI 动态服务发现全量功能测试报告(完整重跑) - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:48:28 | -| 动态服务数 | `10` | -| 命令节点(`--help`) | `118` | -| `--help` 失败 | `0` | -| 叶子命令执行数 | `83` | -| 语义成功(pass) | `50` | -| 退出码失败 | `2` | -| 业务失败 | `31` | - -## 关键上下文 - -- `uid`: `061978` -- `event-id`: `UnNNVXJhQ0JSeGZoUnFUc3VRL0dtUT09` -- `room-id`: `d173a1976db46927cf7a9d7fa900870a003e6834fdd7fee7` -- `base-id`: `NkDwLng8ZQ6mY37xSa3KoNXaJKMEvZBY` -- `table-id`: `EMOsppf` -- `task-id`: `51471335920` -- `template-id`: `18b46f75236c558cc63be07419f8d65f` - -## 失败明细 - -| 命令 | 分类 | 退出码 | 摘要 | -|---|---|---:|---| -| `dws aitable attachment upload` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PREPARE_ATTACHMENT_UPLOAD_REQUEST", "message": "fileName is required", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "su | -| `dws aitable base create` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_NAME", "message": "baseName is required and cannot be empty or only whitespace", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "err | -| `dws aitable base get` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable base update` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable field delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to get current fi | -| `dws aitable field get` | `fail_business` | `0` | { "data": {}, "error": { "code": "GET_FIELDS_ERROR", "message": "Failed to load field schema from sheet service", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "s | -| `dws aitable field update` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PARAMS", "message": "At least one of newFieldName, config or aiConfig must be provided for update", "retryable": false, "type": "INPUT_ERROR" }, "meta": { | -| `dws aitable record create` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to create records | -| `dws aitable record delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to delete records | -| `dws aitable record query` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "failed to resolve docId from baseId", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary": "Fa | -| `dws aitable record update` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_RECORDS", "message": "records must contain at least one writable record", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", | -| `dws aitable table create` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PARAMS", "message": "tableName is required", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to create | -| `dws aitable table delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable table get` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws attendance summary` | `fail_business` | `0` | { "code": "C0002", "message": "统计类型错误", "result": {}, "success": false, "trace_id": "0bab027317745976626518395e0780" } | -| `dws calendar event list-mine` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws calendar event update` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Cannot patch event that is not in 'confirmed' status.", "result": {}, "success": false, "trace_id": "213ee25c177459766844 | -| `dws calendar participant delete` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "0bab027317745976698356546e0828" } | -| `dws calendar room add` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Cannot patch event that is not in 'confirmed' status.", "result": {}, "success": false, "trace_id": "2132f5ca177459767125 | -| `dws chat group create` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group members add` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group members add-bot` | `fail_business` | `0` | { "errorCode": "500025", "errorMsg": "robotCode不存在", "success": false, "trace_id": "213ee25c17745976757057733e0b11" } | -| `dws chat group members remove` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group rename` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat message list` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat message recall-by-bot` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws chat message send` | `fail_exit` | `3` | { "error": { "category": "validation", "code": 3, "message": "--group and --user are mutually exclusive" } } | -| `dws chat message send-by-bot` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws ding message recall` | `fail_business` | `0` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "0bab027317745976874644796e07a4" } | -| `dws ding message send` | `fail_business` | `0` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "2132f5ca17745976882365774e0a19" } | -| `dws report create` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `dws report stats` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws todo task get` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | diff --git a/test/reports/dynamic-real-functional-full-rerun-latest.md b/test/reports/dynamic-real-functional-full-rerun-latest.md deleted file mode 100644 index 103b0c35..00000000 --- a/test/reports/dynamic-real-functional-full-rerun-latest.md +++ /dev/null @@ -1,60 +0,0 @@ -# CLI 动态服务发现全量功能测试报告(完整重跑) - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:48:28 | -| 动态服务数 | `10` | -| 命令节点(`--help`) | `118` | -| `--help` 失败 | `0` | -| 叶子命令执行数 | `83` | -| 语义成功(pass) | `50` | -| 退出码失败 | `2` | -| 业务失败 | `31` | - -## 关键上下文 - -- `uid`: `061978` -- `event-id`: `UnNNVXJhQ0JSeGZoUnFUc3VRL0dtUT09` -- `room-id`: `d173a1976db46927cf7a9d7fa900870a003e6834fdd7fee7` -- `base-id`: `NkDwLng8ZQ6mY37xSa3KoNXaJKMEvZBY` -- `table-id`: `EMOsppf` -- `task-id`: `51471335920` -- `template-id`: `18b46f75236c558cc63be07419f8d65f` - -## 失败明细 - -| 命令 | 分类 | 退出码 | 摘要 | -|---|---|---:|---| -| `dws aitable attachment upload` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PREPARE_ATTACHMENT_UPLOAD_REQUEST", "message": "fileName is required", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "su | -| `dws aitable base create` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_NAME", "message": "baseName is required and cannot be empty or only whitespace", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "err | -| `dws aitable base get` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable base update` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable field delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to get current fi | -| `dws aitable field get` | `fail_business` | `0` | { "data": {}, "error": { "code": "GET_FIELDS_ERROR", "message": "Failed to load field schema from sheet service", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "s | -| `dws aitable field update` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PARAMS", "message": "At least one of newFieldName, config or aiConfig must be provided for update", "retryable": false, "type": "INPUT_ERROR" }, "meta": { | -| `dws aitable record create` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to create records | -| `dws aitable record delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to delete records | -| `dws aitable record query` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "failed to resolve docId from baseId", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary": "Fa | -| `dws aitable record update` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_RECORDS", "message": "records must contain at least one writable record", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", | -| `dws aitable table create` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PARAMS", "message": "tableName is required", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to create | -| `dws aitable table delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable table get` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws attendance summary` | `fail_business` | `0` | { "code": "C0002", "message": "统计类型错误", "result": {}, "success": false, "trace_id": "0bab027317745976626518395e0780" } | -| `dws calendar event list-mine` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws calendar event update` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Cannot patch event that is not in 'confirmed' status.", "result": {}, "success": false, "trace_id": "213ee25c177459766844 | -| `dws calendar participant delete` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "0bab027317745976698356546e0828" } | -| `dws calendar room add` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Cannot patch event that is not in 'confirmed' status.", "result": {}, "success": false, "trace_id": "2132f5ca177459767125 | -| `dws chat group create` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group members add` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group members add-bot` | `fail_business` | `0` | { "errorCode": "500025", "errorMsg": "robotCode不存在", "success": false, "trace_id": "213ee25c17745976757057733e0b11" } | -| `dws chat group members remove` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group rename` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat message list` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat message recall-by-bot` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws chat message send` | `fail_exit` | `3` | { "error": { "category": "validation", "code": 3, "message": "--group and --user are mutually exclusive" } } | -| `dws chat message send-by-bot` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws ding message recall` | `fail_business` | `0` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "0bab027317745976874644796e07a4" } | -| `dws ding message send` | `fail_business` | `0` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "2132f5ca17745976882365774e0a19" } | -| `dws report create` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `dws report stats` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws todo task get` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | diff --git a/test/reports/dynamic-real-functional-latest.md b/test/reports/dynamic-real-functional-latest.md deleted file mode 100644 index b54cce5a..00000000 --- a/test/reports/dynamic-real-functional-latest.md +++ /dev/null @@ -1,270 +0,0 @@ -x# CLI 动态发现真实功能测试报告 - -| 项目 | 值 | -|---|---| -| 时间 | 2026-03-27 14:59:01 | -| 登录命令退出码 | `0` | -| 动态发现服务数 | `10` | -| 枚举命令节点数(`--help`) | `118` | -| `--help` 失败数 | `0` | -| 叶子命令真实执行数 | `83` | -| 执行成功数 | `75` | -| 执行失败数 | `8` | - -## 登录结果 - -```text -[OK] Token 有效,无需重新登录 -企业 ID: ding8196cd9a2b2405da24f2f5cc6abecb85 -有效期: 30 天后 -Token 将自动刷新,无需重复登录 -``` - -## 同产品包命令依赖关系分析 - -### aitable - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `attachment` | `upload` | 参数 `base-id` 依赖上游实体标识 | -| `base` | `create` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `template-id` 依赖上游实体标识 | -| `base` | `delete` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识 | -| `base` | `get` | 参数 `base-id` 依赖上游实体标识 | -| `base` | `list` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `base` | `search` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `base` | `update` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识 | -| `field` | `create` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `field` | `delete` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识;参数 `field-id` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `field` | `get` | 参数 `base-id` 依赖上游实体标识;参数 `field-ids` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `field` | `update` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识;参数 `field-id` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `record` | `create` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `record` | `delete` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识;参数 `record-ids` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `record` | `query` | 参数 `base-id` 依赖上游实体标识;参数 `field-ids` 依赖上游实体标识;参数 `record-ids` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `record` | `update` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `table` | `create` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识 | -| `table` | `delete` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `table` | `get` | 参数 `base-id` 依赖上游实体标识;参数 `table-ids` 依赖上游实体标识 | -| `table` | `update` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `base-id` 依赖上游实体标识;参数 `table-id` 依赖上游实体标识 | -| `template` | `search` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### attendance - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `record` | `get` | 参数 `date` 与时间窗口强相关;参数 `user` 依赖组织/人员上下文 | -| `rules` | `rules` | 参数 `date` 与时间窗口强相关 | -| `shift` | `list` | 参数 `end` 与时间窗口强相关;参数 `start` 与时间窗口强相关;参数 `users` 依赖组织/人员上下文 | -| `summary` | `summary` | 参数 `date` 与时间窗口强相关;参数 `user` 依赖组织/人员上下文 | - -### auth - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `login` | `login` | 参数 `login-timeout` 与时间窗口强相关;参数 `token-url` 依赖外部凭证;参数 `token` 依赖外部凭证 | -| `logout` | `logout` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `reset` | `reset` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `status` | `status` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### cache - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `refresh` | `refresh` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `status` | `status` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### calendar - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `busy` | `search` | 参数 `end` 与时间窗口强相关;参数 `start` 与时间窗口强相关;参数 `users` 依赖组织/人员上下文 | -| `event` | `create` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `end` 与时间窗口强相关;参数 `start` 与时间窗口强相关 | -| `event` | `delete` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `id` 依赖上游实体标识 | -| `event` | `get` | 参数 `id` 依赖上游实体标识 | -| `event` | `list` | 参数 `end` 与时间窗口强相关;参数 `start` 与时间窗口强相关 | -| `event` | `list-mine` | 参数 `end` 与时间窗口强相关;参数 `start` 与时间窗口强相关 | -| `event` | `update` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `end` 与时间窗口强相关;参数 `id` 依赖上游实体标识;参数 `start` 与时间窗口强相关 | -| `participant` | `add` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `users` 依赖组织/人员上下文 | -| `participant` | `delete` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `users` 依赖组织/人员上下文 | -| `participant` | `list` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `room` | `add` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行 | -| `room` | `delete` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行 | -| `room` | `list-groups` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `room` | `search` | 参数 `end` 与时间窗口强相关;参数 `group-id` 依赖上游实体标识;参数 `start` 与时间窗口强相关 | - -### chat - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `bot` | `search` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `group` | `create` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `users` 依赖组织/人员上下文 | -| `group` | `add` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `id` 依赖上游实体标识;参数 `users` 依赖组织/人员上下文 | -| `group` | `add-bot` | 参数 `id` 依赖上游实体标识 | -| `group` | `remove` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `id` 依赖上游实体标识;参数 `users` 依赖组织/人员上下文 | -| `group` | `rename` | 参数 `id` 依赖上游实体标识 | -| `message` | `list` | 参数 `time` 与时间窗口强相关;参数 `user` 依赖组织/人员上下文 | -| `message` | `recall-by-bot` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `message` | `send` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `user` 依赖组织/人员上下文 | -| `message` | `send-by-bot` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `message` | `send-by-webhook` | 参数 `at-users` 依赖组织/人员上下文;参数 `token` 依赖外部凭证 | -| `search` | `search` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### completion - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `(root)` | `completion` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### contact - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `dept` | `list-children` | 参数 `id` 依赖上游实体标识 | -| `dept` | `list-members` | 参数 `ids` 依赖上游实体标识 | -| `dept` | `search` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `user` | `get` | 参数 `ids` 依赖上游实体标识 | -| `user` | `get-self` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `user` | `search` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `user` | `search-mobile` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### devdoc - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `article` | `search` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### ding - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `message` | `recall` | 参数 `id` 依赖上游实体标识 | -| `message` | `send` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `users` 依赖组织/人员上下文 | - -### report - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `create` | `create` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `template-id` 依赖上游实体标识;参数 `to-user-ids` 依赖上游实体标识;参数 `to-user-ids` 依赖组织/人员上下文 | -| `detail` | `detail` | 参数 `report-id` 依赖上游实体标识 | -| `list` | `list` | 参数 `end` 与时间窗口强相关;参数 `start` 与时间窗口强相关 | -| `sent` | `sent` | 参数 `end` 与时间窗口强相关;参数 `modified-end` 与时间窗口强相关;参数 `modified-start` 与时间窗口强相关;参数 `start` 与时间窗口强相关 | -| `stats` | `stats` | 参数 `report-id` 依赖上游实体标识 | -| `template` | `detail` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `template` | `list` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### todo - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `task` | `create` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行 | -| `task` | `delete` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `task-id` 依赖上游实体标识 | -| `task` | `done` | 参数 `task-id` 依赖上游实体标识 | -| `task` | `get` | 参数 `task-id` 依赖上游实体标识 | -| `task` | `list` | 以查询类命令为主,通常仅依赖关键词/分页参数 | -| `task` | `update` | 写操作通常依赖 list/get/search 先拿到目标 ID 再执行;参数 `task-id` 依赖上游实体标识 | - -### version - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `(root)` | `version` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -### workbench - -| 模块 | 动作 | 依赖分析 | -|---|---|---| -| `app` | `get` | 参数 `ids` 依赖上游实体标识 | -| `app` | `list` | 以查询类命令为主,通常仅依赖关键词/分页参数 | - -## 叶子命令真实执行明细 - -| 命令路径 | 退出码 | 自动补齐入参数量 | 摘要 | -|---|---:|---:|---| -| `dws aitable attachment upload` | `0` | `3` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable base create` | `0` | `3` | { "data": { "baseId": "3NwLYZXWyrmRolXLcQG7gxMdVkyEqBQm", "baseName": "auto-test-name" }, "error": {}, "meta": {}, "status": "success", "summary": "Created base | -| `dws aitable base delete` | `0` | `2` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable base get` | `0` | `2` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable base list` | `0` | `1` | { "data": { "bases": [ { "baseId": "3NwLYZXWyrmRolXLcQG7gxMdVkyEqBQm", "baseName": "auto-test-name" }, { "baseId": "QPGYqjpJYRyab0nx | -| `dws aitable base search` | `0` | `2` | { "data": { "bases": [ { "baseId": "14dA3GK8gkP4oNl0crRvZyXv89ekBD76", "baseName": "测试AI 表格" }, { "baseId": "DnRL6jAJMNX9kAgycZdkqoY | -| `dws aitable base update` | `0` | `3` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable field create` | `0` | `3` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable field delete` | `0` | `4` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable field get` | `0` | `4` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable field update` | `0` | `5` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable record create` | `0` | `3` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable record delete` | `0` | `4` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable record query` | `0` | `6` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable record update` | `0` | `3` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable table create` | `0` | `3` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable table delete` | `0` | `3` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable table get` | `0` | `3` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable table update` | `0` | `4` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "baseId must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, " | -| `dws aitable template search` | `0` | `2` | { "data": { "hasMore": false, "nextCursor": "10", "templates": [ { "description": "随堂小测试模板用于课堂即时检测,适用教师与学生,快速收集反馈,提升教学效率。", "name": "随堂小测试", | -| `dws attendance record get` | `3` | `3` | { "error": { "category": "validation", "code": 3, "message": "--date format error, use YYYY-MM-DD, e.g. 2026-03-08" } } | -| `dws attendance rules` | `3` | `2` | { "error": { "category": "validation", "code": 3, "message": "--date format error, use YYYY-MM-DD or yyyy-MM-dd HH:mm:ss: test" } } | -| `dws attendance shift list` | `3` | `4` | { "error": { "category": "validation", "code": 3, "message": "--start date format error, use YYYY-MM-DD" } } | -| `dws attendance summary` | `3` | `3` | { "error": { "category": "validation", "code": 3, "message": "--date format error, use yyyy-MM-dd HH:mm:ss" } } | -| `dws calendar busy search` | `0` | `2` | { "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: startTime cannot be blank", "result": [ { "scheduleItems": null } ], "success": false, | -| `dws calendar event create` | `0` | `2` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Start time cannot be blank for a non-all day event.", "result": { "attendees": nu | -| `dws calendar event delete` | `0` | `2` | { "arguments": [], "errorCode": "300014", "errorMsg": "Event not exist", "result": {}, "success": false, "trace_id": "213ee25c17745946765898223e0af0" } | -| `dws calendar event get` | `0` | `2` | { "arguments": [], "result": { "attendees": null, "categories": null, "reminders": null }, "success": false, "trace_id": "0bab027317745946772971785e07c5" } | -| `dws calendar event list` | `0` | `1` | { "arguments": [], "result": { "events": [ { "attendees": [ { "displayName": "尘舟", "optional": false, "responseS | -| `dws calendar event list-mine` | `0` | `1` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API erro | -| `dws calendar event update` | `0` | `3` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Event does not exist.", "result": {}, "success": false, "trace_id": "2106d9811774 | -| `dws calendar participant add` | `0` | `2` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "success": false, "trace_id": "2127d89817745947042464823e | -| `dws calendar participant delete` | `0` | `2` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "2106d98117 | -| `dws calendar participant list` | `0` | `1` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": { "attendees": null }, "success": false, | -| `dws calendar room add` | `0` | `1` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "2132f5ca17 | -| `dws calendar room delete` | `0` | `1` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "213ee25c17 | -| `dws calendar room list-groups` | `0` | `1` | { "result": { "groupList": [ { "groupId": 41, "groupName": "绿城·未来park", "parentId": 0 }, { "groupId": 74, "groupName | -| `dws calendar room search` | `0` | `2` | { "arguments": [], "errorCode": "400002", "errorMsg": "filterStartTime or filterEndTime error", "result": { "result": [ { "labels": null } ] } | -| `dws chat bot search` | `0` | `4` | { "robotList": [], "success": true } | -| `dws chat group create` | `0` | `3` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API erro | -| `dws chat group members add` | `0` | `3` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API erro | -| `dws chat group members add-bot` | `0` | `3` | { "errorCode": "500025", "errorMsg": "robotCode不存在", "success": false, "trace_id": "0bab027317745947105987158e0780" } | -| `dws chat group members remove` | `0` | `3` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API erro | -| `dws chat group rename` | `0` | `3` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API erro | -| `dws chat message list` | `3` | `4` | { "error": { "category": "validation", "code": 3, "message": "--time is required" } } | -| `dws chat message recall-by-bot` | `0` | `1` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程 | -| `dws chat message send` | `5` | `4` | { "error": { "category": "internal", "code": 5, "message": "accepts 1 arg(s), received 0" } } | -| `dws chat message send-by-bot` | `0` | `3` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程 | -| `dws chat message send-by-webhook` | `0` | `6` | { "errcode": "300005", "errmsg": "token is not exist" } | -| `dws chat search` | `0` | `2` | { "result": { "hasMore": true, "nextCursor": "abe74d73660ef3d46bc92185e05915f2f48689450699e0bf70849ba71758a903", "total": 262, "value": [ { "extensi | -| `dws contact dept list-children` | `0` | `2` | { "result": [], "success": true } | -| `dws contact dept list-members` | `0` | `2` | { "deptUserList": [], "success": true } | -| `dws contact dept search` | `0` | `2` | { "deptList": [], "hasMore": false, "totalCount": 0 } | -| `dws contact user get` | `0` | `2` | { "result": [ { "orgEmployeeModel": { "depts": null, "labels": null, "orgId": null } } ], "success": true } | -| `dws contact user get-self` | `0` | `1` | { "result": [ { "isAdmin": true, "orgEmployeeModel": { "corpId": "ding8196cd9a2b2405da24f2f5cc6abecb85", "depts": [ { "deptI | -| `dws contact user search` | `0` | `2` | { "userId": [ "033067356464903146", "030037243111903146", "025109313335903146" ] } | -| `dws contact user search-mobile` | `0` | `2` | { "arguments": [], "success": true } | -| `dws devdoc article search` | `0` | `2` | { "result": { "currentPage": 1, "hasMore": true, "items": [ { "desc": "标题: 创建知识库文档 - 开放平台\n内容: * * *\n例如,企业员工小明在测试知识库内,单击**新建** 按钮创建文档,与调用本接口实现效果一致,如下图: | -| `dws ding message recall` | `0` | `2` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "2106d98117745947215725878e0ad1" } | -| `dws ding message send` | `0` | `3` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "2106d98117745947223905960e0ad1" } | -| `dws report create` | `3` | `4` | { "error": { "category": "validation", "code": 3, "message": "json_parse: invalid JSON: invalid character 'è' looking for beginning of value" } } | -| `dws report detail` | `0` | `2` | { "errorMsg": "ok", "result": { "contentV2": [ { "images": null } ], "images": [], "report_Id": "test-001", "report_content": [ { | -| `dws report list` | `0` | `1` | { "errcode": 40035, "errorMsg": "不合法的参数", "result": { "report_list": null, "size": 0 }, "success": false, "trace_id": "0bab027317745947235068184e0780" } | -| `dws report sent` | `0` | `2` | { "code": "ERROR", "error": "操作失败", "message": "操作失败。发生错误,建议稍后重试", "retryable": true, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root. | -| `dws report stats` | `0` | `2` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程 | -| `dws report template detail` | `0` | `2` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程 | -| `dws report template list` | `0` | `1` | { "items": [ { "last_modified_time": 1697702695000, "report_template_id": "18b46f75236c558cc63be07419f8d65f", "report_template_logo_url": "https://landray.d | -| `dws todo task create` | `0` | `2` | { "arguments": [], "errorCode": "999", "errorMsg": "system error: java.lang.NullPointerException", "success": false, "trace_id": "2106d98117745947277007837e0b34" } | -| `dws todo task delete` | `0` | `2` | { "result": { "success": false } } | -| `dws todo task done` | `0` | `2` | { "result": { "success": false } } | -| `dws todo task get` | `0` | `2` | { "arguments": [], "errorCode": "500", "errorMsg": "NewTodoService#getTodoDetail taskId is null", "result": {}, "success": false, "trace_id": "213ee25c17745947295756384 | -| `dws todo task list` | `0` | `2` | { "result": { "todoCards": null } } | -| `dws todo task update` | `0` | `3` | { "result": { "success": false } } | -| `dws workbench app get` | `0` | `2` | { "eventData": { "activityType": "MULTI_PANEL", "content": { "assets": { "description": "工作台扩展", "entry": "https://dev.g.alicdn.com/dingding/dd-chat | -| `dws workbench app list` | `0` | `1` | { "appList": [ { "d": "商业保险", "i": "0_2403230743", "n": "商业保险" }, { "d": "助力组织文化活动快速落地", "i": "0_2680655126", "n": "组织文化管理平台" | -| `dws auth login` | `0` | `7` | [OK] Token 有效,无需重新登录 有效期: 24 小时后 Token 将自动刷新,无需重复登录 | -| `dws auth logout` | `0` | `1` | [OK] 已清除所有认证信息 请运行 dws auth login 重新登录 | -| `dws auth reset` | `0` | `1` | [OK] 认证信息已重置 请运行 dws auth login 重新登录 | -| `dws auth status` | `0` | `1` | 状态: 未登录 运行 dws auth login 进行登录 | -| `dws cache refresh` | `0` | `1` | [OK] 缓存刷新完成:已刷新 10 个服务,失败 10 个 缓存目录: /Users/tianlei.qjb/.dws/cache | -| `dws cache status` | `0` | `1` | 缓存目录: /Users/tianlei.qjb/.dws/cache 文件数: 1 大小: 63214 字节 | -| `dws completion` | `5` | `1` | { "error": { "category": "internal", "code": 5, "message": "accepts 1 arg(s), received 0" } } | -| `dws version` | `0` | `1` | { "go": "1.24+", "version": "v1.0.0" } | - -## 执行口径说明 - -- 本次为**真实命令执行**(非 go test,非 dry-run);为了避免破坏性写入,入参使用自动生成测试值,部分写操作可能因业务校验失败而返回非 0。 -- 所有命令均通过动态发现入口进行递归枚举,覆盖当前可见服务树。 -- 凭证未写入报告,报告仅保留退出码与脱敏输出片段。 diff --git a/test/reports/dynamic-real-functional-non-chat-ding-fix-20260327-155902.md b/test/reports/dynamic-real-functional-non-chat-ding-fix-20260327-155902.md deleted file mode 100644 index 05dea6c9..00000000 --- a/test/reports/dynamic-real-functional-non-chat-ding-fix-20260327-155902.md +++ /dev/null @@ -1,39 +0,0 @@ -# 非Chat/Ding问题继续修复回归报告 - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:59:25 | -| 重跑项数 | `14` | -| pass | `9` | -| fail_exit | `0` | -| fail_business | `5` | - -- uid: `061978` -- base-id: `1zknDm0WRz0NZeXQu2zY5PLaWBQEx5rG` -- table-id: `qfszJ1P` -- event-id: `OG0xR0FVMThsSEN6Y2dwdTBxa1ZMUT09` -- room-id: `d173a1976db46927cf7a9d7fa900870a003e6834fdd7fee7` -- task-id: `51683596509` -- template-id: `18b46f75236c558cc63be07419f8d65f` - -## 白名单说明 - -- chat.* 与 ding.* 当前归入白名单阻塞(本报告未纳入修复目标)。 -- calendar event list-mine 已继续探测,不按白名单处理。 - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `fix.aitable.base.get` | `0` | `pass` | { "data": { "baseId": "1zknDm0WRz0NZeXQu2zY5PLaWBQEx5rG", "baseName": "non-chat-ding-base", "dashboards": [], "tables": [ { "tableId": "qfszJ1P", "tableName": "non-chat-ding-table" | -| `fix.aitable.base.update` | `0` | `pass` | { "data": { "baseId": "1zknDm0WRz0NZeXQu2zY5PLaWBQEx5rG", "baseName": "non-chat-ding-base-upd", "updatedAt": "2026-03-27T15:59:13+08:00" }, "error": {}, "meta": {}, "status": "success", "summary": | -| `fix.aitable.table.get` | `0` | `pass` | { "data": { "tables": [ { "fields": [ { "fieldId": "XeI8OyF", "fieldName": "标题", "type": "primaryDoc" }, { "fieldId": "FoE | -| `fix.aitable.record.create` | `0` | `pass` | { "data": { "newRecordIds": [ "0j1cfP7VjU" ] }, "error": {}, "meta": {}, "status": "success", "summary": "Successfully created 1 record(s) in table qfszJ1P of base 1zknDm0WRz0NZeXQu2zY5PLaWBQEx5 | -| `fix.aitable.record.query` | `0` | `pass` | { "data": { "nextCursor": "0j1cfP7VjU", "records": [ { "cells": { "FoE2ouB": "ok" }, "recordId": "0j1cfP7VjU" } ] }, "error": {}, "meta": {}, "status": | -| `fix.aitable.record.delete` | `0` | `pass` | { "data": { "deletedCount": 0 }, "error": {}, "meta": {}, "status": "success", "summary": "Deleted 0 record(s) from table qfszJ1P. Skipped already missing recordIds (1): dummy" } | -| `fix.attendance.summary` | `0` | `fail_business` | { "code": "C0002", "message": "统计类型错误", "result": {}, "success": false, "trace_id": "0bab027317745983602097877e0828" } | -| `fix.calendar.list-mine` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `fix.calendar.event.update` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true | -| `fix.calendar.participant.delete` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "2106d98117745983619102665e0a69" } | -| `fix.calendar.room.add` | `0` | `fail_business` | { "arguments": [], "errorCode": "321001", "errorMsg": "code: 321001, developerMessage: [{\"roomName\":\"钉钉展厅-电视\",\"text\":\"根据管理员设置,同一时间段内只允许预定一个会议室,请移除多余的会议室\"}]", "result": {}, "success": false, "trace_id" | -| `fix.todo.task.get` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": { "todoDetailModel": { "activities": [ { "action": "task.create", "activityId": "12796095969", "cr | -| `fix.report.create` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `fix.report.list` | `0` | `pass` | { "errcode": 0, "errorMsg": "ok", "result": { "hasMore": false, "nextCursor": 0, "report_list": [], "size": 10 }, "success": true } | diff --git a/test/reports/dynamic-real-functional-non-chat-ding-fix-latest.md b/test/reports/dynamic-real-functional-non-chat-ding-fix-latest.md deleted file mode 100644 index 05dea6c9..00000000 --- a/test/reports/dynamic-real-functional-non-chat-ding-fix-latest.md +++ /dev/null @@ -1,39 +0,0 @@ -# 非Chat/Ding问题继续修复回归报告 - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:59:25 | -| 重跑项数 | `14` | -| pass | `9` | -| fail_exit | `0` | -| fail_business | `5` | - -- uid: `061978` -- base-id: `1zknDm0WRz0NZeXQu2zY5PLaWBQEx5rG` -- table-id: `qfszJ1P` -- event-id: `OG0xR0FVMThsSEN6Y2dwdTBxa1ZMUT09` -- room-id: `d173a1976db46927cf7a9d7fa900870a003e6834fdd7fee7` -- task-id: `51683596509` -- template-id: `18b46f75236c558cc63be07419f8d65f` - -## 白名单说明 - -- chat.* 与 ding.* 当前归入白名单阻塞(本报告未纳入修复目标)。 -- calendar event list-mine 已继续探测,不按白名单处理。 - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `fix.aitable.base.get` | `0` | `pass` | { "data": { "baseId": "1zknDm0WRz0NZeXQu2zY5PLaWBQEx5rG", "baseName": "non-chat-ding-base", "dashboards": [], "tables": [ { "tableId": "qfszJ1P", "tableName": "non-chat-ding-table" | -| `fix.aitable.base.update` | `0` | `pass` | { "data": { "baseId": "1zknDm0WRz0NZeXQu2zY5PLaWBQEx5rG", "baseName": "non-chat-ding-base-upd", "updatedAt": "2026-03-27T15:59:13+08:00" }, "error": {}, "meta": {}, "status": "success", "summary": | -| `fix.aitable.table.get` | `0` | `pass` | { "data": { "tables": [ { "fields": [ { "fieldId": "XeI8OyF", "fieldName": "标题", "type": "primaryDoc" }, { "fieldId": "FoE | -| `fix.aitable.record.create` | `0` | `pass` | { "data": { "newRecordIds": [ "0j1cfP7VjU" ] }, "error": {}, "meta": {}, "status": "success", "summary": "Successfully created 1 record(s) in table qfszJ1P of base 1zknDm0WRz0NZeXQu2zY5PLaWBQEx5 | -| `fix.aitable.record.query` | `0` | `pass` | { "data": { "nextCursor": "0j1cfP7VjU", "records": [ { "cells": { "FoE2ouB": "ok" }, "recordId": "0j1cfP7VjU" } ] }, "error": {}, "meta": {}, "status": | -| `fix.aitable.record.delete` | `0` | `pass` | { "data": { "deletedCount": 0 }, "error": {}, "meta": {}, "status": "success", "summary": "Deleted 0 record(s) from table qfszJ1P. Skipped already missing recordIds (1): dummy" } | -| `fix.attendance.summary` | `0` | `fail_business` | { "code": "C0002", "message": "统计类型错误", "result": {}, "success": false, "trace_id": "0bab027317745983602097877e0828" } | -| `fix.calendar.list-mine` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `fix.calendar.event.update` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true | -| `fix.calendar.participant.delete` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "2106d98117745983619102665e0a69" } | -| `fix.calendar.room.add` | `0` | `fail_business` | { "arguments": [], "errorCode": "321001", "errorMsg": "code: 321001, developerMessage: [{\"roomName\":\"钉钉展厅-电视\",\"text\":\"根据管理员设置,同一时间段内只允许预定一个会议室,请移除多余的会议室\"}]", "result": {}, "success": false, "trace_id" | -| `fix.todo.task.get` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": { "todoDetailModel": { "activities": [ { "action": "task.create", "activityId": "12796095969", "cr | -| `fix.report.create` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `fix.report.list` | `0` | `pass` | { "errcode": 0, "errorMsg": "ok", "result": { "hasMore": false, "nextCursor": 0, "report_list": [], "size": 10 }, "success": true } | diff --git a/test/reports/dynamic-real-functional-v2-20260327-150330.md b/test/reports/dynamic-real-functional-v2-20260327-150330.md deleted file mode 100644 index 36d35df9..00000000 --- a/test/reports/dynamic-real-functional-v2-20260327-150330.md +++ /dev/null @@ -1,165 +0,0 @@ -# CLI 动态发现真实功能测试报告(第二轮强化) - -| 项目 | 值 | -|---|---| -| 时间 | 2026-03-27 15:05:18 | -| 登录退出码 | `0` | -| 动态服务数 | `10` | -| 命令节点(`--help`) | `118` | -| `--help` 失败 | `0` | -| 叶子命令执行数 | `83` | -| 语义成功(pass) | `37` | -| 退出码失败 | `4` | -| 业务失败(success=false/错误体) | `42` | - -## 依赖链增强策略 - -- `aitable`:先 `base create` 获取 `baseId`,再复用到 table/field/record 子命令。 -- `calendar`:先 `event create/list` 采集 `eventId`,再复用到 event get/update/delete、participant 相关命令。 -- 日期时间按命令帮助约束分流:`YYYY-MM-DD` 与 `yyyy-MM-dd HH:mm:ss`。 -- 人员参数优先填充真实用户 `manager5450`(来自第一轮接口返回上下文)。 - -## 关键上下文ID - -- `base-id`: `Exel2BLV5gOAdXr1uDpNXZN38gk9rpMq` -- `table-id`: `F0k4Z0j` -- `event-id`: `UzFMazluYWE5bkI2dElacTgvdlJwUT09` - -## 失败明细(需进一步人工业务校验) - -| 命令 | 分类 | 退出码 | 摘要 | -|---|---|---:|---| -| `dws aitable attachment upload` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PREPARE_ATTACHMENT_UPLOAD_REQUEST", "message": "fileName must include an extension", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": | -| `dws aitable base get` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable base update` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable field create` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PARAMS", "message": "fields are required", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to create fi | -| `dws aitable field delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to get current fi | -| `dws aitable field get` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_FIELD_ID", "message": "fieldIds[0] must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", | -| `dws aitable field update` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to get current fi | -| `dws aitable record create` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_RECORDS", "message": "records must contain at least one record", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary" | -| `dws aitable record delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_RECORD_ID", "message": "recordIds[0] must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", | -| `dws aitable record query` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_RECORD_ID", "message": "recordIds[0] must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", | -| `dws aitable record update` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_RECORDS", "message": "records must contain at least one record", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary" | -| `dws aitable table create` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to create table ' | -| `dws aitable table delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable table get` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_TABLE_ID", "message": "tableIds[0] must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", | -| `dws aitable table update` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to update table F | -| `dws attendance record get` | `fail_business` | `0` | { "code": "ERROR", "error": "操作失败", "message": "操作失败。发生错误,建议稍后重试", "retryable": true, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预期值:true,所有值:{\"code\" | -| `dws attendance summary` | `fail_business` | `0` | { "code": "C0002", "message": "统计类型错误", "result": {}, "success": false, "trace_id": "0bab027317745950775382548e0761" } | -| `dws calendar event create` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Invalid start dateTime format.", "result": { "attendees": null, "reminders": null }, "success": false, "trace_i | -| `dws calendar event list-mine` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws calendar event update` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Invalid start dateTime format.", "result": {}, "success": false, "trace_id": "213ee25c17745950825128586e0b32" } | -| `dws calendar participant add` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "success": false, "trace_id": "2132f5ca17745950833098855e09f8" } | -| `dws calendar participant delete` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "0bab027317745950840092994e0761" } | -| `dws calendar participant list` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": { "attendees": null }, "success": false, "trace_id": "213ee25c17745950846354940 | -| `dws calendar room add` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "0bab027317745950853753133e0761" } | -| `dws calendar room delete` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "2132f5ca17745950860591744e0a4e" } | -| `dws calendar room search` | `fail_business` | `0` | { "arguments": [], "errorCode": "458019", "errorMsg": "查询范围内的会议室数量,超过上限100,请选择更小范围的分组进行查询。", "result": { "result": [ { "labels": null } ] }, "success": false, "trace_id": "2132f5 | -| `dws chat group create` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group members add` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group members add-bot` | `fail_business` | `0` | { "errorCode": "500025", "errorMsg": "robotCode不存在", "success": false, "trace_id": "2106d98117745950903798357e0b34" } | -| `dws chat group members remove` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group rename` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat message list` | `fail_exit` | `3` | { "error": { "category": "validation", "code": 3, "message": "--group and --user are mutually exclusive" } } | -| `dws chat message recall-by-bot` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws chat message send` | `fail_exit` | `5` | { "error": { "category": "internal", "code": 5, "message": "accepts 1 arg(s), received 0" } } | -| `dws chat message send-by-bot` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws contact user search-mobile` | `fail_business` | `0` | { "arguments": [], "errorCode": "11001", "errorMsg": "手机格式不正确,请重新输入", "success": false, "trace_id": "2106d98117745950982347064e0ab0" } | -| `dws ding message recall` | `fail_business` | `0` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "0bab027317745950995614026e0761" } | -| `dws ding message send` | `fail_business` | `0` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "2106d98117745951002636917e0b13" } | -| `dws report create` | `fail_exit` | `3` | { "error": { "category": "validation", "code": 3, "message": "json_parse: invalid JSON: invalid character 'ç' looking for beginning of value" } } | -| `dws report list` | `fail_business` | `0` | { "errcode": 40035, "errorMsg": "不合法的参数", "result": { "report_list": null, "size": 0 }, "success": false, "trace_id": "213ee25c17745951014526150e0af0" } | -| `dws report sent` | `fail_business` | `0` | { "code": "ERROR", "error": "操作失败", "message": "操作失败。发生错误,建议稍后重试", "retryable": true, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:null, 预期值:true,所有值:{\"stackTr | -| `dws report stats` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws report template detail` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `dws todo task create` | `fail_business` | `0` | { "arguments": [], "errorCode": "999", "errorMsg": "system error: java.lang.NullPointerException", "success": false, "trace_id": "213ee25c17745951058325426e0acd" } | -| `dws todo task get` | `fail_business` | `0` | { "arguments": [], "errorCode": "500", "errorMsg": "NewTodoService#getTodoDetail taskId is null", "result": {}, "success": false, "trace_id": "0bab027317745951078651445e07c5" } | -| `dws completion` | `fail_exit` | `5` | { "error": { "category": "internal", "code": 5, "message": "accepts 1 arg(s), received 0" } } | - -## 全量执行明细 - -| 命令 | 语义结果 | 退出码 | 自动补参个数 | -|---|---|---:|---:| -| `dws aitable attachment upload` | `fail_business` | `0` | `2` | -| `dws aitable base create` | `pass` | `0` | `2` | -| `dws aitable base delete` | `pass` | `0` | `1` | -| `dws aitable base get` | `fail_business` | `0` | `1` | -| `dws aitable base list` | `pass` | `0` | `0` | -| `dws aitable base search` | `pass` | `0` | `1` | -| `dws aitable base update` | `fail_business` | `0` | `3` | -| `dws aitable field create` | `fail_business` | `0` | `2` | -| `dws aitable field delete` | `fail_business` | `0` | `3` | -| `dws aitable field get` | `fail_business` | `0` | `3` | -| `dws aitable field update` | `fail_business` | `0` | `4` | -| `dws aitable record create` | `fail_business` | `0` | `2` | -| `dws aitable record delete` | `fail_business` | `0` | `3` | -| `dws aitable record query` | `fail_business` | `0` | `5` | -| `dws aitable record update` | `fail_business` | `0` | `2` | -| `dws aitable table create` | `fail_business` | `0` | `2` | -| `dws aitable table delete` | `fail_business` | `0` | `2` | -| `dws aitable table get` | `fail_business` | `0` | `2` | -| `dws aitable table update` | `fail_business` | `0` | `3` | -| `dws aitable template search` | `pass` | `0` | `1` | -| `dws attendance record get` | `fail_business` | `0` | `2` | -| `dws attendance rules` | `pass` | `0` | `1` | -| `dws attendance shift list` | `pass` | `0` | `3` | -| `dws attendance summary` | `fail_business` | `0` | `2` | -| `dws calendar busy search` | `pass` | `0` | `3` | -| `dws calendar event create` | `fail_business` | `0` | `4` | -| `dws calendar event delete` | `pass` | `0` | `1` | -| `dws calendar event get` | `pass` | `0` | `1` | -| `dws calendar event list` | `pass` | `0` | `2` | -| `dws calendar event list-mine` | `fail_business` | `0` | `2` | -| `dws calendar event update` | `fail_business` | `0` | `4` | -| `dws calendar participant add` | `fail_business` | `0` | `1` | -| `dws calendar participant delete` | `fail_business` | `0` | `1` | -| `dws calendar participant list` | `fail_business` | `0` | `0` | -| `dws calendar room add` | `fail_business` | `0` | `0` | -| `dws calendar room delete` | `fail_business` | `0` | `0` | -| `dws calendar room list-groups` | `pass` | `0` | `0` | -| `dws calendar room search` | `fail_business` | `0` | `3` | -| `dws chat bot search` | `pass` | `0` | `3` | -| `dws chat group create` | `fail_business` | `0` | `2` | -| `dws chat group members add` | `fail_business` | `0` | `2` | -| `dws chat group members add-bot` | `fail_business` | `0` | `2` | -| `dws chat group members remove` | `fail_business` | `0` | `2` | -| `dws chat group rename` | `fail_business` | `0` | `2` | -| `dws chat message list` | `fail_exit` | `3` | `4` | -| `dws chat message recall-by-bot` | `fail_business` | `0` | `0` | -| `dws chat message send` | `fail_exit` | `5` | `3` | -| `dws chat message send-by-bot` | `fail_business` | `0` | `2` | -| `dws chat message send-by-webhook` | `pass` | `0` | `4` | -| `dws chat search` | `pass` | `0` | `1` | -| `dws contact dept list-children` | `pass` | `0` | `1` | -| `dws contact dept list-members` | `pass` | `0` | `1` | -| `dws contact dept search` | `pass` | `0` | `1` | -| `dws contact user get` | `pass` | `0` | `1` | -| `dws contact user get-self` | `pass` | `0` | `0` | -| `dws contact user search` | `pass` | `0` | `1` | -| `dws contact user search-mobile` | `fail_business` | `0` | `0` | -| `dws devdoc article search` | `pass` | `0` | `1` | -| `dws ding message recall` | `fail_business` | `0` | `1` | -| `dws ding message send` | `fail_business` | `0` | `2` | -| `dws report create` | `fail_exit` | `3` | `3` | -| `dws report detail` | `pass` | `0` | `1` | -| `dws report list` | `fail_business` | `0` | `2` | -| `dws report sent` | `fail_business` | `0` | `3` | -| `dws report stats` | `fail_business` | `0` | `1` | -| `dws report template detail` | `fail_business` | `0` | `1` | -| `dws report template list` | `pass` | `0` | `0` | -| `dws todo task create` | `fail_business` | `0` | `1` | -| `dws todo task delete` | `pass` | `0` | `1` | -| `dws todo task done` | `pass` | `0` | `1` | -| `dws todo task get` | `fail_business` | `0` | `1` | -| `dws todo task list` | `pass` | `0` | `1` | -| `dws todo task update` | `pass` | `0` | `2` | -| `dws workbench app get` | `pass` | `0` | `1` | -| `dws workbench app list` | `pass` | `0` | `0` | -| `dws auth login` | `pass` | `0` | `3` | -| `dws auth logout` | `pass` | `0` | `0` | -| `dws auth reset` | `pass` | `0` | `0` | -| `dws auth status` | `pass` | `0` | `0` | -| `dws cache refresh` | `pass` | `0` | `0` | -| `dws cache status` | `pass` | `0` | `0` | -| `dws completion` | `fail_exit` | `5` | `0` | -| `dws version` | `pass` | `0` | `0` | diff --git a/test/reports/dynamic-real-functional-v2-latest.md b/test/reports/dynamic-real-functional-v2-latest.md deleted file mode 100644 index 36d35df9..00000000 --- a/test/reports/dynamic-real-functional-v2-latest.md +++ /dev/null @@ -1,165 +0,0 @@ -# CLI 动态发现真实功能测试报告(第二轮强化) - -| 项目 | 值 | -|---|---| -| 时间 | 2026-03-27 15:05:18 | -| 登录退出码 | `0` | -| 动态服务数 | `10` | -| 命令节点(`--help`) | `118` | -| `--help` 失败 | `0` | -| 叶子命令执行数 | `83` | -| 语义成功(pass) | `37` | -| 退出码失败 | `4` | -| 业务失败(success=false/错误体) | `42` | - -## 依赖链增强策略 - -- `aitable`:先 `base create` 获取 `baseId`,再复用到 table/field/record 子命令。 -- `calendar`:先 `event create/list` 采集 `eventId`,再复用到 event get/update/delete、participant 相关命令。 -- 日期时间按命令帮助约束分流:`YYYY-MM-DD` 与 `yyyy-MM-dd HH:mm:ss`。 -- 人员参数优先填充真实用户 `manager5450`(来自第一轮接口返回上下文)。 - -## 关键上下文ID - -- `base-id`: `Exel2BLV5gOAdXr1uDpNXZN38gk9rpMq` -- `table-id`: `F0k4Z0j` -- `event-id`: `UzFMazluYWE5bkI2dElacTgvdlJwUT09` - -## 失败明细(需进一步人工业务校验) - -| 命令 | 分类 | 退出码 | 摘要 | -|---|---|---:|---| -| `dws aitable attachment upload` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PREPARE_ATTACHMENT_UPLOAD_REQUEST", "message": "fileName must include an extension", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": | -| `dws aitable base get` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable base update` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable field create` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PARAMS", "message": "fields are required", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to create fi | -| `dws aitable field delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to get current fi | -| `dws aitable field get` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_FIELD_ID", "message": "fieldIds[0] must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", | -| `dws aitable field update` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to get current fi | -| `dws aitable record create` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_RECORDS", "message": "records must contain at least one record", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary" | -| `dws aitable record delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_RECORD_ID", "message": "recordIds[0] must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", | -| `dws aitable record query` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_RECORD_ID", "message": "recordIds[0] must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", | -| `dws aitable record update` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_RECORDS", "message": "records must contain at least one record", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary" | -| `dws aitable table create` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to create table ' | -| `dws aitable table delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable table get` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_TABLE_ID", "message": "tableIds[0] must contain only letters and digits", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", | -| `dws aitable table update` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to update table F | -| `dws attendance record get` | `fail_business` | `0` | { "code": "ERROR", "error": "操作失败", "message": "操作失败。发生错误,建议稍后重试", "retryable": true, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预期值:true,所有值:{\"code\" | -| `dws attendance summary` | `fail_business` | `0` | { "code": "C0002", "message": "统计类型错误", "result": {}, "success": false, "trace_id": "0bab027317745950775382548e0761" } | -| `dws calendar event create` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Invalid start dateTime format.", "result": { "attendees": null, "reminders": null }, "success": false, "trace_i | -| `dws calendar event list-mine` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws calendar event update` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Invalid start dateTime format.", "result": {}, "success": false, "trace_id": "213ee25c17745950825128586e0b32" } | -| `dws calendar participant add` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "success": false, "trace_id": "2132f5ca17745950833098855e09f8" } | -| `dws calendar participant delete` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "0bab027317745950840092994e0761" } | -| `dws calendar participant list` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": { "attendees": null }, "success": false, "trace_id": "213ee25c17745950846354940 | -| `dws calendar room add` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "0bab027317745950853753133e0761" } | -| `dws calendar room delete` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "2132f5ca17745950860591744e0a4e" } | -| `dws calendar room search` | `fail_business` | `0` | { "arguments": [], "errorCode": "458019", "errorMsg": "查询范围内的会议室数量,超过上限100,请选择更小范围的分组进行查询。", "result": { "result": [ { "labels": null } ] }, "success": false, "trace_id": "2132f5 | -| `dws chat group create` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group members add` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group members add-bot` | `fail_business` | `0` | { "errorCode": "500025", "errorMsg": "robotCode不存在", "success": false, "trace_id": "2106d98117745950903798357e0b34" } | -| `dws chat group members remove` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group rename` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat message list` | `fail_exit` | `3` | { "error": { "category": "validation", "code": 3, "message": "--group and --user are mutually exclusive" } } | -| `dws chat message recall-by-bot` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws chat message send` | `fail_exit` | `5` | { "error": { "category": "internal", "code": 5, "message": "accepts 1 arg(s), received 0" } } | -| `dws chat message send-by-bot` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws contact user search-mobile` | `fail_business` | `0` | { "arguments": [], "errorCode": "11001", "errorMsg": "手机格式不正确,请重新输入", "success": false, "trace_id": "2106d98117745950982347064e0ab0" } | -| `dws ding message recall` | `fail_business` | `0` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "0bab027317745950995614026e0761" } | -| `dws ding message send` | `fail_business` | `0` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "2106d98117745951002636917e0b13" } | -| `dws report create` | `fail_exit` | `3` | { "error": { "category": "validation", "code": 3, "message": "json_parse: invalid JSON: invalid character 'ç' looking for beginning of value" } } | -| `dws report list` | `fail_business` | `0` | { "errcode": 40035, "errorMsg": "不合法的参数", "result": { "report_list": null, "size": 0 }, "success": false, "trace_id": "213ee25c17745951014526150e0af0" } | -| `dws report sent` | `fail_business` | `0` | { "code": "ERROR", "error": "操作失败", "message": "操作失败。发生错误,建议稍后重试", "retryable": true, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:null, 预期值:true,所有值:{\"stackTr | -| `dws report stats` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws report template detail` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `dws todo task create` | `fail_business` | `0` | { "arguments": [], "errorCode": "999", "errorMsg": "system error: java.lang.NullPointerException", "success": false, "trace_id": "213ee25c17745951058325426e0acd" } | -| `dws todo task get` | `fail_business` | `0` | { "arguments": [], "errorCode": "500", "errorMsg": "NewTodoService#getTodoDetail taskId is null", "result": {}, "success": false, "trace_id": "0bab027317745951078651445e07c5" } | -| `dws completion` | `fail_exit` | `5` | { "error": { "category": "internal", "code": 5, "message": "accepts 1 arg(s), received 0" } } | - -## 全量执行明细 - -| 命令 | 语义结果 | 退出码 | 自动补参个数 | -|---|---|---:|---:| -| `dws aitable attachment upload` | `fail_business` | `0` | `2` | -| `dws aitable base create` | `pass` | `0` | `2` | -| `dws aitable base delete` | `pass` | `0` | `1` | -| `dws aitable base get` | `fail_business` | `0` | `1` | -| `dws aitable base list` | `pass` | `0` | `0` | -| `dws aitable base search` | `pass` | `0` | `1` | -| `dws aitable base update` | `fail_business` | `0` | `3` | -| `dws aitable field create` | `fail_business` | `0` | `2` | -| `dws aitable field delete` | `fail_business` | `0` | `3` | -| `dws aitable field get` | `fail_business` | `0` | `3` | -| `dws aitable field update` | `fail_business` | `0` | `4` | -| `dws aitable record create` | `fail_business` | `0` | `2` | -| `dws aitable record delete` | `fail_business` | `0` | `3` | -| `dws aitable record query` | `fail_business` | `0` | `5` | -| `dws aitable record update` | `fail_business` | `0` | `2` | -| `dws aitable table create` | `fail_business` | `0` | `2` | -| `dws aitable table delete` | `fail_business` | `0` | `2` | -| `dws aitable table get` | `fail_business` | `0` | `2` | -| `dws aitable table update` | `fail_business` | `0` | `3` | -| `dws aitable template search` | `pass` | `0` | `1` | -| `dws attendance record get` | `fail_business` | `0` | `2` | -| `dws attendance rules` | `pass` | `0` | `1` | -| `dws attendance shift list` | `pass` | `0` | `3` | -| `dws attendance summary` | `fail_business` | `0` | `2` | -| `dws calendar busy search` | `pass` | `0` | `3` | -| `dws calendar event create` | `fail_business` | `0` | `4` | -| `dws calendar event delete` | `pass` | `0` | `1` | -| `dws calendar event get` | `pass` | `0` | `1` | -| `dws calendar event list` | `pass` | `0` | `2` | -| `dws calendar event list-mine` | `fail_business` | `0` | `2` | -| `dws calendar event update` | `fail_business` | `0` | `4` | -| `dws calendar participant add` | `fail_business` | `0` | `1` | -| `dws calendar participant delete` | `fail_business` | `0` | `1` | -| `dws calendar participant list` | `fail_business` | `0` | `0` | -| `dws calendar room add` | `fail_business` | `0` | `0` | -| `dws calendar room delete` | `fail_business` | `0` | `0` | -| `dws calendar room list-groups` | `pass` | `0` | `0` | -| `dws calendar room search` | `fail_business` | `0` | `3` | -| `dws chat bot search` | `pass` | `0` | `3` | -| `dws chat group create` | `fail_business` | `0` | `2` | -| `dws chat group members add` | `fail_business` | `0` | `2` | -| `dws chat group members add-bot` | `fail_business` | `0` | `2` | -| `dws chat group members remove` | `fail_business` | `0` | `2` | -| `dws chat group rename` | `fail_business` | `0` | `2` | -| `dws chat message list` | `fail_exit` | `3` | `4` | -| `dws chat message recall-by-bot` | `fail_business` | `0` | `0` | -| `dws chat message send` | `fail_exit` | `5` | `3` | -| `dws chat message send-by-bot` | `fail_business` | `0` | `2` | -| `dws chat message send-by-webhook` | `pass` | `0` | `4` | -| `dws chat search` | `pass` | `0` | `1` | -| `dws contact dept list-children` | `pass` | `0` | `1` | -| `dws contact dept list-members` | `pass` | `0` | `1` | -| `dws contact dept search` | `pass` | `0` | `1` | -| `dws contact user get` | `pass` | `0` | `1` | -| `dws contact user get-self` | `pass` | `0` | `0` | -| `dws contact user search` | `pass` | `0` | `1` | -| `dws contact user search-mobile` | `fail_business` | `0` | `0` | -| `dws devdoc article search` | `pass` | `0` | `1` | -| `dws ding message recall` | `fail_business` | `0` | `1` | -| `dws ding message send` | `fail_business` | `0` | `2` | -| `dws report create` | `fail_exit` | `3` | `3` | -| `dws report detail` | `pass` | `0` | `1` | -| `dws report list` | `fail_business` | `0` | `2` | -| `dws report sent` | `fail_business` | `0` | `3` | -| `dws report stats` | `fail_business` | `0` | `1` | -| `dws report template detail` | `fail_business` | `0` | `1` | -| `dws report template list` | `pass` | `0` | `0` | -| `dws todo task create` | `fail_business` | `0` | `1` | -| `dws todo task delete` | `pass` | `0` | `1` | -| `dws todo task done` | `pass` | `0` | `1` | -| `dws todo task get` | `fail_business` | `0` | `1` | -| `dws todo task list` | `pass` | `0` | `1` | -| `dws todo task update` | `pass` | `0` | `2` | -| `dws workbench app get` | `pass` | `0` | `1` | -| `dws workbench app list` | `pass` | `0` | `0` | -| `dws auth login` | `pass` | `0` | `3` | -| `dws auth logout` | `pass` | `0` | `0` | -| `dws auth reset` | `pass` | `0` | `0` | -| `dws auth status` | `pass` | `0` | `0` | -| `dws cache refresh` | `pass` | `0` | `0` | -| `dws cache status` | `pass` | `0` | `0` | -| `dws completion` | `fail_exit` | `5` | `0` | -| `dws version` | `pass` | `0` | `0` | diff --git a/test/reports/dynamic-real-functional-v3-20260327-151011.md b/test/reports/dynamic-real-functional-v3-20260327-151011.md deleted file mode 100644 index 36b66f25..00000000 --- a/test/reports/dynamic-real-functional-v3-20260327-151011.md +++ /dev/null @@ -1,108 +0,0 @@ -# CLI 动态发现真实功能测试报告(第三轮定向强化) - -| 项目 | 值 | -|---|---| -| 时间 | 2026-03-27 15:11:22 | -| 登录步骤退出码 | `0` | -| 动态服务数 | `10` | -| 命令节点(`--help`) | `118` | -| `--help` 失败 | `0` | -| 叶子命令执行数 | `83` | -| 语义成功(pass) | `8` | -| 退出码失败 | `75` | -| 业务失败 | `0` | - -## 本轮增强点 - -- 补齐位置参数:`completion zsh`、`chat message send `。 -- `calendar` 子命令优先注入 `--event`,并尝试注入真实 `--rooms`。 -- `report create --contents` 改为 JSON 字符串。 -- `todo task create -> task-id` 回填 `todo task get`。 - -## 关键上下文 - -- `base-id`: `PwkYGxZV3L9AdX7YSvpndwYeJAgozOKL` -- `table-id`: `A1Pl1DO` -- `event-id`: `TTJHTTlLUG9valZvSE5HQkQ5aGVOZz09` -- `room-id`: `(未获取)` -- `task-id`: `(未获取)` - -## 失败明细 - -| 命令 | 分类 | 退出码 | 摘要 | -|---|---|---:|---| -| `dws aitable attachment upload` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable base create` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable base delete` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable base get` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable base list` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable base search` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable base update` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable field create` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable field delete` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable field get` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable field update` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable record create` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable record delete` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable record query` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable record update` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable table create` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable table delete` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable table get` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable table update` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws aitable template search` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws attendance record get` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws attendance rules` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws attendance shift list` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws attendance summary` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws calendar busy search` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws calendar event create` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws calendar event delete` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws calendar event get` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws calendar event list` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws calendar event list-mine` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws calendar event update` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws calendar participant add` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws calendar participant delete` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws calendar participant list` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws calendar room add` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws calendar room delete` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws calendar room list-groups` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws calendar room search` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws chat bot search` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws chat group create` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws chat group members add` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws chat group members add-bot` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws chat group members remove` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws chat group rename` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws chat message list` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws chat message recall-by-bot` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws chat message send` | `fail_exit` | `3` | { "error": { "category": "validation", "code": 3, "message": "--group and --user are mutually exclusive" } } | -| `dws chat message send-by-bot` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws chat message send-by-webhook` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws chat search` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws contact dept list-children` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws contact dept list-members` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws contact dept search` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws contact user get` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws contact user get-self` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws contact user search` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws contact user search-mobile` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws devdoc article search` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws ding message recall` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws ding message send` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws report create` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws report detail` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws report list` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws report sent` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws report stats` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws report template detail` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws report template list` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws todo task create` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws todo task delete` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws todo task done` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws todo task get` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws todo task list` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws todo task update` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws workbench app get` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `dws workbench app list` | `fail_exit` | `1` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | diff --git a/test/reports/dynamic-real-functional-v3-20260327-151256.md b/test/reports/dynamic-real-functional-v3-20260327-151256.md deleted file mode 100644 index adda1172..00000000 --- a/test/reports/dynamic-real-functional-v3-20260327-151256.md +++ /dev/null @@ -1,76 +0,0 @@ -# CLI 动态发现真实功能测试报告(第三轮定向强化) - -| 项目 | 值 | -|---|---| -| 时间 | 2026-03-27 15:14:03 | -| 动态服务数 | `10` | -| 命令节点(`--help`) | `118` | -| `--help` 失败 | `0` | -| 叶子命令执行数 | `83` | -| 语义成功(pass) | `36` | -| 退出码失败 | `1` | -| 业务失败 | `46` | - -## 本轮增强点 - -- 补齐位置参数(completion/chat message send)。 -- 增强 event/base/table 依赖 ID 回填。 -- report contents 统一 JSON 串。 - -## 关键上下文 - -- `base-id`: `(未获取)` -- `table-id`: `(未获取)` -- `event-id`: `(未获取)` - -## 失败明细 - -| 命令 | 分类 | 退出码 | 摘要 | -|---|---|---:|---| -| `dws aitable attachment upload` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PREPARE_ATTACHMENT_UPLOAD_REQUEST", "message": "fileName must include an extension", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": | -| `dws aitable base delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "52600003", "message": "Data not found", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to delete base test001. | -| `dws aitable base get` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable base update` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable field create` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PARAMS", "message": "fields are required", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to create fi | -| `dws aitable field delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to get current fi | -| `dws aitable field get` | `fail_business` | `0` | { "data": {}, "error": { "code": "GET_FIELDS_ERROR", "message": "Failed to load field schema from sheet service", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "s | -| `dws aitable field update` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to get current fi | -| `dws aitable record create` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_RECORDS", "message": "records must contain at least one record", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary" | -| `dws aitable record delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to delete records | -| `dws aitable record query` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "failed to resolve docId from baseId", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary": "Fa | -| `dws aitable record update` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_RECORDS", "message": "records must contain at least one record", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary" | -| `dws aitable table create` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to create table ' | -| `dws aitable table delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable table get` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable table update` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to update table t | -| `dws attendance record get` | `fail_business` | `0` | { "code": "ERROR", "error": "操作失败", "message": "操作失败。发生错误,建议稍后重试", "retryable": true, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预期值:true,所有值:{\"code\" | -| `dws attendance summary` | `fail_business` | `0` | { "code": "C0002", "message": "统计类型错误", "result": {}, "success": false, "trace_id": "0b5deb3217745956001386733e0c8d" } | -| `dws calendar event create` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Invalid start dateTime format.", "result": { "attendees": null, "reminders": null }, "success": false, "trace_i | -| `dws calendar event delete` | `fail_business` | `0` | { "arguments": [], "errorCode": "300014", "errorMsg": "Event not exist", "result": {}, "success": false, "trace_id": "0b5deb3217745956024626876e0c8d" } | -| `dws calendar event get` | `fail_business` | `0` | { "arguments": [], "result": { "attendees": null, "categories": null, "reminders": null }, "success": false, "trace_id": "0b5deb3217745956032378417e0be6" } | -| `dws calendar event list-mine` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws calendar event update` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Invalid start dateTime format.", "result": {}, "success": false, "trace_id": "0bb7c36217745956048842137e04c8" } | -| `dws calendar participant add` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "success": false, "trace_id": "0bb7c36217745956055183039e04a5" } | -| `dws calendar participant delete` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "0bb7c36217745956062986584e04a6" } | -| `dws calendar participant list` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": { "attendees": null }, "success": false, "trace_id": "0b5deb3217745956068548731 | -| `dws calendar room add` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "0bb7c36217745956076466697e04a6" } | -| `dws calendar room delete` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "2127d89817745956082684802e0aa2" } | -| `dws calendar room search` | `fail_business` | `0` | { "arguments": [], "errorCode": "458019", "errorMsg": "查询范围内的会议室数量,超过上限100,请选择更小范围的分组进行查询。", "result": { "result": [ { "labels": null } ] }, "success": false, "trace_id": "0b5deb | -| `dws chat group create` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group members add` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group members add-bot` | `fail_business` | `0` | { "errorCode": "500025", "errorMsg": "robotCode不存在", "success": false, "trace_id": "0bb7c36217745956120232510e058c" } | -| `dws chat group members remove` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group rename` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat message list` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat message recall-by-bot` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws chat message send` | `fail_exit` | `3` | { "error": { "category": "validation", "code": 3, "message": "--group and --user are mutually exclusive" } } | -| `dws chat message send-by-bot` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws ding message recall` | `fail_business` | `0` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "0b5deb3217745956239415766e0c28" } | -| `dws ding message send` | `fail_business` | `0` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "2104a64c17745956244614506e0a3b" } | -| `dws report create` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `dws report list` | `fail_business` | `0` | { "errcode": 40035, "errorMsg": "不合法的参数", "result": { "report_list": null, "size": 0 }, "success": false, "trace_id": "0b5deb3217745956268642260e0be6" } | -| `dws report sent` | `fail_business` | `0` | { "code": "ERROR", "error": "操作失败", "message": "操作失败。发生错误,建议稍后重试", "retryable": true, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:null, 预期值:true,所有值:{\"stackTr | -| `dws report stats` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws report template detail` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `dws todo task create` | `fail_business` | `0` | { "arguments": [], "errorCode": "500", "errorMsg": "TodoServiceImpl#createTask: Unrecognized priority type: 1", "success": false, "trace_id": "0bb7c36217745956307524175e04c8" } | -| `dws todo task get` | `fail_business` | `0` | { "arguments": [], "errorCode": "500", "errorMsg": "NewTodoService#getTodoDetail taskId is null", "result": {}, "success": false, "trace_id": "2127d89817745956327921364e09fc" } | diff --git a/test/reports/dynamic-real-functional-v3-latest.md b/test/reports/dynamic-real-functional-v3-latest.md deleted file mode 100644 index adda1172..00000000 --- a/test/reports/dynamic-real-functional-v3-latest.md +++ /dev/null @@ -1,76 +0,0 @@ -# CLI 动态发现真实功能测试报告(第三轮定向强化) - -| 项目 | 值 | -|---|---| -| 时间 | 2026-03-27 15:14:03 | -| 动态服务数 | `10` | -| 命令节点(`--help`) | `118` | -| `--help` 失败 | `0` | -| 叶子命令执行数 | `83` | -| 语义成功(pass) | `36` | -| 退出码失败 | `1` | -| 业务失败 | `46` | - -## 本轮增强点 - -- 补齐位置参数(completion/chat message send)。 -- 增强 event/base/table 依赖 ID 回填。 -- report contents 统一 JSON 串。 - -## 关键上下文 - -- `base-id`: `(未获取)` -- `table-id`: `(未获取)` -- `event-id`: `(未获取)` - -## 失败明细 - -| 命令 | 分类 | 退出码 | 摘要 | -|---|---|---:|---| -| `dws aitable attachment upload` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PREPARE_ATTACHMENT_UPLOAD_REQUEST", "message": "fileName must include an extension", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": | -| `dws aitable base delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "52600003", "message": "Data not found", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to delete base test001. | -| `dws aitable base get` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable base update` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable field create` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_PARAMS", "message": "fields are required", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to create fi | -| `dws aitable field delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to get current fi | -| `dws aitable field get` | `fail_business` | `0` | { "data": {}, "error": { "code": "GET_FIELDS_ERROR", "message": "Failed to load field schema from sheet service", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "s | -| `dws aitable field update` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to get current fi | -| `dws aitable record create` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_RECORDS", "message": "records must contain at least one record", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary" | -| `dws aitable record delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to delete records | -| `dws aitable record query` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_BASE_ID", "message": "failed to resolve docId from baseId", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary": "Fa | -| `dws aitable record update` | `fail_business` | `0` | { "data": {}, "error": { "code": "INVALID_RECORDS", "message": "records must contain at least one record", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "status": "error", "summary" | -| `dws aitable table create` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to create table ' | -| `dws aitable table delete` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable table get` | `fail_business` | `0` | { "data": {}, "error": { "code": "BASE_NOT_FOUND", "message": "Specified base does not exist, has been deleted, or is inaccessible", "retryable": false, "type": "INPUT_ERROR" }, "meta": {}, "sta | -| `dws aitable table update` | `fail_business` | `0` | { "data": {}, "error": { "code": "404", "message": "getDentryDTO returns null", "retryable": true, "type": "SYSTEM_ERROR" }, "meta": {}, "status": "error", "summary": "Failed to update table t | -| `dws attendance record get` | `fail_business` | `0` | { "code": "ERROR", "error": "操作失败", "message": "操作失败。发生错误,建议稍后重试", "retryable": true, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预期值:true,所有值:{\"code\" | -| `dws attendance summary` | `fail_business` | `0` | { "code": "C0002", "message": "统计类型错误", "result": {}, "success": false, "trace_id": "0b5deb3217745956001386733e0c8d" } | -| `dws calendar event create` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Invalid start dateTime format.", "result": { "attendees": null, "reminders": null }, "success": false, "trace_i | -| `dws calendar event delete` | `fail_business` | `0` | { "arguments": [], "errorCode": "300014", "errorMsg": "Event not exist", "result": {}, "success": false, "trace_id": "0b5deb3217745956024626876e0c8d" } | -| `dws calendar event get` | `fail_business` | `0` | { "arguments": [], "result": { "attendees": null, "categories": null, "reminders": null }, "success": false, "trace_id": "0b5deb3217745956032378417e0be6" } | -| `dws calendar event list-mine` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws calendar event update` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Invalid start dateTime format.", "result": {}, "success": false, "trace_id": "0bb7c36217745956048842137e04c8" } | -| `dws calendar participant add` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "success": false, "trace_id": "0bb7c36217745956055183039e04a5" } | -| `dws calendar participant delete` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "0bb7c36217745956062986584e04a6" } | -| `dws calendar participant list` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": { "attendees": null }, "success": false, "trace_id": "0b5deb3217745956068548731 | -| `dws calendar room add` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "0bb7c36217745956076466697e04a6" } | -| `dws calendar room delete` | `fail_business` | `0` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: eventId cannot be blank", "result": {}, "success": false, "trace_id": "2127d89817745956082684802e0aa2" } | -| `dws calendar room search` | `fail_business` | `0` | { "arguments": [], "errorCode": "458019", "errorMsg": "查询范围内的会议室数量,超过上限100,请选择更小范围的分组进行查询。", "result": { "result": [ { "labels": null } ] }, "success": false, "trace_id": "0b5deb | -| `dws chat group create` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group members add` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group members add-bot` | `fail_business` | `0` | { "errorCode": "500025", "errorMsg": "robotCode不存在", "success": false, "trace_id": "0bb7c36217745956120232510e058c" } | -| `dws chat group members remove` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat group rename` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat message list` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `dws chat message recall-by-bot` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws chat message send` | `fail_exit` | `3` | { "error": { "category": "validation", "code": 3, "message": "--group and --user are mutually exclusive" } } | -| `dws chat message send-by-bot` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws ding message recall` | `fail_business` | `0` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "0b5deb3217745956239415766e0c28" } | -| `dws ding message send` | `fail_business` | `0` | { "dingOpenErrcode": 400100, "errorMsg": "robotCode is illegal", "result": {}, "success": false, "trace_id": "2104a64c17745956244614506e0a3b" } | -| `dws report create` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `dws report list` | `fail_business` | `0` | { "errcode": 40035, "errorMsg": "不合法的参数", "result": { "report_list": null, "size": 0 }, "success": false, "trace_id": "0b5deb3217745956268642260e0be6" } | -| `dws report sent` | `fail_business` | `0` | { "code": "ERROR", "error": "操作失败", "message": "操作失败。发生错误,建议稍后重试", "retryable": true, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:null, 预期值:true,所有值:{\"stackTr | -| `dws report stats` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。DingOpenResult.success当前 | -| `dws report template detail` | `fail_business` | `0` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `dws todo task create` | `fail_business` | `0` | { "arguments": [], "errorCode": "500", "errorMsg": "TodoServiceImpl#createTask: Unrecognized priority type: 1", "success": false, "trace_id": "0bb7c36217745956307524175e04c8" } | -| `dws todo task get` | `fail_business` | `0` | { "arguments": [], "errorCode": "500", "errorMsg": "NewTodoService#getTodoDetail taskId is null", "result": {}, "success": false, "trace_id": "2127d89817745956327921364e09fc" } | diff --git a/test/reports/dynamic-real-functional-v4-focus-20260327-151758.md b/test/reports/dynamic-real-functional-v4-focus-20260327-151758.md deleted file mode 100644 index 92af24b4..00000000 --- a/test/reports/dynamic-real-functional-v4-focus-20260327-151758.md +++ /dev/null @@ -1,44 +0,0 @@ -# CLI 第四轮专项报告(calendar + aitable) - -| 指标 | 值 | -|---|---| -| 执行时间 | 2026-03-27 15:18:15 | -| 命令总数 | `18` | -| pass | `13` | -| fail_exit | `0` | -| fail_business | `5` | - -## 依赖链上下文 - -- `event-id`: `NEhic05DdkczVXc0TDhUc3hUaDZtQT09` -- `base-id`: `wva2dxOW4kO6dpRacBYe6XA78bkz3BRL` -- `table-id`: `h6pp9yr` - -## 关键发现 - -- `calendar event create/update` 在 RFC3339 格式(含时区)下可成功。 -- `participant/room` 需严格使用 `--event` 参数(不是 `--id`)。 -- `aitable field.create` 对 `fields` JSON 字段名敏感(`fieldName` 必填)。 - -## 执行明细 - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `auth.login` | `0` | `pass` | [OK] Token 有效,无需重新登录 企业 ID: ding8196cd9a2b2405da24f2f5cc6abecb85 有效期: 30 天后 Token 将自动刷新,无需重复登录 | -| `calendar.event.create` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true | -| `calendar.event.get` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true | -| `calendar.participant.list` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true | -| `calendar.participant.add` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: user id is required", "success": false, "trace_id": "2127d89817745958829492933e09fc | -| `calendar.participant.delete` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: user id is required", "result": {}, "success": false, "trace_id": "2104a64c177459 | -| `calendar.room.add` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: roomId invalid", "result": {}, "success": false, "trace_id": "0bb7c36217745958843 | -| `calendar.room.delete` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: roomId invalid", "result": {}, "success": false, "trace_id": "0b5deb3217745958849 | -| `calendar.event.update` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStat | -| `calendar.event.delete` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | -| `calendar.busy.search` | `0` | `pass` | { "result": [ { "scheduleItems": [] } ], "success": true } | -| `aitable.base.create` | `0` | `pass` | { "data": { "baseId": "wva2dxOW4kO6dpRacBYe6XA78bkz3BRL", "baseName": "v4-base-20260327-151758" }, "error": {}, "meta": {}, "status": "success", "summary": "Cre | -| `aitable.base.get` | `0` | `pass` | { "data": { "baseId": "wva2dxOW4kO6dpRacBYe6XA78bkz3BRL", "baseName": "v4-base-20260327-151758", "dashboards": [], "tables": [] }, "error": {}, "meta": {}, | -| `aitable.table.create` | `0` | `pass` | { "data": { "baseId": "wva2dxOW4kO6dpRacBYe6XA78bkz3BRL", "tableId": "h6pp9yr", "tableName": "v4-table-20260327-151758" }, "error": {}, "meta": {}, "status": | -| `aitable.table.get` | `0` | `pass` | { "data": { "tables": [ { "fields": [ { "fieldId": "agH1bGR", "fieldName": "标题", "type": "primaryDoc" } | -| `aitable.field.create` | `0` | `pass` | { "data": { "failedCount": 0, "results": [ { "fieldId": "UpAI9fd", "fieldName": "自动化字段A", "success": true } ], "successCount": | -| `aitable.record.create` | `0` | `fail_business` | { "data": {}, "error": { "code": "INVALID_CELLS", "message": "records[0].cells must be an object mapping field ids or names to values", "retryable": false, "typ | -| `aitable.record.query` | `0` | `pass` | { "data": {}, "error": {}, "meta": {}, "status": "success", "summary": "Successfully queried 0 record(s) from table h6pp9yr in base wva2dxOW4kO6dpRacBYe6XA78bkz3BRL" } | diff --git a/test/reports/dynamic-real-functional-v4-focus-latest.md b/test/reports/dynamic-real-functional-v4-focus-latest.md deleted file mode 100644 index 92af24b4..00000000 --- a/test/reports/dynamic-real-functional-v4-focus-latest.md +++ /dev/null @@ -1,44 +0,0 @@ -# CLI 第四轮专项报告(calendar + aitable) - -| 指标 | 值 | -|---|---| -| 执行时间 | 2026-03-27 15:18:15 | -| 命令总数 | `18` | -| pass | `13` | -| fail_exit | `0` | -| fail_business | `5` | - -## 依赖链上下文 - -- `event-id`: `NEhic05DdkczVXc0TDhUc3hUaDZtQT09` -- `base-id`: `wva2dxOW4kO6dpRacBYe6XA78bkz3BRL` -- `table-id`: `h6pp9yr` - -## 关键发现 - -- `calendar event create/update` 在 RFC3339 格式(含时区)下可成功。 -- `participant/room` 需严格使用 `--event` 参数(不是 `--id`)。 -- `aitable field.create` 对 `fields` JSON 字段名敏感(`fieldName` 必填)。 - -## 执行明细 - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `auth.login` | `0` | `pass` | [OK] Token 有效,无需重新登录 企业 ID: ding8196cd9a2b2405da24f2f5cc6abecb85 有效期: 30 天后 Token 将自动刷新,无需重复登录 | -| `calendar.event.create` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true | -| `calendar.event.get` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true | -| `calendar.participant.list` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true | -| `calendar.participant.add` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: user id is required", "success": false, "trace_id": "2127d89817745958829492933e09fc | -| `calendar.participant.delete` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: user id is required", "result": {}, "success": false, "trace_id": "2104a64c177459 | -| `calendar.room.add` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: roomId invalid", "result": {}, "success": false, "trace_id": "0bb7c36217745958843 | -| `calendar.room.delete` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: roomId invalid", "result": {}, "success": false, "trace_id": "0b5deb3217745958849 | -| `calendar.event.update` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStat | -| `calendar.event.delete` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | -| `calendar.busy.search` | `0` | `pass` | { "result": [ { "scheduleItems": [] } ], "success": true } | -| `aitable.base.create` | `0` | `pass` | { "data": { "baseId": "wva2dxOW4kO6dpRacBYe6XA78bkz3BRL", "baseName": "v4-base-20260327-151758" }, "error": {}, "meta": {}, "status": "success", "summary": "Cre | -| `aitable.base.get` | `0` | `pass` | { "data": { "baseId": "wva2dxOW4kO6dpRacBYe6XA78bkz3BRL", "baseName": "v4-base-20260327-151758", "dashboards": [], "tables": [] }, "error": {}, "meta": {}, | -| `aitable.table.create` | `0` | `pass` | { "data": { "baseId": "wva2dxOW4kO6dpRacBYe6XA78bkz3BRL", "tableId": "h6pp9yr", "tableName": "v4-table-20260327-151758" }, "error": {}, "meta": {}, "status": | -| `aitable.table.get` | `0` | `pass` | { "data": { "tables": [ { "fields": [ { "fieldId": "agH1bGR", "fieldName": "标题", "type": "primaryDoc" } | -| `aitable.field.create` | `0` | `pass` | { "data": { "failedCount": 0, "results": [ { "fieldId": "UpAI9fd", "fieldName": "自动化字段A", "success": true } ], "successCount": | -| `aitable.record.create` | `0` | `fail_business` | { "data": {}, "error": { "code": "INVALID_CELLS", "message": "records[0].cells must be an object mapping field ids or names to values", "retryable": false, "typ | -| `aitable.record.query` | `0` | `pass` | { "data": {}, "error": {}, "meta": {}, "status": "success", "summary": "Successfully queried 0 record(s) from table h6pp9yr in base wva2dxOW4kO6dpRacBYe6XA78bkz3BRL" } | diff --git a/test/reports/dynamic-real-functional-v5-clean5-20260327-152000.md b/test/reports/dynamic-real-functional-v5-clean5-20260327-152000.md deleted file mode 100644 index 7b69f1b4..00000000 --- a/test/reports/dynamic-real-functional-v5-clean5-20260327-152000.md +++ /dev/null @@ -1,33 +0,0 @@ -# CLI 第五轮清障报告(5条失败定向) - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:20:17 | -| 命令数 | `17` | -| pass | `8` | -| fail_exit | `0` | -| fail_business | `9` | - -- `event-id`: `UnlJR0l0YXZNMTVqSU9JNTljVkEzQT09` -- `base-id`: `7dx2rn0Jbakrq9O5t6NY541PVMGjLRb3` -- `table-id`: `i7zsObk` - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `calendar.event.create` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true } ], "created": 1774596001303 | -| `calendar.participant.add(plain)` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "success": true } | -| `calendar.participant.delete(plain)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "0bb7c36217745960023866596e04c8" } | -| `calendar.participant.add(csv)` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "success": true } | -| `calendar.participant.delete(csv)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "2127d89817745960035161714e0aa2" } | -| `calendar.participant.add(jsonarr)` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "success": true } | -| `calendar.participant.delete(jsonarr)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "2104a64c17745960050053458e0acc" } | -| `calendar.room.add(1001)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: roomId invalid", "result": {}, "success": false, "trace_id": "0bb7c36217745960058146858e054a" } | -| `calendar.room.delete(1001)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: roomId invalid", "result": {}, "success": false, "trace_id": "2104a64c17745960064643041e0a69" } | -| `calendar.room.add(1)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: roomId invalid", "result": {}, "success": false, "trace_id": "0bb7c36217745960071086603e04a5" } | -| `calendar.room.delete(1)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: roomId invalid", "result": {}, "success": false, "trace_id": "2104a64c17745960080577877e0a8b" } | -| `calendar.room.add(A1001)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: roomId invalid", "result": {}, "success": false, "trace_id": "2127d89817745960087162927e09fc" } | -| `calendar.room.delete(A1001)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: roomId invalid", "result": {}, "success": false, "trace_id": "0b5deb3217745960096788390e0c07" } | -| `aitable.base.create` | `0` | `pass` | { "data": { "baseId": "7dx2rn0Jbakrq9O5t6NY541PVMGjLRb3", "baseName": "v5-base-20260327-152000" }, "error": {}, "meta": {}, "status": "success", "summary": "Created base 'v5-base-20260327-152000' (id= | -| `aitable.table.create` | `0` | `pass` | { "data": { "baseId": "7dx2rn0Jbakrq9O5t6NY541PVMGjLRb3", "tableId": "i7zsObk", "tableName": "v5-table-20260327-152000" }, "error": {}, "meta": {}, "status": "success", "summary": "create_table su | -| `aitable.field.create` | `0` | `pass` | { "data": { "failedCount": 0, "results": [ { "fieldId": "ZfncUO3", "fieldName": "自动化字段B", "success": true } ], "successCount": 1 }, "error": {}, "meta": {}, " | -| `aitable.record.create(cells)` | `0` | `pass` | { "data": { "newRecordIds": [ "Ji0akBZIwI" ] }, "error": {}, "meta": {}, "status": "success", "summary": "Successfully created 1 record(s) in table i7zsObk of base 7dx2rn0Jbakrq9O5t6NY541PVMGjLR | diff --git a/test/reports/dynamic-real-functional-v5-clean5-latest.md b/test/reports/dynamic-real-functional-v5-clean5-latest.md deleted file mode 100644 index 7b69f1b4..00000000 --- a/test/reports/dynamic-real-functional-v5-clean5-latest.md +++ /dev/null @@ -1,33 +0,0 @@ -# CLI 第五轮清障报告(5条失败定向) - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:20:17 | -| 命令数 | `17` | -| pass | `8` | -| fail_exit | `0` | -| fail_business | `9` | - -- `event-id`: `UnlJR0l0YXZNMTVqSU9JNTljVkEzQT09` -- `base-id`: `7dx2rn0Jbakrq9O5t6NY541PVMGjLRb3` -- `table-id`: `i7zsObk` - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `calendar.event.create` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true } ], "created": 1774596001303 | -| `calendar.participant.add(plain)` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "success": true } | -| `calendar.participant.delete(plain)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "0bb7c36217745960023866596e04c8" } | -| `calendar.participant.add(csv)` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "success": true } | -| `calendar.participant.delete(csv)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "2127d89817745960035161714e0aa2" } | -| `calendar.participant.add(jsonarr)` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "success": true } | -| `calendar.participant.delete(jsonarr)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "2104a64c17745960050053458e0acc" } | -| `calendar.room.add(1001)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: roomId invalid", "result": {}, "success": false, "trace_id": "0bb7c36217745960058146858e054a" } | -| `calendar.room.delete(1001)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: roomId invalid", "result": {}, "success": false, "trace_id": "2104a64c17745960064643041e0a69" } | -| `calendar.room.add(1)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: roomId invalid", "result": {}, "success": false, "trace_id": "0bb7c36217745960071086603e04a5" } | -| `calendar.room.delete(1)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: roomId invalid", "result": {}, "success": false, "trace_id": "2104a64c17745960080577877e0a8b" } | -| `calendar.room.add(A1001)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: roomId invalid", "result": {}, "success": false, "trace_id": "2127d89817745960087162927e09fc" } | -| `calendar.room.delete(A1001)` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: roomId invalid", "result": {}, "success": false, "trace_id": "0b5deb3217745960096788390e0c07" } | -| `aitable.base.create` | `0` | `pass` | { "data": { "baseId": "7dx2rn0Jbakrq9O5t6NY541PVMGjLRb3", "baseName": "v5-base-20260327-152000" }, "error": {}, "meta": {}, "status": "success", "summary": "Created base 'v5-base-20260327-152000' (id= | -| `aitable.table.create` | `0` | `pass` | { "data": { "baseId": "7dx2rn0Jbakrq9O5t6NY541PVMGjLRb3", "tableId": "i7zsObk", "tableName": "v5-table-20260327-152000" }, "error": {}, "meta": {}, "status": "success", "summary": "create_table su | -| `aitable.field.create` | `0` | `pass` | { "data": { "failedCount": 0, "results": [ { "fieldId": "ZfncUO3", "fieldName": "自动化字段B", "success": true } ], "successCount": 1 }, "error": {}, "meta": {}, " | -| `aitable.record.create(cells)` | `0` | `pass` | { "data": { "newRecordIds": [ "Ji0akBZIwI" ] }, "error": {}, "meta": {}, "status": "success", "summary": "Successfully created 1 record(s) in table i7zsObk of base 7dx2rn0Jbakrq9O5t6NY541PVMGjLR | diff --git a/test/reports/dynamic-real-functional-v6-failed-set-20260327-152517.md b/test/reports/dynamic-real-functional-v6-failed-set-20260327-152517.md deleted file mode 100644 index f10b1ef1..00000000 --- a/test/reports/dynamic-real-functional-v6-failed-set-20260327-152517.md +++ /dev/null @@ -1,53 +0,0 @@ -# CLI 第六轮失败集修复回归报告 - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:25:41 | -| 样本数 | `33` | -| pass | `23` | -| fail_exit | `0` | -| fail_business | `10` | - -- `uid`: `061978` -- `event-id`: `d1RYWVpPZ1MwSVIxWnRRUnNFbWtJUT09` -- `room-id`: `bdff146f0172e49511c91904cf69b186003e6834fdd7fee7` -- `base-id`: `Exel2BLV5gOAdXr1uDpB0mrB8gk9rpMq` -- `table-id`: `i6sTftc` -- `report-id`: `(无)` -- `task-id`: `(无)` - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `auth.status` | `0` | `pass` | 状态: 已登录 ✅ 有效期: 2026-03-27T09:17:05Z | -| `contact.user.get-self` | `0` | `pass` | { "result": [ { "isAdmin": true, "orgEmployeeModel": { "corpId": "ding8196cd9a2b2405da24f2f5cc6abecb85", "depts": [ { "deptId": 1037045267, "deptName": | -| `calendar.event.create(seed)` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true } ], "created": 1774596318405 | -| `calendar.room.search(seed-96)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "capacity": null, "fullGroupPath": "阿里中心-杭州未科", "labels": [], "roomId": "bdff146f0172e49511c91904cf69b186003e6834fdd7fee7", | -| `aitable.base.create(seed)` | `0` | `pass` | { "data": { "baseId": "Exel2BLV5gOAdXr1uDpB0mrB8gk9rpMq", "baseName": "v6-base-20260327-152517" }, "error": {}, "meta": {}, "status": "success", "summary": "Created base 'v6-base-20260327-152517' (id= | -| `aitable.table.create(seed)` | `0` | `pass` | { "data": { "baseId": "Exel2BLV5gOAdXr1uDpB0mrB8gk9rpMq", "tableId": "i6sTftc", "tableName": "v6-table-20260327-152517" }, "error": {}, "meta": {}, "status": "success", "summary": "create_table su | -| `aitable.field.create(seed)` | `0` | `pass` | { "data": { "failedCount": 0, "results": [ { "fieldId": "zKUcAsV", "fieldName": "自动化字段V6", "success": true } ], "successCount": 1 }, "error": {}, "meta": {}, | -| `report.template.list(seed)` | `0` | `pass` | { "items": [ { "last_modified_time": 1697702695000, "report_template_id": "18b46f75236c558cc63be07419f8d65f", "report_template_logo_url": "https://landray.dingtalkapps.com/alid/app/report/images/i | -| `attendance.record.get` | `0` | `pass` | { "code": "0", "message": "success", "result": { "approveList": [], "group": { "name": "创新项目-QM", "type": "FIXED" }, "isHasSchedule": false, "isRest": false, "isUnSigned": false, | -| `attendance.summary` | `0` | `fail_business` | { "code": "C0002", "message": "统计类型错误", "result": {}, "success": false, "trace_id": "2132f5ca17745963243085228e0a19" } | -| `calendar.event.get` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true } ], "categories": [], "c | -| `calendar.event.update` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true | -| `calendar.event.delete` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | -| `calendar.participant.add` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "success": true } | -| `calendar.participant.delete` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "0bab027317745963274351337e0761" } | -| `calendar.participant.list` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true } ] }, "success": true } | -| `calendar.room.add` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Cannot patch event that is not in 'confirmed' status.", "result": {}, "success": false, "trace_id": "2132f5ca177459632895 | -| `calendar.room.delete` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | -| `aitable.base.get` | `0` | `pass` | { "data": { "baseId": "Exel2BLV5gOAdXr1uDpB0mrB8gk9rpMq", "baseName": "v6-base-20260327-152517", "dashboards": [], "tables": [ { "tableId": "i6sTftc", "tableName": "v6-table-202603 | -| `aitable.base.update` | `0` | `pass` | { "data": { "baseId": "Exel2BLV5gOAdXr1uDpB0mrB8gk9rpMq", "baseName": "v6-base-upd-20260327-152517", "updatedAt": "2026-03-27T15:25:31+08:00" }, "error": {}, "meta": {}, "status": "success", "summ | -| `aitable.table.get` | `0` | `pass` | { "data": { "tables": [ { "fields": [ { "fieldId": "UmGsxF5", "fieldName": "标题", "type": "primaryDoc" }, { "fieldId": "zKU | -| `aitable.table.update` | `0` | `pass` | { "data": { "baseId": "Exel2BLV5gOAdXr1uDpB0mrB8gk9rpMq", "tableId": "i6sTftc", "tableName": "v6-table-upd-20260327-152517", "updatedAt": "2026-03-27T15:25:33+08:00" }, "error": {}, "meta": {}, | -| `aitable.record.create` | `0` | `pass` | { "data": { "newRecordIds": [ "ZkEj7TNe5G" ] }, "error": {}, "meta": {}, "status": "success", "summary": "Successfully created 1 record(s) in table i6sTftc of base Exel2BLV5gOAdXr1uDpB0mrB8gk9rp | -| `aitable.record.query` | `0` | `pass` | { "data": { "nextCursor": "ZkEj7TNe5G", "records": [ { "cells": { "zKUcAsV": "ok" }, "recordId": "ZkEj7TNe5G" } ] }, "error": {}, "meta": {}, "status": | -| `chat.group.create` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `chat.message.send` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `chat.message.list` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `report.template.detail` | `0` | `pass` | { "errcode": 0, "errorMsg": "ok", "result": { "allowAddReceivers": 0, "lastModifiedTime": 1650879711000, "report_template_fields": [ { "field_name": "今日完成工作", "field_sort": 0, | -| `report.create` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `report.list` | `0` | `pass` | { "errcode": 0, "errorMsg": "ok", "result": { "hasMore": false, "nextCursor": 0, "report_list": [], "size": 10 }, "success": true } | -| `todo.task.create` | `0` | `fail_business` | { "arguments": [], "errorCode": "500", "errorMsg": "TodoServiceImpl#createTask: Unrecognized priority type: 1", "success": false, "trace_id": "0bab027317745963398617211e07a4" } | -| `ding.message.send` | `0` | `fail_business` | { "dingOpenErrcode": 400009, "errorMsg": "robotCode is in not valid or not in the org", "result": {}, "success": false, "trace_id": "2132f5ca17745963404804743e0a7c" } | -| `ding.message.recall` | `0` | `fail_business` | { "dingOpenErrcode": 500100, "errorMsg": "system error", "result": {}, "success": false, "trace_id": "2106d98117745963413161346e0b34" } | diff --git a/test/reports/dynamic-real-functional-v6-failed-set-latest.md b/test/reports/dynamic-real-functional-v6-failed-set-latest.md deleted file mode 100644 index f10b1ef1..00000000 --- a/test/reports/dynamic-real-functional-v6-failed-set-latest.md +++ /dev/null @@ -1,53 +0,0 @@ -# CLI 第六轮失败集修复回归报告 - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:25:41 | -| 样本数 | `33` | -| pass | `23` | -| fail_exit | `0` | -| fail_business | `10` | - -- `uid`: `061978` -- `event-id`: `d1RYWVpPZ1MwSVIxWnRRUnNFbWtJUT09` -- `room-id`: `bdff146f0172e49511c91904cf69b186003e6834fdd7fee7` -- `base-id`: `Exel2BLV5gOAdXr1uDpB0mrB8gk9rpMq` -- `table-id`: `i6sTftc` -- `report-id`: `(无)` -- `task-id`: `(无)` - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `auth.status` | `0` | `pass` | 状态: 已登录 ✅ 有效期: 2026-03-27T09:17:05Z | -| `contact.user.get-self` | `0` | `pass` | { "result": [ { "isAdmin": true, "orgEmployeeModel": { "corpId": "ding8196cd9a2b2405da24f2f5cc6abecb85", "depts": [ { "deptId": 1037045267, "deptName": | -| `calendar.event.create(seed)` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true } ], "created": 1774596318405 | -| `calendar.room.search(seed-96)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "capacity": null, "fullGroupPath": "阿里中心-杭州未科", "labels": [], "roomId": "bdff146f0172e49511c91904cf69b186003e6834fdd7fee7", | -| `aitable.base.create(seed)` | `0` | `pass` | { "data": { "baseId": "Exel2BLV5gOAdXr1uDpB0mrB8gk9rpMq", "baseName": "v6-base-20260327-152517" }, "error": {}, "meta": {}, "status": "success", "summary": "Created base 'v6-base-20260327-152517' (id= | -| `aitable.table.create(seed)` | `0` | `pass` | { "data": { "baseId": "Exel2BLV5gOAdXr1uDpB0mrB8gk9rpMq", "tableId": "i6sTftc", "tableName": "v6-table-20260327-152517" }, "error": {}, "meta": {}, "status": "success", "summary": "create_table su | -| `aitable.field.create(seed)` | `0` | `pass` | { "data": { "failedCount": 0, "results": [ { "fieldId": "zKUcAsV", "fieldName": "自动化字段V6", "success": true } ], "successCount": 1 }, "error": {}, "meta": {}, | -| `report.template.list(seed)` | `0` | `pass` | { "items": [ { "last_modified_time": 1697702695000, "report_template_id": "18b46f75236c558cc63be07419f8d65f", "report_template_logo_url": "https://landray.dingtalkapps.com/alid/app/report/images/i | -| `attendance.record.get` | `0` | `pass` | { "code": "0", "message": "success", "result": { "approveList": [], "group": { "name": "创新项目-QM", "type": "FIXED" }, "isHasSchedule": false, "isRest": false, "isUnSigned": false, | -| `attendance.summary` | `0` | `fail_business` | { "code": "C0002", "message": "统计类型错误", "result": {}, "success": false, "trace_id": "2132f5ca17745963243085228e0a19" } | -| `calendar.event.get` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true } ], "categories": [], "c | -| `calendar.event.update` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true | -| `calendar.event.delete` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | -| `calendar.participant.add` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "success": true } | -| `calendar.participant.delete` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: can not remove organizer.", "result": {}, "success": false, "trace_id": "0bab027317745963274351337e0761" } | -| `calendar.participant.list` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true } ] }, "success": true } | -| `calendar.room.add` | `0` | `fail_business` | { "arguments": [], "errorCode": "300000", "errorMsg": "code: 300000, developerMessage: Cannot patch event that is not in 'confirmed' status.", "result": {}, "success": false, "trace_id": "2132f5ca177459632895 | -| `calendar.room.delete` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | -| `aitable.base.get` | `0` | `pass` | { "data": { "baseId": "Exel2BLV5gOAdXr1uDpB0mrB8gk9rpMq", "baseName": "v6-base-20260327-152517", "dashboards": [], "tables": [ { "tableId": "i6sTftc", "tableName": "v6-table-202603 | -| `aitable.base.update` | `0` | `pass` | { "data": { "baseId": "Exel2BLV5gOAdXr1uDpB0mrB8gk9rpMq", "baseName": "v6-base-upd-20260327-152517", "updatedAt": "2026-03-27T15:25:31+08:00" }, "error": {}, "meta": {}, "status": "success", "summ | -| `aitable.table.get` | `0` | `pass` | { "data": { "tables": [ { "fields": [ { "fieldId": "UmGsxF5", "fieldName": "标题", "type": "primaryDoc" }, { "fieldId": "zKU | -| `aitable.table.update` | `0` | `pass` | { "data": { "baseId": "Exel2BLV5gOAdXr1uDpB0mrB8gk9rpMq", "tableId": "i6sTftc", "tableName": "v6-table-upd-20260327-152517", "updatedAt": "2026-03-27T15:25:33+08:00" }, "error": {}, "meta": {}, | -| `aitable.record.create` | `0` | `pass` | { "data": { "newRecordIds": [ "ZkEj7TNe5G" ] }, "error": {}, "meta": {}, "status": "success", "summary": "Successfully created 1 record(s) in table i6sTftc of base Exel2BLV5gOAdXr1uDpB0mrB8gk9rp | -| `aitable.record.query` | `0` | `pass` | { "data": { "nextCursor": "ZkEj7TNe5G", "records": [ { "cells": { "zKUcAsV": "ok" }, "recordId": "ZkEj7TNe5G" } ] }, "error": {}, "meta": {}, "status": | -| `chat.group.create` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `chat.message.send` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `chat.message.list` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "Tool metadata API error: PARAM_ERROR - 未找到指定工具", "trace_id": | -| `report.template.detail` | `0` | `pass` | { "errcode": 0, "errorMsg": "ok", "result": { "allowAddReceivers": 0, "lastModifiedTime": 1650879711000, "report_template_fields": [ { "field_name": "今日完成工作", "field_sort": 0, | -| `report.create` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `report.list` | `0` | `pass` | { "errcode": 0, "errorMsg": "ok", "result": { "hasMore": false, "nextCursor": 0, "report_list": [], "size": 10 }, "success": true } | -| `todo.task.create` | `0` | `fail_business` | { "arguments": [], "errorCode": "500", "errorMsg": "TodoServiceImpl#createTask: Unrecognized priority type: 1", "success": false, "trace_id": "0bab027317745963398617211e07a4" } | -| `ding.message.send` | `0` | `fail_business` | { "dingOpenErrcode": 400009, "errorMsg": "robotCode is in not valid or not in the org", "result": {}, "success": false, "trace_id": "2132f5ca17745963404804743e0a7c" } | -| `ding.message.recall` | `0` | `fail_business` | { "dingOpenErrcode": 500100, "errorMsg": "system error", "result": {}, "success": false, "trace_id": "2106d98117745963413161346e0b34" } | diff --git a/test/reports/dynamic-real-functional-v7-retry-20260327-152915.md b/test/reports/dynamic-real-functional-v7-retry-20260327-152915.md deleted file mode 100644 index 0aa6ab3a..00000000 --- a/test/reports/dynamic-real-functional-v7-retry-20260327-152915.md +++ /dev/null @@ -1,30 +0,0 @@ -# CLI 第七轮定向修复重跑报告 - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:29:25 | -| 样本数 | `11` | -| pass | `9` | -| fail_exit | `0` | -| fail_business | `2` | - -- `uid`: `061978` -- `todo priority` 命中值: `LOW` -- `task-id`: `51469483424` -- `template`: `日报` / `18b46f75236c558cc63be07419f8d65f` -- `event-id`: `bVBwVWRCZDhSenhzdmwvcDNzYkQxQT09` -- `room-id`: `bdff146f0172e49511c91904cf69b186003e6834fdd7fee7` - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `contact.user.get-self` | `0` | `pass` | { "result": [ { "isAdmin": true, "orgEmployeeModel": { "corpId": "ding8196cd9a2b2405da24f2f5cc6abecb85", "depts": [ { "deptId": 1037045267, "deptName": | -| `todo.task.create(priority=LOW)` | `0` | `pass` | { "arguments": [], "result": { "subject": "v7-retry-20260327-152915-LOW", "taskId": "51469483424" }, "success": true } | -| `todo.task.get` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": { "todoDetailModel": { "activities": [ { "action": "task.create", "activityId": "12839806740", "cr | -| `report.template.list` | `0` | `pass` | { "items": [ { "last_modified_time": 1697702695000, "report_template_id": "18b46f75236c558cc63be07419f8d65f", "report_template_logo_url": "https://landray.dingtalkapps.com/alid/app/report/images/i | -| `report.template.detail` | `0` | `pass` | { "errcode": 0, "errorMsg": "ok", "result": { "allowAddReceivers": 0, "lastModifiedTime": 1650879711000, "report_template_fields": [ { "field_name": "今日完成工作", "field_sort": 0, | -| `report.create` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `calendar.event.create` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true } ], "created": 1774596561911 | -| `calendar.room.search(96)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "capacity": null, "fullGroupPath": "阿里中心-杭州未科", "labels": [], "roomId": "bdff146f0172e49511c91904cf69b186003e6834fdd7fee7", | -| `calendar.room.add` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | -| `calendar.room.delete` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | -| `ding.message.send(placeholder)` | `0` | `fail_business` | { "dingOpenErrcode": 400009, "errorMsg": "robotCode is in not valid or not in the org", "result": {}, "success": false, "trace_id": "0bb7c36217745965657028317e058c" } | diff --git a/test/reports/dynamic-real-functional-v7-retry-latest.md b/test/reports/dynamic-real-functional-v7-retry-latest.md deleted file mode 100644 index 0aa6ab3a..00000000 --- a/test/reports/dynamic-real-functional-v7-retry-latest.md +++ /dev/null @@ -1,30 +0,0 @@ -# CLI 第七轮定向修复重跑报告 - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:29:25 | -| 样本数 | `11` | -| pass | `9` | -| fail_exit | `0` | -| fail_business | `2` | - -- `uid`: `061978` -- `todo priority` 命中值: `LOW` -- `task-id`: `51469483424` -- `template`: `日报` / `18b46f75236c558cc63be07419f8d65f` -- `event-id`: `bVBwVWRCZDhSenhzdmwvcDNzYkQxQT09` -- `room-id`: `bdff146f0172e49511c91904cf69b186003e6834fdd7fee7` - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `contact.user.get-self` | `0` | `pass` | { "result": [ { "isAdmin": true, "orgEmployeeModel": { "corpId": "ding8196cd9a2b2405da24f2f5cc6abecb85", "depts": [ { "deptId": 1037045267, "deptName": | -| `todo.task.create(priority=LOW)` | `0` | `pass` | { "arguments": [], "result": { "subject": "v7-retry-20260327-152915-LOW", "taskId": "51469483424" }, "success": true } | -| `todo.task.get` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": { "todoDetailModel": { "activities": [ { "action": "task.create", "activityId": "12839806740", "cr | -| `report.template.list` | `0` | `pass` | { "items": [ { "last_modified_time": 1697702695000, "report_template_id": "18b46f75236c558cc63be07419f8d65f", "report_template_logo_url": "https://landray.dingtalkapps.com/alid/app/report/images/i | -| `report.template.detail` | `0` | `pass` | { "errcode": 0, "errorMsg": "ok", "result": { "allowAddReceivers": 0, "lastModifiedTime": 1650879711000, "report_template_fields": [ { "field_name": "今日完成工作", "field_sort": 0, | -| `report.create` | `0` | `fail_business` | { "code": "PARAM_ERROR", "error": "参数错误", "message": "参数错误。请检查输入参数是否正确,参考工具说明调整参数后重试", "retryable": false, "success": false, "technical_detail": "调用失败,原因: 调用失败,原因: 调用远程服务业务异常, 出参校验不通过。root.success当前值:false, 预 | -| `calendar.event.create` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true } ], "created": 1774596561911 | -| `calendar.room.search(96)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "capacity": null, "fullGroupPath": "阿里中心-杭州未科", "labels": [], "roomId": "bdff146f0172e49511c91904cf69b186003e6834fdd7fee7", | -| `calendar.room.add` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | -| `calendar.room.delete` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | -| `ding.message.send(placeholder)` | `0` | `fail_business` | { "dingOpenErrcode": 400009, "errorMsg": "robotCode is in not valid or not in the org", "result": {}, "success": false, "trace_id": "0bb7c36217745965657028317e058c" } | diff --git a/test/reports/dynamic-real-functional-v7-targeted-20260327-152812.md b/test/reports/dynamic-real-functional-v7-targeted-20260327-152812.md deleted file mode 100644 index 50419e03..00000000 --- a/test/reports/dynamic-real-functional-v7-targeted-20260327-152812.md +++ /dev/null @@ -1,43 +0,0 @@ -# CLI 第七轮定向修复报告 - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:28:17 | -| 样本数 | `23` | -| pass | `0` | -| fail_exit | `23` | -| fail_business | `0` | - -- `uid`: `061978` -- `todo priority` 可用值: `(未探测到)` -- `task-id`: `(无)` -- `report template`: `日报` -- `template-id`: `1` -- `calendar event-id`: `(无)` -- `calendar room-id`: `(无)` - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `contact.user.get-self` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=1)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=2)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=3)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=4)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=P0)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=P1)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=P2)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=P3)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=HIGH)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=MEDIUM)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=LOW)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=URGENT)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=NORMAL)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `report.template.list` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `report.template.detail` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `report.create(with_template_fields)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `calendar.event.create(confirmed_seed)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `calendar.room.search(96)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `calendar.room.search(41)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `calendar.room.search(74)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `ding.message.send(robot_placeholder)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `ding.message.recall(robot_placeholder)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | diff --git a/test/reports/dynamic-real-functional-v7-targeted-latest.md b/test/reports/dynamic-real-functional-v7-targeted-latest.md deleted file mode 100644 index 50419e03..00000000 --- a/test/reports/dynamic-real-functional-v7-targeted-latest.md +++ /dev/null @@ -1,43 +0,0 @@ -# CLI 第七轮定向修复报告 - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:28:17 | -| 样本数 | `23` | -| pass | `0` | -| fail_exit | `23` | -| fail_business | `0` | - -- `uid`: `061978` -- `todo priority` 可用值: `(未探测到)` -- `task-id`: `(无)` -- `report template`: `日报` -- `template-id`: `1` -- `calendar event-id`: `(无)` -- `calendar room-id`: `(无)` - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `contact.user.get-self` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=1)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=2)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=3)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=4)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=P0)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=P1)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=P2)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=P3)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=HIGH)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=MEDIUM)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=LOW)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=URGENT)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `todo.task.create(priority=NORMAL)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `report.template.list` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `report.template.detail` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `report.create(with_template_fields)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `calendar.event.create(confirmed_seed)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `calendar.room.search(96)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `calendar.room.search(41)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `calendar.room.search(74)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `ding.message.send(robot_placeholder)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | -| `ding.message.recall(robot_placeholder)` | `1` | `fail_exit` | { "error": { "actions": [ "Check authentication, permissions, and parameters, then retry" ], "category": "api", "code": 1, "hint": "Request was rejected by upstream service; check parameters, | diff --git a/test/reports/dynamic-roomid-chain-20260327-152211.md b/test/reports/dynamic-roomid-chain-20260327-152211.md deleted file mode 100644 index ebf5c3b2..00000000 --- a/test/reports/dynamic-roomid-chain-20260327-152211.md +++ /dev/null @@ -1,48 +0,0 @@ -# 会议室ID实采链路专项报告 - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:22:35 | -| 步骤数 | `32` | -| pass | `32` | -| fail_exit | `0` | -| fail_business | `0` | - -- `event-id`: `bjRTVjdjSlliZHpiblp5TVB4TDlGQT09` -- `发现的 roomId 数量`: `2` -- `成功验证 roomId`: `bdff146f0172e49511c91904cf69b186003e6834fdd7fee7` - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `calendar.event.create` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true } ], "created": 1774596132153 | -| `calendar.room.list-groups` | `0` | `pass` | { "result": { "groupList": [ { "groupId": 41, "groupName": "绿城·未来park", "parentId": 0 }, { "groupId": 74, "groupName": "西溪C区", "parentId": 0 } | -| `calendar.room.search(group=41)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=74)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=96)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "capacity": null, "fullGroupPath": "阿里中心-杭州未科", "labels": [], "roomId": "bdff146f0172e49511c91904cf69b186003e6834fdd7fee7", | -| `calendar.room.search(group=42)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=43)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=44)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=45)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=50)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=51)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=52)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=53)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=54)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=55)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=58)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=59)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=60)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=61)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=62)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=63)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=64)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=65)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=46)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=48)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=75)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=76)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=77)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=78)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.add(room=bdff146f0172e49511c91904cf69b186003e6834fdd7fee7)` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | -| `calendar.room.delete(room=bdff146f0172e49511c91904cf69b186003e6834fdd7fee7)` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | -| `calendar.event.delete` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | diff --git a/test/reports/dynamic-roomid-chain-latest.md b/test/reports/dynamic-roomid-chain-latest.md deleted file mode 100644 index ebf5c3b2..00000000 --- a/test/reports/dynamic-roomid-chain-latest.md +++ /dev/null @@ -1,48 +0,0 @@ -# 会议室ID实采链路专项报告 - -| 指标 | 值 | -|---|---| -| 时间 | 2026-03-27 15:22:35 | -| 步骤数 | `32` | -| pass | `32` | -| fail_exit | `0` | -| fail_business | `0` | - -- `event-id`: `bjRTVjdjSlliZHpiblp5TVB4TDlGQT09` -- `发现的 roomId 数量`: `2` -- `成功验证 roomId`: `bdff146f0172e49511c91904cf69b186003e6834fdd7fee7` - -| 步骤 | exit | 语义 | 摘要 | -|---|---:|---|---| -| `calendar.event.create` | `0` | `pass` | { "arguments": [], "result": { "attendees": [ { "displayName": "天雷", "optional": false, "responseStatus": "accepted", "self": true } ], "created": 1774596132153 | -| `calendar.room.list-groups` | `0` | `pass` | { "result": { "groupList": [ { "groupId": 41, "groupName": "绿城·未来park", "parentId": 0 }, { "groupId": 74, "groupName": "西溪C区", "parentId": 0 } | -| `calendar.room.search(group=41)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=74)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=96)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "capacity": null, "fullGroupPath": "阿里中心-杭州未科", "labels": [], "roomId": "bdff146f0172e49511c91904cf69b186003e6834fdd7fee7", | -| `calendar.room.search(group=42)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=43)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=44)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=45)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=50)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=51)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=52)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=53)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=54)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=55)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=58)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=59)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=60)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=61)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=62)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=63)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=64)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=65)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=46)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=48)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=75)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=76)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=77)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.search(group=78)` | `0` | `pass` | { "arguments": [], "result": { "result": [ { "labels": null } ] }, "success": true } | -| `calendar.room.add(room=bdff146f0172e49511c91904cf69b186003e6834fdd7fee7)` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | -| `calendar.room.delete(room=bdff146f0172e49511c91904cf69b186003e6834fdd7fee7)` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | -| `calendar.event.delete` | `0` | `pass` | { "arguments": [], "errorCode": null, "errorMsg": null, "result": {}, "success": true } | diff --git a/test/reports/report-create-deep-fix-latest.md b/test/reports/report-create-deep-fix-latest.md deleted file mode 100644 index ece6b179..00000000 --- a/test/reports/report-create-deep-fix-latest.md +++ /dev/null @@ -1,43 +0,0 @@ -# report.create 深度修复结论 - -## 目标 - -- 继续修复 `fix.report.create` -- 同时确认以下项按白名单处理: - - `attendance.summary`(统计类型业务限制) - - `calendar.participant.delete`(不能删除组织者) - - `calendar.room.add`(会议室冲突规则) - -## 执行结果 - -- 已对 `report.create` 做多轮参数矩阵探测: - - `template-id` 使用了两组真实值: - - `18b46f75236c558cc63be07419f8d65f` - - `180601946fdafa15424d9d84b5e8c33a` - - `contents` 试了 5 种结构: - - `[{ "content": "..." }]` - - `[{ "key": "...", "content": "..." }, ...]` - - `[{ "field_name": "...", "content": "..." }, ...]` - - `[{ "name": "...", "value": "..." }, ...]` - - `{ "今日完成工作": "...", ... }` - - 每种都分别试了是否带 `--dd-from 0` - -- 最终结果: - - 所有组合均 `exit=0`,但业务返回均为 `success=false` - - 错误统一为 `PARAM_ERROR`(服务端业务校验未通过) - -## 结论 - -- `fix.report.create` 在当前可见 CLI 参数维度下仍无法修复通过。 -- 当前更可能是服务端对 `contents` 的协议要求与 CLI 暴露参数存在缺口,或需额外上下文(当前命令参数未暴露)。 - -## 当前白名单 - -- `attendance.summary` -- `calendar.participant.delete` -- `calendar.room.add` -- `chat.*` -- `ding.*` - -> 注:`calendar event list-mine` 已按你的要求继续探测,但在不同时间格式和参数组合下均返回 `Tool metadata API error: 未找到指定工具`,现阶段可视为服务端侧阻塞。 -