北森通讯录同步#
从北森(italent.cn)通讯录接口抓取全员数据,以 SCD2 模式同步到本地 MySQL,保留部门版本历史。
- 项目仓库:https://e.coding.net/fuwenyue/tianlala/beiseng-users.git
- 相关项目:开机自动执行,由 定时任务工作台 调度
工作流程#
浏览器导出 Cookie JSON → 提取 italent.cn Cookie → 分页请求 staffV2 接口
→ 解析用户数据 → SCD2 对比同步(新增插首版 / 换部门锁旧插新 / 未变刷新 last_date)运行方式#
python main.pyCookie 失效(接口返回 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;