@lark-people/cli 0.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +324 -0
  2. package/LICENSE +21 -0
  3. package/README.md +232 -0
  4. package/README.zh.md +232 -0
  5. package/bin/people-cli_darwin_amd64 +0 -0
  6. package/bin/people-cli_darwin_arm64 +0 -0
  7. package/bin/people-cli_linux_amd64 +0 -0
  8. package/bin/people-cli_linux_arm64 +0 -0
  9. package/bin/people-cli_windows_amd64.exe +0 -0
  10. package/bin/people-cli_windows_arm64.exe +0 -0
  11. package/package.json +41 -0
  12. package/scripts/install-wizard.js +700 -0
  13. package/scripts/install.js +56 -0
  14. package/scripts/run.js +36 -0
  15. package/skills/people-attendance/SKILL.md +667 -0
  16. package/skills/people-attendance/references/people-attendance-submission.md +426 -0
  17. package/skills/people-attendance/scripts/resolve_date.py +894 -0
  18. package/skills/people-corehr/references/people-corehr-pre-hire-search.md +0 -0
  19. package/skills/people-corehr-employee/SKILL.md +111 -0
  20. package/skills/people-corehr-employee/references/people-corehr-employee-basic-info-query.md +97 -0
  21. package/skills/people-corehr-employee/references/people-corehr-employee-fields-list.md +87 -0
  22. package/skills/people-corehr-employee/references/people-corehr-employee-filter.md +403 -0
  23. package/skills/people-corehr-employee/references/people-corehr-employee-search.md +73 -0
  24. package/skills/people-corehr-job-change/SKILL.md +212 -0
  25. package/skills/people-corehr-job-change/references/people-job-change-business-rules.md +113 -0
  26. package/skills/people-corehr-job-change/references/people-job-change-lookup-filters.md +82 -0
  27. package/skills/people-corehr-job-change/references/people-job-change-output-and-empty.md +207 -0
  28. package/skills/people-corehr-job-change/references/people-job-change-search-advanced.md +226 -0
  29. package/skills/people-corehr-job-change/references/people-job-change-search-fields.md +119 -0
  30. package/skills/people-corehr-job-change/references/people-job-change-search-option.md +72 -0
  31. package/skills/people-corehr-job-change/references/people-job-change-search.md +215 -0
  32. package/skills/people-corehr-offboarding/SKILL.md +188 -0
  33. package/skills/people-corehr-offboarding/references/people-corehr-offboarding-business-knowledge.md +27 -0
  34. package/skills/people-corehr-offboarding/references/people-corehr-offboarding-search-option.md +187 -0
  35. package/skills/people-corehr-offboarding/references/people-corehr-offboarding-search.md +54 -0
  36. package/skills/people-corehr-organization/SKILL.md +42 -0
  37. package/skills/people-corehr-organization/references/aggregate.md +11 -0
  38. package/skills/people-corehr-organization/references/detail.md +39 -0
  39. package/skills/people-corehr-organization/references/field-values.md +44 -0
  40. package/skills/people-corehr-organization/references/hierarchy.md +61 -0
  41. package/skills/people-corehr-organization/references/lookup.md +41 -0
  42. package/skills/people-corehr-organization/references/metadata.md +40 -0
  43. package/skills/people-corehr-organization/references/tree.md +45 -0
  44. package/skills/people-corehr-prehire/SKILL.md +160 -0
  45. package/skills/people-corehr-prehire/references/command-resolution.md +48 -0
  46. package/skills/people-corehr-prehire/references/filter-fields.md +151 -0
  47. package/skills/people-corehr-prehire/references/return-fields.md +153 -0
  48. package/skills/people-corehr-prehire/references/templates.md +202 -0
  49. package/skills/people-corehr-prehire/references/troubleshooting.md +93 -0
  50. package/skills/people-corehr-query-id-by-name/SKILL.md +154 -0
  51. package/skills/people-corehr-renewal/SKILL.md +186 -0
  52. package/skills/people-corehr-renewal/references/people-corehr-renewal-fields-query.md +62 -0
  53. package/skills/people-corehr-renewal/references/people-corehr-renewal-routing.md +54 -0
  54. package/skills/people-corehr-renewal/references/people-corehr-renewal-search.md +137 -0
  55. package/skills/people-corehr-renewal/references/people-corehr-renewal.md +39 -0
  56. package/skills/people-corehr-workforce-plan/SKILL.md +52 -0
  57. package/skills/people-corehr-workforce-plan/references/people-corehr-workforce-plan-detail-list.md +238 -0
  58. package/skills/people-corehr-workforce-plan/references/people-corehr-workforce-plan-detail-summary.md +221 -0
  59. package/skills/people-corehr-workforce-plan/references/people-corehr-workforce-plan.md +79 -0
  60. package/skills/people-hire/SKILL.md +255 -0
  61. package/skills/people-hire/references/people-hire-application.md +334 -0
  62. package/skills/people-hire/references/people-hire-evaluation-task-list.md +233 -0
  63. package/skills/people-hire/references/people-hire-evaluation.md +127 -0
  64. package/skills/people-hire/references/people-hire-interview-record.md +109 -0
  65. package/skills/people-hire/references/people-hire-interview-task-list.md +250 -0
  66. package/skills/people-hire/references/people-hire-interview.md +146 -0
  67. package/skills/people-hire/references/people-hire-job-process.md +93 -0
  68. package/skills/people-hire/references/people-hire-job-requirement.md +227 -0
  69. package/skills/people-hire/references/people-hire-job.md +277 -0
  70. package/skills/people-hire/references/people-hire-minutes.md +91 -0
  71. package/skills/people-hire/references/people-hire-talent.md +105 -0
  72. package/skills/people-hire/references/people-hire-test.md +197 -0
  73. package/skills/people-overtime/SKILL.md +992 -0
  74. package/skills/people-overtime/references/people-attendance-overtime-apply.md +491 -0
  75. package/skills/people-overtime/references/people-attendance-overtime.md +51 -0
  76. package/skills/people-overtime/references/people-attendance-submission.md +203 -0
  77. package/skills/people-overtime/scripts/resolve_date.py +894 -0
  78. package/skills/people-shared/SKILL.md +94 -0
