Skip to content

dws calendar event list without --start/--end returns null-placeholder row instead of today's events #529

Description

@tiantao

Bug

dws calendar event list 不传 --start/--end 时返回一条全 null 占位行,而非当天日程。显式传入时间范围后可正确返回。

Related: #303(已关闭,但修而不治——从 business error 300000 变成了空占位数据,根本问题未解决)

Reproduce

# 无参数 → 空占位数据
dws calendar event list
# { "events": [ { "attendees": null, "categories": null, "meetingRooms": null, ... } ], "hasMore": false }

# 显式传参 → 正确返回
dws calendar event list --start 2026-06-29 --end 2026-06-30

Root Cause

internal/compat/registry.go 第 876-878 行:

if !anyChanged {
    continue
}

CollectBindings 跳过了用户未显式设置的 flag,导致 startTime/endTime 不入 params。新增的 collectSchemaFlags 同样使用 cmd.Flags().Visit()(只遍历用户设置的
flag),也无法兜底。

最终 MCP tools/call 发送空的 arguments:

{ "name": "list_calendar_events", "arguments": {} }

服务端收到无时间范围的请求后返回空结果集。

Suggested Fix

参照 internal/helpers/attendance.go 的模式,添加 internal/helpers/calendar.go,用 NewCuratedCommand(优先级 100)覆盖动态生成的 event list 命令:

- 用户未传 --start → 默认当天 00:00:00
- 用户未传 --end → 默认当天 23:59:59
- 通过 cmdutil.ParseISOTimeToMillis 解析后转为毫秒时间戳传入 MCP

Environment

- dws version: main (e32fa15)
- Go 1.25+
- macOS

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions