dingtalk-masker
v1.1.3
Published
钉钉姓名脱敏工具 - 从文本中提取姓名并替换为部门+姓名某格式
Readme
dingtalk-masker
钉钉姓名脱敏工具 - 从文本中提取姓名并替换为"部门+姓名某"格式,同时支持组织架构和人员查询。
功能特性
- 姓名脱敏:从文本中提取中文姓名,替换为"部门+姓名某"格式
- 邮箱脱敏:
- 企业内用户邮箱:
首****尾@原始域名首****尾.域名后缀 - 非企业用户但域名在脱敏列表:
首****尾@域名首***尾.域名后缀
- 企业内用户邮箱:
- 手机号脱敏:138****5678 格式
- 组织架构:查询部门列表、部门详情、获取部门下用户
- 人员管理:查询人员列表、人员详情、搜索人员(支持模糊/精确)
安装
npm install -g dingtalk-masker配置
创建配置文件 ~/.dingtalk-masker/config.json:
{
"dingtalk": {
"appKey": "your_app_key",
"appSecret": "your_app_secret"
},
"mask": {
"maskedDomains": ["qq.com", "163.com"],
"domainMaskMode": "domain_only"
}
}脱敏配置说明
| 配置项 | 说明 | 示例 |
|--------|------|------|
| maskedDomains | 需要脱敏的域名列表 | ["qq.com", "example.com"] |
| domainMaskMode | 脱敏模式:domain_only 或 full | domain_only |
脱敏效果示例
| 原始邮箱 | domain_only | full |
|---------|-------------|------|
| [email protected] | test@e***e.com | t****t@e***e.com |
| [email protected] | john@q***q.com | j****n@q***q.com |
使用
姓名脱敏
# 处理文本,将姓名替换为"部门+姓名某"格式
dingtalk-masker mask process "今天张三出去了"
# 今天项目部张某出去了
# 提取文本中的姓名候选
dingtalk-masker mask extract "今天张三出去了"
# ["张三", "张三出"]邮箱脱敏
# 企业内用户邮箱脱敏
dingtalk-masker mask process "张三邮箱[email protected]"
# 张三邮箱z****n@e***e.com
# 非企业用户但域名在脱敏列表
dingtalk-masker mask process "联系人邮箱[email protected]"
# 联系人邮箱t***t@q***q.com组织架构
# 获取部门列表
dingtalk-masker org list
# 获取部门详情
dingtalk-masker org get <deptId>
# 获取部门下用户
dingtalk-masker org users <deptId>人员管理
# 获取所有人员列表
dingtalk-masker user list
# 获取用户详情
dingtalk-masker user get <userId>
# 搜索用户(默认模糊匹配)
dingtalk-masker user search 张三
# 精确搜索
dingtalk-masker user search 张三 --exact输出格式
# 默认格式化输出(友好阅读)
dingtalk-masker user list
# JSON 格式输出(程序调用)
dingtalk-masker user list --json工作原理
姓名提取
- 支持复姓(欧阳、司马、诸葛等 20 个)
- 支持单字姓氏 + 1-2 个汉字
- 按长度排序,优先匹配完整姓名
邮箱脱敏逻辑
- 匹配企业内用户邮箱 → 脱敏为
首****尾@原始域名首****尾.域名后缀 - 未匹配但域名在
maskedDomains→ 按domainMaskMode脱敏 - 未匹配且域名不在列表 → 不脱敏
部门匹配
- 获取用户部门完整路径
- 优先返回以"部"结尾的部门
- 无"部"结尾则返回最近一层
姓名格式化
- 单姓:张三 → 张某
- 复姓:欧阳娜娜 → 欧阳某
