Реальная причина бага с дублем в списке согласования: один и тот же
человек может иметь несколько email в справочнике api.tnsu.kz, поэтому
схлопывание по email его не ловило.
EmployeeDirectoryInfo дополнен полем Id (Guid сотрудника из /Employee/
ByEmail). ResolveStepAsync теперь параллельно с email несёт этот Id
(внутренний ResolvedStepRow, наружу не отдаётся), а CollapseByExecutorIdentity
и RemoveCompanyDirectorsDuplicatedByDirectorTansu дедуплицируют по
identity-ключу: Id, если он резолвился, иначе email как фолбэк (на случай,
если сотрудник по итоговому email не нашёлся в справочнике).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>