@@ -0,0 +1,111 @@
1
+ ---
2
+ name: people-corehr-employee
3
+ version: 1.0.0
4
+ description: "飞书人事 - 员工信息查询:搜索员工、查询当前登录员工基本信息、查询员工可筛选字段、按条件筛选员工。触发词:员工搜索、按姓名找人、查我自己、员工列表、部门员工、职级员工、员工字段、employee search、employee filter。适用边界:仅处理 employee search、basic info、fields、filter,不覆盖待入职、异动、离职、任职历史、审批、导出。"
5
+ metadata:
6
+ requires:
7
+ bins: ["people-cli"]
8
+ cliHelp: "people-cli corehr --help"
9
+ ---
10
+
11
+ # corehr employee
12
+
13
+ ## Scope
14
+
15
+ 只处理以下四类员工查询能力:
16
+
17
+ 1. `+employee-search`:按姓名、工号、邮箱搜索员工。
18
+ 2. `+employee-basic-info-query`:查询当前登录员工的基本信息。
19
+ 3. `+employee-fields-query`:查询员工字段元数据,确认哪些字段可筛选、可排序、可展示。
20
+ 4. `+employee-filter`:按字段条件筛选员工列表。
21
+
22
+ 不处理待入职、异动、离职、任职历史、审批/修改、导出文件、跨模块复杂统计。命中这些边界时,停止使用本 skill,改走对应 skill 或直接说明当前能力不覆盖。
23
+
24
+ ## Required Flow
25
+
26
+ 1. **意图判定**:先判断用户是在找人、查自己、问字段能力,还是要按条件筛人。不要把待入职、异动、离职、任职历史误判到本 skill。
27
+ 2. **最短路径执行**:
28
+ - 按姓名/工号/邮箱找员工:直接执行 `+employee-search`。
29
+ - 查我自己、查我的工号、查我的 `employment_id`:直接执行 `+employee-basic-info-query`。
30
+ - 问哪些字段可筛选/可排序/可展示:直接执行 `+employee-fields-query`,该命令本身就是终点。
31
+ - 按部门、职级、序列、工作地点、上级、团队等条件查员工:先执行 `+employee-fields-query` 校准字段,再执行 `+employee-filter`。
32
+ 3. **字段校准**:凡是要构造 `+employee-filter` 的 `--filters`、`--sort-fields`、`--display-fields`,字段名都必须来自本轮真实 `+employee-fields-query` 返回的 `api_name`,禁止猜字段、禁止省略命名空间前缀。
33
+ 4. **真实执行**:条件一旦可落地,必须执行对应的最终命令。不要停在字段解释、命令草稿或搜索预演。
34
+ 5. **完成态校验并回答**:答案必须来自最后一次真实命令返回。若结果分页,必须明确说明当前页数量和是否还有下一页;不要静默截断。
35
+
36
+ ## Route Templates
37
+
38
+ | 意图 | 最短路径 |
39
+ | --- | --- |
40
+ | 按姓名、工号、邮箱找员工 | 直接 `+employee-search` |
41
+ | 查我自己当前账号对应的员工信息 | 直接 `+employee-basic-info-query` |
42
+ | 问哪些字段能筛选/排序/展示 | 直接 `+employee-fields-query` |
43
+ | 查某部门、某职级、某序列、某地点的员工 | `+employee-fields-query` → `+employee-filter` |
44
+ | 查我的团队 / 我的下级 | `+employee-basic-info-query` 取自己的 `employment_id` → `+employee-filter` |
45
+ | 查某人的团队 / 某人的下级 | 先 `+employee-search` 取该人的 `employment_id` → `+employee-filter` |
46
+ | 查直属上级是某人的员工 | 先 `+employee-search` 取该人的 `employment_id` → `+employee-filter` |
47
+
48
+ ## Hard Rules
49
+
50
+ - 禁止用本 skill 处理待入职、异动、离职、任职历史、审批、导出文件;这些都不属于 employee 能力边界。
51
+ - 对 `+employee-filter` 而言,所有 `field_api_name` 都必须来自 `+employee-fields-query` 返回结果,且必须使用完整字段名,例如 `employment.department`,禁止写成 `department`、`job_level`、`workforce_type` 这类省略前缀的形式。
52
+ - 若用户要求的筛选字段不存在,或 `filterable=false`,必须停止并明确告知该字段不支持筛选;不要尝试其他接口、相邻字段、组合字段或本地兜底。
53
+ - 若用户要求排序字段不存在,或 `sortable=false`,必须停止并重新按 `+employee-fields-query` 返回值校准;不要凭经验继续执行。
54
+ - `+employee-filter` 的默认展示字段必须且仅能是 `["employment.person.preferred_name","employment.employee_number"]`。用户没有明确点名要展示其他属性时,禁止追加部门、职级、序列、工作地点等字段。
55
+ - 只有当用户原话明确提出“显示部门”“带上职级”“把工作地点也列出来”之类诉求时,才允许把对应字段追加到 `--display-fields`。
56
+ - 对以下字段,优先在 `+employee-filter` 的 filter 中使用 `value_names`,由命令内置名称转 ID 能力完成解析,禁止额外调用 `+query-id-by-name`:
57
+ - `employment.department`
58
+ - `employment.job_level`
59
+ - `employment.job_family`
60
+ - `employment.work_location`
61
+ - `employment.cost_center`
62
+ - `employment.workforce_type`
63
+ - `employment.employee_subtype`
64
+ - `employment.direct_manager`、`employment.dotted_line_manager`、`employment.manage_relations_all` 这类“人”字段不能直接传姓名,必须先通过 `+employee-search` 找到对应人的 `employment_id`,再写入 `values`。
65
+ - “XX 团队的员工”优先理解为“以 XX 为管理者的团队成员”,优先走 `employment.manage_relations_all`;不要把“团队”误写成部门字段。
66
+ - `+employee-search` 命中多个同名员工时,不要擅自猜测具体对象。若后续动作依赖唯一 `employment_id`,先基于搜索结果让用户确认,或明确说明当前返回的是候选列表。
67
+ - 查询结果出现分页提示时,必须告诉用户当前页结果和是否还有下一页。若 `Has more=true`,不能静默结束。
68
+ - 普通结果回答里不要暴露命令构造过程、内部调试步骤或无关 CLI 细节;但如果用户明确在问字段 `api_name`、字段类型或操作符,则应直接基于 `+employee-fields-query` 返回说明。
69
+
70
+ ## Final Answer Contract
71
+
72
+ - `+employee-search`:按 `姓名`、`工号`、`employment_id` 的顺序输出候选结果。
73
+ - `+employee-basic-info-query`:输出 `常用姓名`、`工号`、`employment_id`、`邮箱`。
74
+ - `+employee-fields-query`:保留字段元数据的核心列,至少包含 `name`、`api_name`、`type`、`filterable`、`sortable`、`displayable`、`operators`。
75
+ - `+employee-filter`:
76
+ - 默认只展示姓名和工号。
77
+ - 用户显式要求的展示字段,按用户诉求追加。
78
+ - 若接口返回 `Count`、`Has more`、`Next page` 等分页信息,答复中必须体现当前已返回多少条,以及是否还能继续查看下一页。
79
+ - 若命令报错、字段不支持、名称解析失败或结果不具备唯一性,必须清楚说明失败类型,禁止编造人数或员工名单。
80
+
81
+ ## Command Patterns
82
+
83
+ ```bash
84
+ # 按姓名、工号、邮箱搜索员工
85
+ people-cli corehr +employee-search --keyword <关键词>
86
+
87
+ # 查询当前登录员工基本信息
88
+ people-cli corehr +employee-basic-info-query --format json
89
+
90
+ # 查询员工字段元数据
91
+ people-cli corehr +employee-fields-query --format table
92
+
93
+ # 默认场景:只返回姓名 + 工号
94
+ people-cli corehr +employee-filter \
95
+ --filters '[{"field_api_name":"employment.department","operator":"in","value_names":["技术部"],"is_strand_id_in":true}]' \
96
+ --display-fields '["employment.person.preferred_name","employment.employee_number"]' \
97
+ --format table
98
+
99
+ # 用户明确要求额外字段时,才追加展示列
100
+ people-cli corehr +employee-filter \
101
+ --filters '[{"field_api_name":"employment.department","operator":"in","value_names":["技术部"],"is_strand_id_in":true}]' \
102
+ --display-fields '["employment.person.preferred_name","employment.employee_number","employment.department","employment.job_level"]' \
103
+ --format table
104
+ ```
105
+
106
+ ## Minimal References
107
+
108
+ - [people-corehr-employee-search.md](references/people-corehr-employee-search.md):员工搜索的输入识别、输出字段顺序与基本示例。
109
+ - [people-corehr-employee-basic-info-query.md](references/people-corehr-employee-basic-info-query.md):当前登录员工基本信息查询与常见联动场景。
110
+ - [people-corehr-employee-fields-list.md](references/people-corehr-employee-fields-list.md):字段元数据、字段类型、可用操作符与筛选/排序/展示能力判断。
111
+ - [people-corehr-employee-filter.md](references/people-corehr-employee-filter.md):员工筛选、默认展示字段铁律、`value_names` 解析与分页约束。
@@ -0,0 +1,97 @@
1
+ # +employee-basic-info-query
2
+
3
+ 查询当前登录员工的基本信息。
4
+
5
+ ## 用法
6
+
7
+ ```bash
8
+ people-cli corehr +employee-basic-info-query [flags]
9
+ ```
10
+
11
+ ## 参数
12
+
13
+ | Flag | 类型 | 必填 | 默认值 | 说明 |
14
+ |------|------|------|--------|------|
15
+ | `--accept-language` | string | 否 | `zh-CN` | 响应语言:`zh-CN`(中文)、`en-US`(英文) |
16
+
17
+ ### accept-language 选择策略
18
+
19
+ 根据用户使用的语言自动选择:
20
+ - 用户使用**中文**时 → 使用 `zh-CN`(默认)
21
+ - 用户使用**英文**时 → 使用 `en-US`
22
+ - 不确定时默认使用 `zh-CN`
23
+
24
+ ## 所需权限
25
+
26
+ | Scope |
27
+ |-------|
28
+ | `corehr:employment_basic_info_query:read` |
29
+
30
+ ## 输出
31
+
32
+ | 字段 | 说明 |
33
+ |------|------|
34
+ | `preferred_name` | 员工常用姓名 |
35
+ | `employee_number` | 工号 |
36
+ | `employment_id` | 员工 ID 员工的唯一标识符 |
37
+ | `email` | 邮箱 |
38
+
39
+ ### 输出示例
40
+
41
+ ```json
42
+ {
43
+ "ok": true,
44
+ "identity": "user",
45
+ "data": [
46
+ {
47
+ "email": "gggLKH@testbytedance.test",
48
+ "employee_number": "15312",
49
+ "employment_id": "7332108003012527660",
50
+ "preferred_name": "李庆举"
51
+ }
52
+ ],
53
+ "meta": {
54
+ "count": 1
55
+ }
56
+ }
57
+ ```
58
+
59
+ ## 示例
60
+
61
+ ```bash
62
+ # 查询当前员工基本信息
63
+ people-cli corehr +employee-basic-info-query
64
+
65
+ # 表格格式输出
66
+ people-cli corehr +employee-basic-info-query --format table
67
+
68
+ # 英文响应
69
+ people-cli corehr +employee-basic-info-query --accept-language en-US
70
+ ```
71
+
72
+ ## 常用流程
73
+
74
+ `+employee-basic-info-query` 主要用于获取当前登录员工的 `employment_id`,作为后续命令的入参:
75
+
76
+ **查询我的任职记录**
77
+
78
+ ```bash
79
+ # 1. 获取当前用户的 employment_id
80
+ people-cli corehr +employee-basic-info-query --format json
81
+
82
+ # 2. 用返回的 employment_id 查询任职记录
83
+ people-cli corehr +employee-job-data-query --employment-id <employment_id> --format table
84
+ ```
85
+
86
+ **查询我的下级**
87
+
88
+ ```bash
89
+ # 1. 获取当前用户信息
90
+ people-cli corehr +employee-basic-info-query --format json
91
+
92
+ # 2. 用返回的 employment_id 作为 values 查询直线下级
93
+ people-cli corehr +employee-filter \
94
+ --filters '[{"field_api_name":"employment.direct_manager","operator":"in","values":["<employment_id>"],"is_strand_id_in":true}]' \
95
+ --display-fields '["employment.person.preferred_name","employment.department","employment.job_level"]' \
96
+ --format table
97
+ ```
@@ -0,0 +1,87 @@
1
+ # +employee-fields-query
2
+
3
+ 查询员工自定义列设置,返回可用的自定义字段列表及其属性。
4
+
5
+ ## 用法
6
+
7
+ ```bash
8
+ people-cli corehr +employee-fields-query [flags]
9
+ ```
10
+
11
+ ## 参数
12
+
13
+ | Flag | 类型 | 必填 | 默认值 | 说明 |
14
+ |------|------|------|--------|------|
15
+ | `--accept-language` | string | 否 | `zh-CN` | 响应语言:`zh-CN`(中文)、`en-US`(英文) |
16
+
17
+ ### accept-language 选择策略
18
+
19
+ 根据用户使用的语言自动选择:
20
+ - 用户使用**中文**时 → 使用 `zh-CN`(默认)
21
+ - 用户使用**英文**时 → 使用 `en-US`
22
+ - 不确定时默认使用 `zh-CN`
23
+
24
+ ## 所需权限
25
+
26
+ | Scope |
27
+ |-------|
28
+ | `corehr:employment_column_list_query:read` |
29
+
30
+ ## 输出
31
+
32
+ | 字段 | 说明 |
33
+ |------|------|
34
+ | `name` | 字段名称 |
35
+ | `api_name` | 字段 API 标识 |
36
+ | `type` | 字段类型,决定筛选时 `values` 的传值方式和可用操作符,详见下方 type 说明 |
37
+ | `filterable` | 是否可筛选(true 可筛选 / false 不可筛选,仅 `filterable` 为 `true` 的字段才能用于 `--filters`) |
38
+ | `sortable` | 是否可排序(true 可排序 / false 不可排序,仅 `sortable` 为 `true` 的字段才能用于 `--sort-fields`) |
39
+ | `displayable` | 是否可展示(true 可展示 / false 不可展示,仅 `displayable` 为 `true` 的字段才能用于 `--display-fields`) |
40
+ | `operators` | 支持的操作符,与 `type` 配套使用,详见下方 operators 说明 |
41
+
42
+ ### type 字段类型说明
43
+
44
+ `type` 决定了 `+employee-filter` 筛选时 `values` 的传值方式和可用的 `operators`。
45
+
46
+ | 类型 | 说明 | 筛选值要求 |
47
+ |------|------|-----------|
48
+ | `input` | 单行文本 | 可直接传文本值 |
49
+ | `text` | 多行文本 | 可直接传文本值 |
50
+ | `number` | 数字 | 可直接传数值 |
51
+ | `date` | 日期 | 可直接传日期值(如 `"2024-01-01"`) |
52
+ | `bool` | 布尔值 | 传 `true` / `false` |
53
+ | `select` | 单选/下拉选择 | **需传选项 ID**,不可直接传文本 |
54
+ | `multiUser` | 多人选择 | **需传用户 ID**,不可直接传姓名 |
55
+ | `position` | 岗位 | **需传岗位 ID**,不可直接传岗位名称 |
56
+ | `lookup` | 关联引用 | **需传关联记录 ID** |
57
+ | `attachment` | 附件 | **需传附件 ID** |
58
+ | `hyperlink` | 超链接 | 可直接传 URL 文本 |
59
+ | `phone` | 电话号码 | 可直接传电话号码文本 |
60
+ | `email` | 邮箱 | 可直接传邮箱地址文本 |
61
+
62
+ > **关键规则**:`select`、`multiUser`、`position`、`lookup`、`attachment` 等引用类型字段,`values` 必须传对应的 ID,不能传显示文本。每种类型可用的操作符以接口返回的 `operators` 字段为准。
63
+
64
+ ### operators 操作符说明
65
+
66
+ | 操作符 | 说明 |
67
+ |--------|------|
68
+ | `in` | 包含 |
69
+ | `not_in` | 不包含 |
70
+ | `eq` | 等于 |
71
+ | `ne` | 不等于 |
72
+ | `gt` | 大于 |
73
+ | `gte` | 大于等于 |
74
+ | `lt` | 小于 |
75
+ | `lte` | 小于等于 |
76
+ | `is_blank` | 为空 |
77
+ | `not_blank` | 不为空 |
78
+
79
+ ## 示例
80
+
81
+ ```bash
82
+ # 查询自定义列设置
83
+ people-cli corehr +employee-fields-query
84
+
85
+ # 表格格式输出
86
+ people-cli corehr +employee-fields-query --format table
87
+ ```