VSN-2863/feat(emploi-du-temps): add column filters and use slim passenger summary
Improve the passenger schedules ("Emploi du temps") screen and fix the circuit binding on newly created active amendments.
Filtering:
- Add PassengerScheduleFilterDTO (per-column values + *FilterType, CONTAINS default) bound via @ModelAttribute on getAllPassengersSchedules.
- ScheduleChangeHistoryServiceImpl gains a two-stage filtered path: narrow first on everything resolvable from local Mongo (numUsager, codeCircuit, intituleCircuit) to avoid the slow/brittle user-service call, then hydrate and apply name/establishment filters on the surviving candidates. The unfiltered path keeps the fast "paginate uuids, hydrate page only" flow.
- matches() supports EQUALS / STARTS_WITH / ENDS_WITH / CONTAINS, case- insensitive; a blank filter is no constraint, a set filter on a null field excludes the row.
Slim passenger payload:
- Replace fetchPassengersByUuids (full PassengerDTO + per-uuid fallback) with fetchPassengerSummariesByUuids, consuming the new user-service retrieveScheduleSummariesByUuids endpoint via PassengerScheduleSummaryClientDTO. Establishment name now comes straight from the projection (resolveEtablissement removed).
- Add UserService.getPassengerScheduleSummariesByUuids + impl.
DTO change:
- Add activeAmendmentEndDate to PassengerScheduleSummaryDTO (sourced from the active amendment endDate).
Amendment fix:
- On createActiveAmendment, carry the circuit binding forward by resolving circuitId from amendmentRepresentatives (falling back to existing amendments), so codeCircuit / intituleCircuit stay visible in the grid and stay consistent with MODIFY_EXISTING. Avoids propagating the null circuitId written by earlier CREATE_NEW flows.