aisearch

package
v1.0.63 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 3, 2026 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package aisearch implements strict, task-oriented Shortcut projections over DingTalk's enterprise search APIs.

Index

Constants

This section is empty.

Variables

View Source
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.

View Source
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.

View Source
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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL