北森通讯录同步#

从北森(italent.cn)通讯录接口抓取全员数据,以 SCD2 模式同步到本地 MySQL,保留部门版本历史。

工作流程#

浏览器导出 Cookie JSON → 提取 italent.cn Cookie → 分页请求 staffV2 接口
→ 解析用户数据 → SCD2 对比同步(新增插首版 / 换部门锁旧插新 / 未变刷新 last_date)

运行方式#

python main.py

Cookie 失效(接口返回 401/403)时,需重新登录 italent.cn 并用浏览器插件导出最新 Cookie JSON 放到脚本目录,脚本自动选取文件名日期最新的一个。

数据表#

目标表 Tianlala.beiseng_users,首次运行自动建表:

  • 一人多行,每行代表一个部门版本,is_current=1 为当前版本
  • 新用户插入首版;部门未变仅刷新 last_date;换部门锁旧版插新版(幂等,可随时重跑)
  • 运行结束输出变更汇总:新增 / 换部门 / 未出现

常用查询#

-- 全员当前部门
SELECT userId, name, department FROM beiseng_users WHERE is_current = 1;

-- 某人的部门履历
SELECT name, department, start_date, last_date
FROM beiseng_users WHERE userId = 628134528 ORDER BY start_date;

-- 疑似离职(长期未观测到)
SELECT userId, name, department, last_date FROM beiseng_users
WHERE is_current = 1 AND last_date < NOW() - INTERVAL 90 DAY;