@lilaquadrat/studio 12.2.0 → 12.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/lib/src/helpers/shiftPlanAllocation.d.ts +53 -0
  2. package/lib/src/helpers/shiftPlanAllocation.js +110 -0
  3. package/lib/src/helpers/shiftPlanAllocation.js.map +1 -0
  4. package/lib/src/helpers/shiftPlanCoverage.d.ts +2 -0
  5. package/lib/src/helpers/shiftPlanCoverage.js +4 -0
  6. package/lib/src/helpers/shiftPlanCoverage.js.map +1 -0
  7. package/lib/src/helpers/shiftPlanningTime.js +26 -2
  8. package/lib/src/helpers/shiftPlanningTime.js.map +1 -1
  9. package/lib/src/helpers/shiftPlanningValidation.d.ts +8 -2
  10. package/lib/src/helpers/shiftPlanningValidation.js +16 -0
  11. package/lib/src/helpers/shiftPlanningValidation.js.map +1 -1
  12. package/lib/src/helpers/structureMatch.js +3 -1
  13. package/lib/src/helpers/structureMatch.js.map +1 -1
  14. package/lib/src/interfaces/ListPlanningParticipant.d.ts +17 -0
  15. package/lib/src/interfaces/ListPlanningParticipant.js +2 -0
  16. package/lib/src/interfaces/ListPlanningParticipant.js.map +1 -0
  17. package/lib/src/interfaces/PlanCoveragePreparation.d.ts +17 -0
  18. package/lib/src/interfaces/PlanCoveragePreparation.js +2 -0
  19. package/lib/src/interfaces/PlanCoveragePreparation.js.map +1 -0
  20. package/lib/src/interfaces/PlanningParticipantsResult.d.ts +12 -0
  21. package/lib/src/interfaces/PlanningParticipantsResult.js +2 -0
  22. package/lib/src/interfaces/PlanningParticipantsResult.js.map +1 -0
  23. package/lib/src/interfaces/ShiftAutofillResult.d.ts +6 -0
  24. package/lib/src/interfaces/ShiftAutofillResult.js +2 -0
  25. package/lib/src/interfaces/ShiftAutofillResult.js.map +1 -0
  26. package/lib/src/interfaces/ShiftReportContextOptions.d.ts +9 -0
  27. package/lib/src/interfaces/ShiftReportContextOptions.js +2 -0
  28. package/lib/src/interfaces/ShiftReportContextOptions.js.map +1 -0
  29. package/lib/src/models/lists.model.js +2 -1
  30. package/lib/src/models/lists.model.js.map +1 -1
  31. package/lib/src/services/customers.service.d.ts +2 -2
  32. package/lib/src/services/customers.service.js +2 -2
  33. package/lib/src/services/customers.service.js.map +1 -1
  34. package/lib/src/services/listParticipants.service.d.ts +45 -8
  35. package/lib/src/services/listParticipants.service.js +320 -39
  36. package/lib/src/services/listParticipants.service.js.map +1 -1
  37. package/lib/src/services/lists.service.js +24 -1
  38. package/lib/src/services/lists.service.js.map +1 -1
  39. package/lib/src/services/shifts.service.d.ts +18 -1
  40. package/lib/src/services/shifts.service.js +171 -26
  41. package/lib/src/services/shifts.service.js.map +1 -1
  42. package/lib/tests/listParticipantsPlanning.spec.js +406 -10
  43. package/lib/tests/listParticipantsPlanning.spec.js.map +1 -1
  44. package/lib/tests/listsServiceCreateExternalProducts.spec.js +18 -0
  45. package/lib/tests/listsServiceCreateExternalProducts.spec.js.map +1 -1
  46. package/lib/tests/shiftPlanCoverage.spec.d.ts +1 -0
  47. package/lib/tests/shiftPlanCoverage.spec.js +189 -0
  48. package/lib/tests/shiftPlanCoverage.spec.js.map +1 -0
  49. package/lib/tests/shiftPlanning.spec.js +327 -0
  50. package/lib/tests/shiftPlanning.spec.js.map +1 -1
  51. package/lib/tests/shiftPlanningTime.spec.d.ts +1 -0
  52. package/lib/tests/shiftPlanningTime.spec.js +90 -0
  53. package/lib/tests/shiftPlanningTime.spec.js.map +1 -0
  54. package/lib/tests/structureMatch.spec.js +42 -0
  55. package/lib/tests/structureMatch.spec.js.map +1 -1
  56. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"customers.service.js","sourceRoot":"","sources":["../../../src/services/customers.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"customers.service.js","sourceRoot":"","sources":["../../../src/services/customers.service.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import { ObjectId, UnorderedBulkOperation, UpdateResult, WithId } from 'mongodb';
2
2
  import Immutable from '../Immutable.class.js';
3
- import { Agreement, AgreementResponse, BasicData, CustomerPersonWithEmail, EmailsContent, History, HistoryReason, HistoryWithType, List, ListParticipants, ListParticipantWithCustomerAndPayment, ObjectIdString, Options, SkipLimitSort, Structure, StructureCondition, UserAppWithOptions } from '@lilaquadrat/interfaces';
3
+ import { Agreement, AgreementResponse, BasicData, CustomerPersonWithEmail, EmailsContent, History, HistoryReason, HistoryWithType, List, ListParticipants, ListParticipantWithCustomerAndPayment, ObjectIdString, Options, PlanningScope, PlanningShiftMembership, ShiftPlanCoverageSummary, ShiftPlanningProjectOptions, ShiftReportContext, SkipLimitSort, Structure, UserAppWithOptions } from '@lilaquadrat/interfaces';
4
4
  import { ValidateFunction } from 'ajv';
5
+ import type { PlanningParticipantsResult } from '../interfaces/PlanningParticipantsResult.js';
6
+ import type { PlanCoveragePreparation } from '../interfaces/PlanCoveragePreparation.js';
5
7
  export declare class ListParticipantsService extends Immutable<ListParticipants> {
6
8
  model: import("../classes/modelv2.class.js").default<ListParticipants, string>;
7
9
  singleForPlanning(list: ObjectId, participant: ObjectId, options: Required<UserAppWithOptions>): Promise<WithId<ListParticipants> | null>;
@@ -11,15 +13,50 @@ export declare class ListParticipantsService extends Immutable<ListParticipants>
11
13
  private resolveParticipantDetails;
12
14
  /** Same entries as participantsForPlanning, resolved with their structure answers and definitions for reporting. */
13
15
  participantsForPlanningWithDetails(participants: ObjectId[], company: string): Promise<ListParticipantWithCustomerAndPayment[]>;
16
+ /** Raw availability and resolved answers share the same reads within one scheduling request. */
17
+ planningParticipantContext(participantIds: ObjectId[], customerIds: ObjectId[], company: string, preparation?: PlanCoveragePreparation): Promise<Pick<ShiftReportContext, 'participants' | 'participantDetails' | 'customers'>>;
14
18
  /**
15
- * Candidates for a list, resolved and scored against a shift's conditions, ordered best-first.
16
- * The ordering happens here so pagination ranks the whole candidate set instead of a single page.
19
+ * Candidates for a list scored against a planning scope, ordered best-first so pagination ranks
20
+ * the whole candidate set. `shift` and `workArea` resolve one condition set and return the pool;
21
+ * `day` and `plan` cover every shift in that scope and return its coverage, unless a membership
22
+ * mode is given, in which case they return the membership-filtered pool.
17
23
  */
18
- planningParticipants(list: ObjectId, conditions: StructureCondition[] | undefined, categories: ObjectId[] | undefined, state: ListParticipants['state'][] | undefined, search: string | undefined, options: Required<UserAppWithOptions> & SkipLimitSort): Promise<{
19
- all: number;
20
- data: ListParticipantWithCustomerAndPayment[];
21
- count: number;
22
- }>;
24
+ planningParticipants(list: ObjectId, scope: PlanningScope, state: ListParticipants['state'][] | undefined, categories: ObjectId[] | undefined, search: string | undefined, options: Required<UserAppWithOptions> & SkipLimitSort,
25
+ /** Optional membership mode; absent makes a day/plan scope return coverage instead of the pool. */
26
+ membership?: PlanningShiftMembership, coverageMode?: 'staffing' | 'matching'): Promise<PlanningParticipantsResult>;
27
+ /** Conditions a scope is scored against; the work area's are used when a shift has none of its own. */
28
+ private scopeConditions;
29
+ /** Participants holding at least one assignment anywhere in the scope's plan; empty when no plan exists. */
30
+ private planMembership;
31
+ private scoringCandidates;
32
+ /** Definitions that matter to one condition set, split by the model they belong to. */
33
+ private scoringStructures;
34
+ /**
35
+ * Scores resolved entries against one condition set and orders the feasible ones first. Unfit
36
+ * candidates fail a required/forbidden constraint, so they rank after every feasible one.
37
+ */
38
+ private scoreEntries;
39
+ /** Resolves the list's entries against one condition set and orders them best-first. */
40
+ private scoredEntries;
41
+ /**
42
+ * Shared reads and ranked candidate pools for a planning scope. The list, its structures, the
43
+ * customer structures and every used work area are read once, and all condition answers and
44
+ * categories are fetched in a single entries query; ranking then happens in memory per shift.
45
+ * Coverage and autofill both build on this, so a scope resolves to the same targets either way.
46
+ */
47
+ prepareShiftPlanning(list: ObjectId, scope: PlanningScope, options: ShiftPlanningProjectOptions): Promise<PlanCoveragePreparation | undefined>;
48
+ /** Diagnostic data shared by a coverage run; the schedule is supplied per allocation step. */
49
+ private coverageReportContext;
50
+ /**
51
+ * Coverage of every shift in the linked (or given) plan or day. Only the plan's own shifts are
52
+ * compared, so collisions with other plans are out of scope.
53
+ */
54
+ private planCoverage;
55
+ /**
56
+ * Cheap answer for the same coverage: whether every shift in the plan can be staffed. Allocation
57
+ * stops at the first shift that cannot be filled, so no per-shift detail is produced.
58
+ */
59
+ planCoverageSummary(list: ObjectId, scope: PlanningScope, options: ShiftPlanningProjectOptions, coverageMode?: 'staffing' | 'matching'): Promise<ShiftPlanCoverageSummary>;
23
60
  customerLookup: ({
24
61
  $lookup: {
25
62
  from: string;
@@ -2,6 +2,9 @@ import { ObjectId } from 'mongodb';
2
2
  import Immutable from '../Immutable.class.js';
3
3
  import ListParticipantsModel from '../models/listsParticipants.model.js';
4
4
  import ListsModel from '../models/lists.model.js';
5
+ import AreaModel from '../models/workAreas.model.js';
6
+ import ShiftModel from '../models/shift.model.js';
7
+ import ShiftPlanModel from '../models/shiftPlan.model.js';
5
8
  import { EditorService, HistoryService, HistorySeenService, ListsService, SpamAnalasysService } from '../../services.js';
6
9
  import CustomersService from './customers.service.js';
7
10
  import hardCopy from '../helpers/hardCopy.js';
@@ -15,18 +18,36 @@ import CustomersModel from '../models/customers.model.js';
15
18
  import ImmutableError from '../classes/errors/Immutable.error.js';
16
19
  import { companyStructuresAggregation, projectStructuresAggregation } from '../aggegations/structures.aggregation.js';
17
20
  import { structureScore } from '../helpers/structureMatch.js';
21
+ import { effectivePolicy } from '../helpers/shiftPlanningTime.js';
22
+ import { boundedPlanningInstant, unavailableParticipantStates } from '../helpers/shiftPlanningReports.js';
23
+ import { allocateShiftCoverage } from '../helpers/shiftPlanCoverage.js';
24
+ import AbsencesService from './employeeAbsences.service.js';
25
+ import SettingsService from './shiftPlanningSettings.service.js';
18
26
  import jetstreamService from './jetstream.service.js';
19
27
  /** Structure answers live on the owning document under `s-` prefixed keys. */
20
28
  function structureAnswers(document) {
21
29
  return Object.fromEntries(Object.entries(document).filter(([key]) => key.startsWith('s-')));
22
30
  }
23
- /** Definitions the document actually answered; customer structures carry no project, list structures do. */
24
- function resolvedStructures(answers, structures, project) {
31
+ /** Definitions the document actually answered. */
32
+ function resolvedStructures(answers, structures) {
25
33
  const answered = new Set(Object.keys(answers));
26
- return structures.filter((structure) => {
27
- const structureProject = structure.project;
28
- return answered.has(structure.id) && (project === undefined ? structureProject === undefined : structureProject === project);
29
- });
34
+ return structures.filter((structure) => answered.has(structure.id));
35
+ }
36
+ /** Keeps the first occurrence of every id, so batched reads receive each document once. */
37
+ function uniqueObjectIds(ids) {
38
+ return [...new Map(ids.map((id) => [id.toHexString(), id])).values()];
39
+ }
40
+ function normalizePlanningScore(score, minimumScore, maximumScore) {
41
+ if (minimumScore === maximumScore)
42
+ return 4;
43
+ const position = (score - minimumScore) / (maximumScore - minimumScore);
44
+ if (position < 0.25)
45
+ return 1;
46
+ if (position < 0.5)
47
+ return 2;
48
+ if (position < 0.75)
49
+ return 3;
50
+ return 4;
30
51
  }
31
52
  export class ListParticipantsService extends Immutable {
32
53
  singleForPlanning(list, participant, options) {
@@ -38,20 +59,36 @@ export class ListParticipantsService extends Immutable {
38
59
  }
39
60
  /** Attaches each participant's answers, their list definitions and the customer's to the entry. */
40
61
  resolveParticipantDetails(entries, customers, listStructures, customerStructures) {
62
+ const listStructuresByProject = new Map();
63
+ for (const structure of listStructures) {
64
+ const projectStructures = listStructuresByProject.get(structure.project);
65
+ if (projectStructures)
66
+ projectStructures.push(structure);
67
+ else
68
+ listStructuresByProject.set(structure.project, [structure]);
69
+ }
70
+ const companyCustomerStructures = customerStructures.filter((structure) => structure.project === undefined);
71
+ const customersById = new Map(customers.map((customer) => {
72
+ const answers = structureAnswers(customer);
73
+ return [customer._id.toHexString(), {
74
+ ...answers,
75
+ name: [customer.name, customer.prename].filter(Boolean).join(', '),
76
+ email: customer.email,
77
+ id: customer.id,
78
+ _id: customer._id,
79
+ structures: resolvedStructures(answers, companyCustomerStructures),
80
+ }];
81
+ }));
41
82
  return entries.map((entry) => {
42
- const customer = customers.find((user) => user._id.equals(entry.user));
83
+ const customer = customersById.get(entry.user.toHexString());
43
84
  const answers = structureAnswers(entry);
44
85
  return {
45
86
  ...answers,
46
87
  ...entry,
47
- structures: resolvedStructures(answers, listStructures, entry.project),
88
+ structures: resolvedStructures(answers, listStructuresByProject.get(entry.project) ?? []),
48
89
  user: customer ? {
49
- ...structureAnswers(customer),
50
- name: [customer.name, customer.prename].filter(Boolean).join(', '),
51
- email: customer.email,
52
- id: customer.id,
53
- _id: customer._id,
54
- structures: resolvedStructures(structureAnswers(customer), customerStructures, undefined),
90
+ ...customer,
91
+ structures: [...customer.structures],
55
92
  } : undefined,
56
93
  };
57
94
  });
@@ -60,46 +97,290 @@ export class ListParticipantsService extends Immutable {
60
97
  async participantsForPlanningWithDetails(participants, company) {
61
98
  if (!participants.length)
62
99
  return [];
63
- const entries = await this.model.db.find({ _id: { $in: participants }, company }).toArray();
64
- const customers = await CustomersService.peopleForPlanning(entries.map((entry) => entry.user), company);
65
- const listStructures = await StructureService.byModelAndCompany('listsParticipants', company);
66
- const customerStructures = await StructureService.byModelAndCompany('customers', company);
67
- return this.resolveParticipantDetails(entries, customers, listStructures, customerStructures);
100
+ return (await this.planningParticipantContext(participants, [], company)).participantDetails;
101
+ }
102
+ /** Raw availability and resolved answers share the same reads within one scheduling request. */
103
+ async planningParticipantContext(participantIds, customerIds, company, preparation) {
104
+ const participants = participantIds.length ? await this.participantsForPlanning(uniqueObjectIds(participantIds), company) : [];
105
+ const canReuseListStructures = preparation && participants.every((participant) => participant.project === preparation.plan.project);
106
+ const [customers, listStructures, customerStructures] = await Promise.all([
107
+ CustomersService.peopleForPlanning(uniqueObjectIds([...customerIds, ...participants.map((participant) => participant.user)]), company),
108
+ canReuseListStructures ? preparation.listStructures : StructureService.byModelAndCompany('listsParticipants', company),
109
+ preparation ? preparation.customerStructures : StructureService.byModelAndCompany('customers', company),
110
+ ]);
111
+ return { participants, customers, participantDetails: this.resolveParticipantDetails(participants, customers, listStructures, customerStructures) };
68
112
  }
69
113
  /**
70
- * Candidates for a list, resolved and scored against a shift's conditions, ordered best-first.
71
- * The ordering happens here so pagination ranks the whole candidate set instead of a single page.
114
+ * Candidates for a list scored against a planning scope, ordered best-first so pagination ranks
115
+ * the whole candidate set. `shift` and `workArea` resolve one condition set and return the pool;
116
+ * `day` and `plan` cover every shift in that scope and return its coverage, unless a membership
117
+ * mode is given, in which case they return the membership-filtered pool.
72
118
  */
73
- async planningParticipants(list, conditions, categories, state, search, options) {
119
+ async planningParticipants(list, scope, state, categories, search, options,
120
+ /** Optional membership mode; absent makes a day/plan scope return coverage instead of the pool. */
121
+ membership, coverageMode = 'matching') {
122
+ // A membership mode asks for a candidate pool, so only an unfiltered day/plan scope returns coverage.
123
+ if ((scope.level === 'day' || scope.level === 'plan') && !membership) {
124
+ const coverage = await this.planCoverage(list, scope, options, coverageMode);
125
+ return coverage ? { all: 0, data: [], count: 0, coverage } : { all: 0, data: [], count: 0 };
126
+ }
127
+ const scored = await this.scoringCandidates(list, scope, state, categories, search, options);
128
+ if (!scored.length)
129
+ return { all: 0, data: [], count: 0 };
130
+ // Membership is a plan-level property applied to the ranked pool; `all` keeps everyone.
131
+ let candidates = scored;
132
+ if (membership && membership !== 'all') {
133
+ const members = await this.planMembership(scope, list, options);
134
+ candidates = scored.filter((candidate) => members.has(candidate._id.toHexString()) === (membership === 'assigned'));
135
+ }
136
+ if (!candidates.length)
137
+ return { all: 0, data: [], count: 0 };
138
+ let minimumScore = Infinity;
139
+ let maximumScore = -Infinity;
140
+ for (const candidate of candidates) {
141
+ minimumScore = Math.min(minimumScore, candidate.match.score);
142
+ maximumScore = Math.max(maximumScore, candidate.match.score);
143
+ }
144
+ const data = candidates.slice(options.skip, options.skip + options.limit).map((participant) => ({
145
+ _id: participant._id,
146
+ category: participant.category,
147
+ state: participant.state,
148
+ match: { ...participant.match, normalizedScore: normalizePlanningScore(participant.match.score, minimumScore, maximumScore) },
149
+ user: participant.user ? {
150
+ _id: participant.user._id,
151
+ id: participant.user.id,
152
+ name: participant.user.name,
153
+ email: participant.user.email,
154
+ } : undefined,
155
+ }));
156
+ return { all: candidates.length, data, count: data.length };
157
+ }
158
+ /** Conditions a scope is scored against; the work area's are used when a shift has none of its own. */
159
+ async scopeConditions(scope, options) {
74
160
  const company = options.company;
75
161
  const project = options.project;
76
- const stateFilter = state?.length
77
- ? { $in: state }
78
- : { $nin: ['blocked', 'unchecked', 'notuseful'] };
162
+ const shift = scope.shift
163
+ ? await ShiftModel.db.findOne({ _id: scope.shift, company, project }, { projection: { structures: 1 } })
164
+ : undefined;
165
+ if (shift?.structures?.length)
166
+ return shift.structures;
167
+ if (!scope.workArea)
168
+ return [];
169
+ const area = await AreaModel.db.findOne({ _id: scope.workArea, company, project }, { projection: { structures: 1 } });
170
+ return area?.structures ?? [];
171
+ }
172
+ /** Participants holding at least one assignment anywhere in the scope's plan; empty when no plan exists. */
173
+ async planMembership(scope, list, options) {
174
+ const company = options.company;
175
+ const project = options.project;
176
+ // A shift knows its plan directly; other scopes fall back to the list's linked plan.
177
+ const plan = scope.plan ?? (scope.shift
178
+ ? (await ShiftModel.db.findOne({ _id: scope.shift, company, project }, { projection: { plan: 1 } }))?.plan
179
+ : (await ListsService.singleForPlanning(list, options))?.shiftPlan);
180
+ if (!plan)
181
+ return new Set();
182
+ const shifts = await ShiftModel.db
183
+ .find({ company, project, plan }, { projection: { assignments: 1 } })
184
+ .toArray();
185
+ return new Set(shifts.flatMap((shift) => shift.assignments.map((assignment) => assignment.participant.toHexString())));
186
+ }
187
+ async scoringCandidates(list, scope, state, categories, search, options) {
79
188
  let categoryFilter;
80
189
  if (categories?.length) {
81
190
  // Participants store the list category's `id`; the plan binds its `_id`, so resolve here.
82
191
  const listDocument = await ListsService.singleForPlanning(list, options);
83
192
  const requested = new Set(categories.map((category) => category.toHexString()));
84
- categoryFilter = { $in: (listDocument?.categories ?? []).filter((category) => requested.has(category._id.toHexString())).map((category) => category.id) };
193
+ const ids = (listDocument?.categories ?? []).filter((category) => requested.has(category._id.toHexString())).map((category) => category.id);
194
+ if (!ids.length)
195
+ return [];
196
+ categoryFilter = { $in: ids };
85
197
  }
198
+ // Conditions are only resolved once a requested category exists, so no-op filters skip the queries.
199
+ const conditions = await this.scopeConditions(scope, options);
200
+ return this.scoredEntries(list, conditions, state, categoryFilter, search, options);
201
+ }
202
+ /** Definitions that matter to one condition set, split by the model they belong to. */
203
+ scoringStructures(conditions, listStructures, customerStructures) {
204
+ const ids = new Set(conditions.map((condition) => condition.structure));
205
+ return {
206
+ list: listStructures.filter((structure) => ids.has(structure._id.toHexString())),
207
+ customer: customerStructures.filter((structure) => structure.project === undefined && ids.has(structure._id.toHexString())),
208
+ };
209
+ }
210
+ /**
211
+ * Scores resolved entries against one condition set and orders the feasible ones first. Unfit
212
+ * candidates fail a required/forbidden constraint, so they rank after every feasible one.
213
+ */
214
+ scoreEntries(entries, customers, conditions, listStructures, customerStructures) {
215
+ return this.resolveParticipantDetails(entries, customers, listStructures, customerStructures)
216
+ .map((participant) => ({ ...participant, match: structureScore(conditions, participant) }))
217
+ // Stable descending sort keeps the `_id` order from the query for equal scores.
218
+ .sort((left, right) => (left.match.state === 'unfit' ? 1 : 0) - (right.match.state === 'unfit' ? 1 : 0) || right.match.score - left.match.score);
219
+ }
220
+ /** Resolves the list's entries against one condition set and orders them best-first. */
221
+ async scoredEntries(list, conditions, state, categoryFilter, search, options) {
222
+ const company = options.company;
223
+ const project = options.project;
224
+ const stateFilter = state?.length
225
+ ? { $in: state }
226
+ : { $nin: ['blocked', 'unchecked', 'notuseful'] };
227
+ const [listStructures, customerStructures] = await Promise.all([
228
+ StructureService.getByModel('listsParticipants', { company, project }),
229
+ StructureService.byModelAndCompany('customers', company),
230
+ ]);
231
+ const scoring = this.scoringStructures(conditions, listStructures, customerStructures);
232
+ const answerProjection = Object.fromEntries([...scoring.list, ...scoring.customer].map((structure) => [structure.id, 1]));
86
233
  const entries = await this.model.db
87
- .find({ list, company, project, state: stateFilter, ...(categoryFilter ? { category: categoryFilter } : {}) })
234
+ .find({ list, company, project, state: stateFilter, ...(categoryFilter ? { category: categoryFilter } : {}) }, {
235
+ projection: { _id: 1, user: 1, project: 1, category: 1, state: 1, ...answerProjection },
236
+ })
88
237
  .sort({ _id: 1 })
89
238
  .toArray();
90
- const customers = await CustomersService.peopleForPlanning(entries.map((entry) => entry.user), company);
91
- const listStructures = await StructureService.byModelAndCompany('listsParticipants', company);
92
- const customerStructures = await StructureService.byModelAndCompany('customers', company);
93
- const scored = this.resolveParticipantDetails(entries, customers, listStructures, customerStructures)
94
- .map((participant) => ({ ...participant, match: structureScore(conditions, participant) }));
239
+ if (!entries.length)
240
+ return [];
241
+ const customerIds = [...new Map(entries.map((entry) => [entry.user.toHexString(), entry.user])).values()];
242
+ const customers = await CustomersService.peopleForPlanning(customerIds, company, {
243
+ _id: 1, id: 1, name: 1, prename: 1, email: 1, ...answerProjection,
244
+ });
95
245
  const term = search?.trim().toLowerCase();
96
- const candidates = term
97
- ? scored.filter((participant) => participant.user?.name?.toLowerCase().includes(term))
98
- : scored;
99
- // Stable descending sort keeps the `_id` order from the query for equal scores.
100
- candidates.sort((left, right) => (right.match?.score ?? 0) - (left.match?.score ?? 0));
101
- const data = candidates.slice(options.skip, options.skip + options.limit);
102
- return { all: candidates.length, data, count: data.length };
246
+ const matchingCustomers = term
247
+ ? customers.filter((customer) => [customer.name, customer.prename].filter(Boolean).join(', ').toLowerCase().includes(term))
248
+ : customers;
249
+ const matchingCustomerIds = term ? new Set(matchingCustomers.map((customer) => customer._id.toHexString())) : undefined;
250
+ const matchingEntries = matchingCustomerIds ? entries.filter((entry) => matchingCustomerIds.has(entry.user.toHexString())) : entries;
251
+ if (!matchingEntries.length)
252
+ return [];
253
+ return this.scoreEntries(matchingEntries, matchingCustomers, conditions, scoring.list, scoring.customer);
254
+ }
255
+ /**
256
+ * Shared reads and ranked candidate pools for a planning scope. The list, its structures, the
257
+ * customer structures and every used work area are read once, and all condition answers and
258
+ * categories are fetched in a single entries query; ranking then happens in memory per shift.
259
+ * Coverage and autofill both build on this, so a scope resolves to the same targets either way.
260
+ */
261
+ async prepareShiftPlanning(list, scope, options) {
262
+ const company = options.company;
263
+ const project = options.project;
264
+ const planId = scope.plan ?? (await ListsService.singleForPlanning(list, options))?.shiftPlan;
265
+ if (!planId)
266
+ return undefined;
267
+ const plan = await ShiftPlanModel.db.findOne({ _id: planId, company, project });
268
+ if (!plan)
269
+ return undefined;
270
+ const shifts = await ShiftModel.db.find({ company, project, plan: plan._id }).sort({ start: 1, _id: 1 }).toArray();
271
+ // A work area or a single shift narrows the targets; the plan's full shifts stay the conflict scope.
272
+ const reportShifts = scope.shift ? shifts.filter((shift) => shift._id.equals(scope.shift))
273
+ : scope.workArea ? shifts.filter((shift) => shift.area.equals(scope.workArea))
274
+ : scope.day ? shifts.filter((shift) => shift.day.equals(scope.day))
275
+ : shifts;
276
+ const participantIds = shifts.flatMap((shift) => shift.assignments.map((assignment) => assignment.participant));
277
+ const customerIds = shifts.flatMap((shift) => shift.assignments.map((assignment) => assignment.customer));
278
+ if (!reportShifts.length)
279
+ return { plan, shifts, targets: [], participantIds, customerIds, settings: null, listStructures: [], customerStructures: [] };
280
+ const settings = await SettingsService.singleSettings(options);
281
+ if (!effectivePolicy(settings?.settings, plan.settingsOverrides))
282
+ throw new ImmutableError('SHIFT_PLANNING_SETTINGS_NOT_CONFIGURED');
283
+ const [listDocument, listStructures, customerStructures, areas] = await Promise.all([
284
+ ListsService.singleForPlanning(list, options),
285
+ StructureService.getByModel('listsParticipants', { company, project }),
286
+ StructureService.byModelAndCompany('customers', company),
287
+ AreaModel.db.find({ _id: { $in: uniqueObjectIds(reportShifts.map((shift) => shift.area)) }, company, project }).toArray(),
288
+ ]);
289
+ const areaStructuresById = new Map(areas.map((area) => [area._id.toHexString(), area.structures ?? []]));
290
+ const categoryStringById = new Map((listDocument?.categories ?? []).map((category) => [category._id.toHexString(), category.id]));
291
+ const bindings = plan.workAreaCategories ?? [];
292
+ const prepared = reportShifts.map((shift) => {
293
+ const conditions = shift.structures?.length ? shift.structures : (areaStructuresById.get(shift.area.toHexString()) ?? []);
294
+ // A binding carries list category `_id`s; participants store the categories' `id`.
295
+ const binding = bindings.find((entry) => entry.area.equals(shift.area))?.categoryIds;
296
+ const categoryStrings = binding?.length
297
+ ? new Set(binding.map((id) => categoryStringById.get(id.toHexString())).filter((id) => id !== undefined))
298
+ : null;
299
+ return { shift, conditions, categoryStrings };
300
+ });
301
+ const usedStructures = this.scoringStructures(prepared.flatMap((entry) => entry.conditions), listStructures, customerStructures);
302
+ const answerProjection = Object.fromEntries([...usedStructures.list, ...usedStructures.customer].map((structure) => [structure.id, 1]));
303
+ const anyUnbound = prepared.some((entry) => entry.categoryStrings === null);
304
+ const boundCategories = new Set();
305
+ for (const entry of prepared)
306
+ if (entry.categoryStrings)
307
+ for (const id of entry.categoryStrings)
308
+ boundCategories.add(id);
309
+ const state = plan.defaultParticipantState ? [plan.defaultParticipantState] : undefined;
310
+ const stateFilter = state?.length
311
+ ? { $in: state }
312
+ : { $nin: ['blocked', 'unchecked', 'notuseful'] };
313
+ const entries = await this.model.db
314
+ .find({ list, company, project, state: stateFilter, ...(anyUnbound ? {} : { category: { $in: [...boundCategories] } }) }, {
315
+ projection: { _id: 1, user: 1, project: 1, category: 1, state: 1, ...answerProjection },
316
+ })
317
+ .sort({ _id: 1 })
318
+ .toArray();
319
+ const resolvedCustomers = entries.length
320
+ ? await CustomersService.peopleForPlanning(uniqueObjectIds(entries.map((entry) => entry.user)), company, {
321
+ _id: 1, id: 1, name: 1, prename: 1, email: 1, ...answerProjection,
322
+ })
323
+ : [];
324
+ const targets = prepared.map((entry) => {
325
+ const matching = entry.categoryStrings
326
+ ? entries.filter((candidate) => candidate.category !== undefined && entry.categoryStrings.has(candidate.category))
327
+ : entries;
328
+ const scoring = this.scoringStructures(entry.conditions, listStructures, customerStructures);
329
+ // Cancelled entries are still returned for the shift editor; coverage only counts usable people.
330
+ const ranked = this.scoreEntries(matching, resolvedCustomers, entry.conditions, scoring.list, scoring.customer)
331
+ .filter((candidate) => !unavailableParticipantStates.has(candidate.state));
332
+ participantIds.push(...ranked.map((candidate) => candidate._id));
333
+ customerIds.push(...ranked.flatMap((candidate) => candidate.user?._id ? [candidate.user._id] : []));
334
+ return {
335
+ shift: entry.shift,
336
+ conditions: entry.conditions,
337
+ candidates: ranked.flatMap((candidate) => candidate.user?._id
338
+ ? [{ participant: candidate._id, customer: candidate.user._id, matching: candidate.match.state === 'fulfilled' }]
339
+ : []),
340
+ };
341
+ });
342
+ return { plan, shifts, targets, participantIds, customerIds, settings, listStructures, customerStructures };
343
+ }
344
+ /** Diagnostic data shared by a coverage run; the schedule is supplied per allocation step. */
345
+ async coverageReportContext(preparation, options) {
346
+ const participantIds = uniqueObjectIds(preparation.participantIds);
347
+ const customerIds = uniqueObjectIds(preparation.customerIds);
348
+ const starts = preparation.shifts.map((shift) => Date.parse(shift.start));
349
+ const ends = preparation.shifts.map((shift) => Date.parse(shift.end));
350
+ const [people, absences] = await Promise.all([
351
+ this.planningParticipantContext(participantIds, customerIds, options.company, preparation),
352
+ AbsencesService.absencesForPlanning(customerIds, boundedPlanningInstant(Math.min(...starts)), boundedPlanningInstant(Math.max(...ends)), options),
353
+ ]);
354
+ return { plans: [preparation.plan], settings: preparation.settings?.settings, absences, ...people };
355
+ }
356
+ /**
357
+ * Coverage of every shift in the linked (or given) plan or day. Only the plan's own shifts are
358
+ * compared, so collisions with other plans are out of scope.
359
+ */
360
+ async planCoverage(list, scope, options, coverageMode) {
361
+ const preparation = await this.prepareShiftPlanning(list, scope, options);
362
+ if (!preparation)
363
+ return undefined;
364
+ const level = scope.day ? 'day' : 'plan';
365
+ if (!preparation.targets.length)
366
+ return { level, plan: preparation.plan._id, shifts: [], totalShifts: 0, fillableShifts: 0, fillable: true };
367
+ const context = await this.coverageReportContext(preparation, options);
368
+ const allocation = allocateShiftCoverage(preparation.shifts, preparation.targets, context, false, coverageMode);
369
+ const fillableShifts = allocation.coverage.filter((entry) => entry.fillable).length;
370
+ return { level, plan: preparation.plan._id, shifts: allocation.coverage, totalShifts: allocation.coverage.length, fillableShifts, fillable: allocation.fillable };
371
+ }
372
+ /**
373
+ * Cheap answer for the same coverage: whether every shift in the plan can be staffed. Allocation
374
+ * stops at the first shift that cannot be filled, so no per-shift detail is produced.
375
+ */
376
+ async planCoverageSummary(list, scope, options, coverageMode = 'matching') {
377
+ const preparation = await this.prepareShiftPlanning(list, scope, options);
378
+ if (!preparation)
379
+ return { fillable: false };
380
+ if (!preparation.targets.length)
381
+ return { fillable: true };
382
+ const context = await this.coverageReportContext(preparation, options);
383
+ return { fillable: allocateShiftCoverage(preparation.shifts, preparation.targets, context, true, coverageMode).fillable };
103
384
  }
104
385
  constructor(connectionString, accountName, queue) {
105
386
  super();