Documentation
¶
Overview ¶
Package aisearch implements strict, task-oriented Shortcut projections over DingTalk's enterprise search APIs.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var SearchBehavior = shortcut.Shortcut{ OutputRollout: output.RolloutLegacyOnly, Service: "aisearch", Command: "+search-behavior", Product: "aisearch", Description: "搜索发送、创建、分享、编辑或接收等企业行为记录", Intent: "用户明确询问谁发送、创建、分享、编辑或接收过什么时使用;当前因零命中相关性合同不足保持不可用。", Risk: shortcut.RiskRead, Safety: aisearchReadSafety, Contract: aisearchContract( "+search-behavior", "搜索发送、创建、分享、编辑或接收等企业行为记录", "用户明确询问谁发送、创建、分享、编辑或接收过什么时使用;当前因零命中相关性合同不足保持不可用。", false, []contract.ParamDecl{ {Name: "queries"}, {Name: "types", Property: "searchTypes"}, {Name: "behavior", Property: "behaviorType"}, {Name: "chat-scope", Property: "chatScope"}, {Name: "time-range", Property: "timeRange"}, {Name: "direction"}, }, `dws aisearch +search-behavior --types mail --behavior send --direction "我->同事" --format json`, ), Flags: []shortcut.Flag{ {Name: "queries", Type: shortcut.FlagStringSlice, Desc: "内容关键词列表;汇总场景可留空"}, {Name: "types", Type: shortcut.FlagStringSlice, Default: "all", Desc: "内容类型:all/document/im/calendar/todo/minute/report/image/link/notable/baike/mail"}, {Name: "behavior", Type: shortcut.FlagString, Default: "all", Enum: []string{"all", "send", "create", "share", "edit", "receive"}, Desc: "行为类型"}, {Name: "chat-scope", Type: shortcut.FlagString, Desc: "仅 IM 搜索时的会话或群范围"}, {Name: "time-range", Type: shortcut.FlagString, Desc: "服务端自然语言时间范围"}, {Name: "direction", Type: shortcut.FlagString, Desc: "交互方向,如我->同事"}, }, Constraints: []shortcut.Constraint{{ Kind: shortcut.ConstraintCustom, Flags: []string{"types"}, Description: "--types 只能包含已审核内容类型,all 不能与其他类型并用;--chat-scope 仅能与 im 类型组合", }}, Validate: validateBehavior, Execute: func(rt *shortcut.RuntimeContext) error { return unavailableSearch("aisearch/search_enterprise_behavior") }, }
SearchBehavior remains registered but unavailable for the same zero-match relevance gap as SearchEnterprise.
var SearchEnterprise = shortcut.Shortcut{ OutputRollout: output.RolloutLegacyOnly, Service: "aisearch", Command: "+search-enterprise", Product: "aisearch", Description: "按主题搜索企业知识、消息、邮件与协作内容", Intent: "需要按关键词搜索企业即时消息时使用;当前因随机查询仍返回业务对象,无法证明严格相关性与合法零结果,保持不可用。", Risk: shortcut.RiskRead, Safety: aisearchReadSafety, Contract: aisearchContract( "+search-enterprise", "按主题搜索企业知识、消息、邮件与协作内容", "需要按关键词搜索企业即时消息时使用;当前因随机查询仍返回业务对象,无法证明严格相关性与合法零结果,保持不可用。", false, []contract.ParamDecl{{Name: "queries"}, {Name: "types", Property: "searchTypes"}, {Name: "time-range", Property: "timeRange"}}, `dws aisearch +search-enterprise --queries "发布方案" --types im --format json`, ), Flags: []shortcut.Flag{ {Name: "queries", Type: shortcut.FlagStringSlice, Required: true, Desc: "即时消息关键词列表"}, {Name: "types", Type: shortcut.FlagStringSlice, Default: "im", Desc: "已审核内容类型;--types 当前必须且只能为 im"}, {Name: "time-range", Type: shortcut.FlagString, Desc: "服务端自然语言时间范围,如今天、本周或过去一月"}, }, Constraints: []shortcut.Constraint{{ Kind: shortcut.ConstraintCustom, Flags: []string{"types"}, Description: "--types 当前必须且只能为 im", }}, Validate: validateEnterprise, Execute: func(rt *shortcut.RuntimeContext) error { return unavailableSearch("aisearch/search_enterprise") }, }
SearchEnterprise remains registered but unavailable. The IM slice can return stable identities for a known fixture, but a fresh random marker also returned a business object, so the service cannot prove a legitimate zero result or strict query relevance.
var SearchPerson = shortcut.Shortcut{ OutputRollout: output.RolloutUnifiedActive, Service: "aisearch", Command: "+search-person", Product: "aisearch", Description: "按姓名、部门、职责或组织关系语义搜索企业人员", Intent: "只知道人名、部门、职责、手机号、工号或上下级关系,需要获得可用于后续任务的人员稳定身份时使用。", Risk: shortcut.RiskRead, Safety: aisearchReadSafety, Contract: aisearchContract( "+search-person", "按姓名、部门、职责或组织关系语义搜索企业人员", "只知道人名、部门、职责、手机号、工号或上下级关系,需要获得可用于后续任务的人员稳定身份时使用。", true, []contract.ParamDecl{{Name: "query", Property: "keyword"}, {Name: "dimensions", Property: "dimension"}}, `dws aisearch +search-person --query "张三" --dimensions name --format json`, `dws aisearch +search-person --query "产品" --dimensions duty,department --format json`, ), Flags: []shortcut.Flag{ {Name: "query", Type: shortcut.FlagString, Required: true, Desc: "人员搜索关键词;--query 不能为空白"}, {Name: "dimensions", Type: shortcut.FlagStringSlice, Default: "all", Desc: "搜索维度;--dimensions 只能包含 all/name/department/position/duty/supervisor/subordinate/phone/jobNumber,all 不能与其他维度并用"}, }, Constraints: []shortcut.Constraint{ {Kind: shortcut.ConstraintCustom, Flags: []string{"query"}, Description: "--query 不能为空白"}, {Kind: shortcut.ConstraintCustom, Flags: []string{"dimensions"}, Description: "--dimensions 只能包含 all/name/department/position/duty/supervisor/subordinate/phone/jobNumber,all 不能与其他维度并用"}, }, Validate: validatePerson, Execute: func(rt *shortcut.RuntimeContext) error { return executeSearchForSource(rt, "enterprise_person_search", map[string]any{ "keyword": rt.Str("query"), "dimension": rt.StrSlice("dimensions"), }, []string{"userId", "openDingTalkId", "url"}, "person") }, }
SearchPerson is the only public AiSearch Shortcut. Exact live evidence proves both a known non-empty user fixture and an explicit zero hit in the phone dimension using a value longer than any valid phone number.
Functions ¶
This section is empty.
Types ¶
This section is empty.