Feishu → ZKTeco sync worker GET /preview — dry run, depts + users (add ?users=0 to skip users) GET /sync — full sync (depts + users) GET /sync-users — sync users only GET /test-person?empno= — single-employee partial-update diff test GET /test-dept-users?name=… — test one department’s users (add &dry=1 for preview) GET /test-dept-users?openid=… — same, by open_department_id cron: 0 * * * * — auto full sync hourly