@goxtechnologies/connectwise-psa-mcp 1.3.0 → 1.4.2

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 (58) hide show
  1. package/data/reports.json +29 -0
  2. package/dist/index.js +4 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/operations/analytics-extended.d.ts.map +1 -1
  5. package/dist/operations/analytics-extended.js +15 -4
  6. package/dist/operations/analytics-extended.js.map +1 -1
  7. package/dist/operations/analytics-msp-schedule.js +12 -2
  8. package/dist/operations/analytics-msp-schedule.js.map +1 -1
  9. package/dist/operations/analytics-msp-time-entry.d.ts +68 -0
  10. package/dist/operations/analytics-msp-time-entry.d.ts.map +1 -0
  11. package/dist/operations/analytics-msp-time-entry.js +235 -0
  12. package/dist/operations/analytics-msp-time-entry.js.map +1 -0
  13. package/dist/operations/analytics-msp-time.js +27 -8
  14. package/dist/operations/analytics-msp-time.js.map +1 -1
  15. package/dist/operations/analytics.d.ts.map +1 -1
  16. package/dist/operations/analytics.js +2 -0
  17. package/dist/operations/analytics.js.map +1 -1
  18. package/dist/operations/registry.d.ts.map +1 -1
  19. package/dist/operations/registry.js +1 -0
  20. package/dist/operations/registry.js.map +1 -1
  21. package/dist/scrapers/index.d.ts +4 -0
  22. package/dist/scrapers/index.d.ts.map +1 -0
  23. package/dist/scrapers/index.js +10 -0
  24. package/dist/scrapers/index.js.map +1 -0
  25. package/dist/scrapers/reports.d.ts +3 -0
  26. package/dist/scrapers/reports.d.ts.map +1 -0
  27. package/dist/scrapers/reports.js +443 -0
  28. package/dist/scrapers/reports.js.map +1 -0
  29. package/dist/services/load-env.d.ts.map +1 -1
  30. package/dist/services/load-env.js +11 -1
  31. package/dist/services/load-env.js.map +1 -1
  32. package/dist/services/report-cache.d.ts +16 -0
  33. package/dist/services/report-cache.d.ts.map +1 -0
  34. package/dist/services/report-cache.js +230 -0
  35. package/dist/services/report-cache.js.map +1 -0
  36. package/dist/services/report-config.d.ts +28 -0
  37. package/dist/services/report-config.d.ts.map +1 -0
  38. package/dist/services/report-config.js +127 -0
  39. package/dist/services/report-config.js.map +1 -0
  40. package/dist/services/totp.d.ts +27 -0
  41. package/dist/services/totp.d.ts.map +1 -0
  42. package/dist/services/totp.js +76 -0
  43. package/dist/services/totp.js.map +1 -0
  44. package/dist/services/web-scraper.d.ts +76 -0
  45. package/dist/services/web-scraper.d.ts.map +1 -0
  46. package/dist/services/web-scraper.js +435 -0
  47. package/dist/services/web-scraper.js.map +1 -0
  48. package/dist/tools/reports.d.ts +9 -0
  49. package/dist/tools/reports.d.ts.map +1 -0
  50. package/dist/tools/reports.js +388 -0
  51. package/dist/tools/reports.js.map +1 -0
  52. package/dist/tools/validation.js +2 -2
  53. package/dist/tools/validation.js.map +1 -1
  54. package/dist/types/reports.d.ts +87 -0
  55. package/dist/types/reports.d.ts.map +1 -0
  56. package/dist/types/reports.js +3 -0
  57. package/dist/types/reports.js.map +1 -0
  58. package/package.json +18 -4
@@ -0,0 +1,68 @@
1
+ import { type CWObj, type MspHandler } from './analytics-msp-utils.js';
2
+ export declare const mspTimeEntryHandlers: Record<string, MspHandler>;
3
+ /** Valid ConnectWise hoursDeduct values. */
4
+ export declare const VALID_DEDUCTS: readonly number[];
5
+ /**
6
+ * Parse an "HH:MM" string to minutes since midnight for easy comparison.
7
+ * Exported for internal use by other modules if needed.
8
+ */
9
+ export declare function timeToMinutes(hhmm: string): number;
10
+ /**
11
+ * Find schedule entries that are not covered by any existing time entry.
12
+ *
13
+ * A schedule entry is "covered" when an existing time entry:
14
+ * - Has the same chargeToId as the schedule entry's objectId, AND
15
+ * - Its time range covers the full schedule range (teStart <= schStart AND teEnd >= schEnd).
16
+ *
17
+ * @param schedule Array of schedule entry objects (CWObj with objectId, dateStart, dateEnd)
18
+ * @param existing Array of existing time entry objects (CWObj with chargeToId, timeStart, timeEnd)
19
+ * @returns Schedule entries that have no covering time entry
20
+ */
21
+ export declare function findUnloggedSlots(schedule: CWObj[], existing: CWObj[]): CWObj[];
22
+ /**
23
+ * Detect existing time entries that overlap with a proposed time range.
24
+ *
25
+ * Two intervals [a,b) and [c,d) overlap when max(a,c) < min(b,d).
26
+ * Touching endpoints (b === c) are NOT considered an overlap.
27
+ *
28
+ * @param proposedStart Start time as "HH:MM" in local timezone
29
+ * @param proposedEnd End time as "HH:MM" in local timezone
30
+ * @param existing Array of existing time entry objects with timeStart/timeEnd ISO strings
31
+ * @returns Array of overlap descriptors with overlapStart, overlapEnd, durationMinutes, entryId
32
+ */
33
+ export declare function detectOverlaps(proposedStart: string, proposedEnd: string, existing: CWObj[]): Array<{
34
+ entryId: number;
35
+ overlapStart: string;
36
+ overlapEnd: string;
37
+ durationMinutes: number;
38
+ }>;
39
+ /**
40
+ * Round a deduct value to the nearest valid ConnectWise hoursDeduct enum value.
41
+ *
42
+ * @param value Raw decimal deduct in hours
43
+ * @returns The VALID_DEDUCTS value with minimum absolute difference from input
44
+ */
45
+ export declare function roundDeduct(value: number): number;
46
+ /**
47
+ * Pattern descriptor returned by buildRecentPatterns.
48
+ */
49
+ export interface RecentPattern {
50
+ company: string;
51
+ companyId: number;
52
+ workType: string;
53
+ workRole: string;
54
+ chargeCode: string;
55
+ agreementName: string;
56
+ agreementId: number;
57
+ count: number;
58
+ }
59
+ /**
60
+ * Group recent time entries by company and extract the default work pattern
61
+ * (workType, workRole, chargeCode, agreement) from the most recent entry for
62
+ * each company. Sorted by occurrence count descending.
63
+ *
64
+ * @param entries Recent time entries (CWObj array)
65
+ * @returns Array of RecentPattern sorted by count descending
66
+ */
67
+ export declare function buildRecentPatterns(entries: CWObj[]): RecentPattern[];
68
+ //# sourceMappingURL=analytics-msp-time-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-msp-time-entry.d.ts","sourceRoot":"","sources":["../../src/operations/analytics-msp-time-entry.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,KAAK,EAEV,KAAK,UAAU,EAKhB,MAAM,0BAA0B,CAAC;AAGlC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAM,CAAC;AAOnE,4CAA4C;AAC5C,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAA6D,CAAC;AAMzG;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAiB/E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,KAAK,EAAE,GAChB,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC,CA4B/F;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWjD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,aAAa,EAAE,CA0BrE"}
@@ -0,0 +1,235 @@
1
+ // ConnectWise PSA MCP Server — MSP Analytics: Time Entry Prepare Handler
2
+ // Computes schedule gaps, overlap detection, and recent patterns to help
3
+ // pre-fill new time entry drafts without requiring live API calls in pure fns.
4
+ import { getAPI } from '../services/connectwise-api.js';
5
+ import { nested, safeHandler, settledWarning, truncationWarning, } from './analytics-msp-utils.js';
6
+ import { toLocalTime, localToday } from '../utils/timezone.js';
7
+ export const mspTimeEntryHandlers = {};
8
+ function reg(name, handler) { mspTimeEntryHandlers[name] = handler; }
9
+ // ---------------------------------------------------------------------------
10
+ // Constants
11
+ // ---------------------------------------------------------------------------
12
+ /** Valid ConnectWise hoursDeduct values. */
13
+ export const VALID_DEDUCTS = [0, 0.08, 0.25, 0.5, 0.75, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0];
14
+ // ---------------------------------------------------------------------------
15
+ // Pure exported functions (tested independently, no API calls)
16
+ // ---------------------------------------------------------------------------
17
+ /**
18
+ * Parse an "HH:MM" string to minutes since midnight for easy comparison.
19
+ * Exported for internal use by other modules if needed.
20
+ */
21
+ export function timeToMinutes(hhmm) {
22
+ const match = hhmm.match(/^(\d{1,2}):(\d{2})$/);
23
+ if (!match)
24
+ return 0;
25
+ return parseInt(match[1], 10) * 60 + parseInt(match[2], 10);
26
+ }
27
+ /**
28
+ * Find schedule entries that are not covered by any existing time entry.
29
+ *
30
+ * A schedule entry is "covered" when an existing time entry:
31
+ * - Has the same chargeToId as the schedule entry's objectId, AND
32
+ * - Its time range covers the full schedule range (teStart <= schStart AND teEnd >= schEnd).
33
+ *
34
+ * @param schedule Array of schedule entry objects (CWObj with objectId, dateStart, dateEnd)
35
+ * @param existing Array of existing time entry objects (CWObj with chargeToId, timeStart, timeEnd)
36
+ * @returns Schedule entries that have no covering time entry
37
+ */
38
+ export function findUnloggedSlots(schedule, existing) {
39
+ return schedule.filter((sch) => {
40
+ const ticketId = Number(sch['objectId']);
41
+ const schStart = toLocalTime(String(sch['dateStart'] ?? ''));
42
+ const schEnd = toLocalTime(String(sch['dateEnd'] ?? ''));
43
+ const schStartMin = timeToMinutes(schStart);
44
+ const schEndMin = timeToMinutes(schEnd);
45
+ return !existing.some((te) => {
46
+ if (Number(te['chargeToId']) !== ticketId)
47
+ return false;
48
+ const teStart = toLocalTime(String(te['timeStart'] ?? ''));
49
+ const teEnd = toLocalTime(String(te['timeEnd'] ?? ''));
50
+ const teStartMin = timeToMinutes(teStart);
51
+ const teEndMin = timeToMinutes(teEnd);
52
+ return teStartMin <= schStartMin && teEndMin >= schEndMin;
53
+ });
54
+ });
55
+ }
56
+ /**
57
+ * Detect existing time entries that overlap with a proposed time range.
58
+ *
59
+ * Two intervals [a,b) and [c,d) overlap when max(a,c) < min(b,d).
60
+ * Touching endpoints (b === c) are NOT considered an overlap.
61
+ *
62
+ * @param proposedStart Start time as "HH:MM" in local timezone
63
+ * @param proposedEnd End time as "HH:MM" in local timezone
64
+ * @param existing Array of existing time entry objects with timeStart/timeEnd ISO strings
65
+ * @returns Array of overlap descriptors with overlapStart, overlapEnd, durationMinutes, entryId
66
+ */
67
+ export function detectOverlaps(proposedStart, proposedEnd, existing) {
68
+ const pStart = timeToMinutes(proposedStart);
69
+ const pEnd = timeToMinutes(proposedEnd);
70
+ const overlaps = [];
71
+ for (const te of existing) {
72
+ const teStartIso = String(te['timeStart'] ?? '');
73
+ const teEndIso = String(te['timeEnd'] ?? '');
74
+ if (!teStartIso || !teEndIso)
75
+ continue;
76
+ const teStart = timeToMinutes(toLocalTime(teStartIso));
77
+ const teEnd = timeToMinutes(toLocalTime(teEndIso));
78
+ const overlapStartMin = Math.max(pStart, teStart);
79
+ const overlapEndMin = Math.min(pEnd, teEnd);
80
+ if (overlapStartMin >= overlapEndMin)
81
+ continue;
82
+ const durationMinutes = overlapEndMin - overlapStartMin;
83
+ overlaps.push({
84
+ entryId: Number(te['id'] ?? 0),
85
+ overlapStart: minutesToHHMM(overlapStartMin),
86
+ overlapEnd: minutesToHHMM(overlapEndMin),
87
+ durationMinutes,
88
+ });
89
+ }
90
+ return overlaps;
91
+ }
92
+ /**
93
+ * Round a deduct value to the nearest valid ConnectWise hoursDeduct enum value.
94
+ *
95
+ * @param value Raw decimal deduct in hours
96
+ * @returns The VALID_DEDUCTS value with minimum absolute difference from input
97
+ */
98
+ export function roundDeduct(value) {
99
+ let best = VALID_DEDUCTS[0];
100
+ let bestDiff = Math.abs(value - best);
101
+ for (const v of VALID_DEDUCTS) {
102
+ const diff = Math.abs(value - v);
103
+ if (diff < bestDiff) {
104
+ bestDiff = diff;
105
+ best = v;
106
+ }
107
+ }
108
+ return best;
109
+ }
110
+ /**
111
+ * Group recent time entries by company and extract the default work pattern
112
+ * (workType, workRole, chargeCode, agreement) from the most recent entry for
113
+ * each company. Sorted by occurrence count descending.
114
+ *
115
+ * @param entries Recent time entries (CWObj array)
116
+ * @returns Array of RecentPattern sorted by count descending
117
+ */
118
+ export function buildRecentPatterns(entries) {
119
+ const byCompany = new Map();
120
+ for (const entry of entries) {
121
+ const companyName = nested(entry, 'company', 'name');
122
+ const companyId = Number(entry['company']?.['id'] ?? 0);
123
+ const workType = nested(entry, 'workType', 'name');
124
+ const workRole = nested(entry, 'workRole', 'name');
125
+ const chargeCode = nested(entry, 'chargeCode', 'name');
126
+ const agreementName = nested(entry, 'agreement', 'name');
127
+ const agreementId = Number(entry['agreement']?.['id'] ?? 0);
128
+ const existing = byCompany.get(companyName);
129
+ if (existing) {
130
+ existing.count++;
131
+ }
132
+ else {
133
+ byCompany.set(companyName, {
134
+ count: 1,
135
+ pattern: { company: companyName, companyId, workType, workRole, chargeCode, agreementName, agreementId, count: 1 },
136
+ });
137
+ }
138
+ }
139
+ return Array.from(byCompany.values())
140
+ .map(({ pattern, count }) => ({ ...pattern, count }))
141
+ .sort((a, b) => b.count - a.count);
142
+ }
143
+ // ---------------------------------------------------------------------------
144
+ // Internal helpers
145
+ // ---------------------------------------------------------------------------
146
+ /** Convert minutes since midnight to "HH:MM" string. */
147
+ function minutesToHHMM(minutes) {
148
+ const h = Math.floor(minutes / 60).toString().padStart(2, '0');
149
+ const m = (minutes % 60).toString().padStart(2, '0');
150
+ return `${h}:${m}`;
151
+ }
152
+ // ---------------------------------------------------------------------------
153
+ // Main analytics handler
154
+ // ---------------------------------------------------------------------------
155
+ reg('timeEntryPrepare', safeHandler('timeEntryPrepare', async (params) => {
156
+ const api = getAPI();
157
+ const memberIdentifier = String(params['member_identifier'] ?? '');
158
+ const date = String(params['date'] ?? localToday());
159
+ // Build conditions for the target date
160
+ const dateCondition = `dateStart>=[${date}T00:00:00Z] and dateStart<[${date}T23:59:59Z]`;
161
+ const memberCondition = memberIdentifier
162
+ ? ` and member/identifier="${memberIdentifier}"`
163
+ : '';
164
+ const scheduleConditions = `${dateCondition}${memberCondition}`;
165
+ // Recent entries for pattern detection (last 30 entries)
166
+ const recentConditions = memberIdentifier
167
+ ? `member/identifier="${memberIdentifier}"`
168
+ : undefined;
169
+ const [scheduleResult, recentResult] = await Promise.allSettled([
170
+ api.paginatedFetch('/schedule/entries', scheduleConditions, 'id,objectId,type,name,dateStart,dateEnd,status,member'),
171
+ api.paginatedFetch('/time/entries', recentConditions, 'id,chargeToId,chargeToType,member,company,workType,workRole,chargeCode,agreement,timeStart,timeEnd'),
172
+ ]);
173
+ const warning = settledWarning([scheduleResult, recentResult], 'API requests');
174
+ const schedule = scheduleResult.status === 'fulfilled' ? scheduleResult.value.items : [];
175
+ const recent = recentResult.status === 'fulfilled' ? recentResult.value.items : [];
176
+ // Filter recent to service ticket entries only, take last 50 for pattern analysis
177
+ const recentServiceEntries = recent
178
+ .filter((e) => String(e['chargeToType']) === 'ServiceTicket')
179
+ .slice(0, 50);
180
+ // For each schedule entry, fetch existing time entries to check coverage
181
+ const serviceSchedule = schedule.filter((s) => nested(s, 'type', 'identifier') === 'S');
182
+ // Get time entries for the day to check coverage
183
+ const dayConditions = `timeStart>=[${date}T00:00:00Z] and timeStart<[${date}T23:59:59Z]${memberIdentifier ? ` and member/identifier="${memberIdentifier}"` : ''}`;
184
+ let dayEntries = [];
185
+ try {
186
+ const dayResult = await api.paginatedFetch('/time/entries', dayConditions, 'id,chargeToId,chargeToType,timeStart,timeEnd,actualHours,notes');
187
+ dayEntries = dayResult.items;
188
+ }
189
+ catch {
190
+ // non-fatal: proceed with empty day entries
191
+ }
192
+ const unloggedSlots = findUnloggedSlots(serviceSchedule, dayEntries);
193
+ const patterns = buildRecentPatterns(recentServiceEntries);
194
+ const output = {
195
+ date,
196
+ memberIdentifier: memberIdentifier || null,
197
+ scheduleEntries: serviceSchedule.map((s) => ({
198
+ id: Number(s['id']),
199
+ ticketId: Number(s['objectId']),
200
+ name: String(s['name'] ?? ''),
201
+ start: toLocalTime(String(s['dateStart'] ?? '')),
202
+ end: toLocalTime(String(s['dateEnd'] ?? '')),
203
+ status: nested(s, 'status', 'name'),
204
+ })),
205
+ unloggedSlots: unloggedSlots.map((s) => ({
206
+ scheduleId: Number(s['id']),
207
+ ticketId: Number(s['objectId']),
208
+ name: String(s['name'] ?? ''),
209
+ suggestedStart: toLocalTime(String(s['dateStart'] ?? '')),
210
+ suggestedEnd: toLocalTime(String(s['dateEnd'] ?? '')),
211
+ })),
212
+ existingEntriesToday: dayEntries.map((e) => ({
213
+ id: Number(e['id']),
214
+ chargeToId: Number(e['chargeToId']),
215
+ start: toLocalTime(String(e['timeStart'] ?? '')),
216
+ end: toLocalTime(String(e['timeEnd'] ?? '')),
217
+ hours: Number(e['actualHours'] ?? 0),
218
+ })),
219
+ recentPatterns: patterns.map((p) => ({
220
+ company: p.company,
221
+ companyId: p.companyId,
222
+ workType: p.workType,
223
+ workRole: p.workRole,
224
+ chargeCode: p.chargeCode,
225
+ agreementName: p.agreementName,
226
+ agreementId: p.agreementId,
227
+ count: p.count,
228
+ })),
229
+ validDeducts: VALID_DEDUCTS,
230
+ };
231
+ const schedTrunc = scheduleResult.status === 'fulfilled' ? truncationWarning(scheduleResult.value, 'schedule entries') : '';
232
+ const recentTrunc = recentResult.status === 'fulfilled' ? truncationWarning(recentResult.value, 'recent entries') : '';
233
+ return '```json\n' + JSON.stringify(output, null, 2) + '\n```' + warning + schedTrunc + recentTrunc;
234
+ }));
235
+ //# sourceMappingURL=analytics-msp-time-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-msp-time-entry.js","sourceRoot":"","sources":["../../src/operations/analytics-msp-time-entry.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,18 @@ import { num, nested, daysAgo, today, round2, dateRange, groupByDate, groupByFie
7
7
  import { localDateKey, localDayName, toLocalTime } from '../utils/timezone.js';
8
8
  export const mspTimeHandlers = {};
9
9
  function reg(name, handler) { mspTimeHandlers[name] = handler; }
10
+ /** Shift a date string back by 1 day for UTC/local offset compensation in API queries. */
11
+ function queryStart(localDate) {
12
+ const d = new Date(String(localDate).substring(0, 10) + 'T00:00:00Z');
13
+ d.setUTCDate(d.getUTCDate() - 1);
14
+ return d.toISOString();
15
+ }
16
+ /** Shift a date string forward by 1 day for UTC/local offset compensation in API queries. */
17
+ function queryEnd(localDate) {
18
+ const d = new Date(String(localDate).substring(0, 10) + 'T00:00:00Z');
19
+ d.setUTCDate(d.getUTCDate() + 1);
20
+ return d.toISOString();
21
+ }
10
22
  // ---------------------------------------------------------------------------
11
23
  // Internal helpers (file-local)
12
24
  // ---------------------------------------------------------------------------
@@ -56,14 +68,21 @@ reg('member_daily_totals', async (params) => {
56
68
  return 'Error: `identifier` parameter is required.';
57
69
  const start = String(params['start_date'] ?? daysAgo(7));
58
70
  const end = String(params['end_date'] ?? today());
59
- const conditions = `member/identifier='${id}' AND timeStart>=[${start}] AND timeStart<[${end}]`;
71
+ const conditions = `member/identifier='${id}' AND timeStart>=[${queryStart(start)}] AND timeStart<[${queryEnd(end)}]`;
60
72
  const fields = 'id,actualHours,billableOption,chargeToType,chargeToId,timeStart,timeEnd';
61
73
  const result = await api.paginatedFetch('/time/entries', conditions, fields, 1000);
62
74
  if (result.items.length === 0) {
63
75
  return `No time entries found for **${id}** between ${start.substring(0, 10)} and ${end.substring(0, 10)}.`;
64
76
  }
65
- // --- group by calendar date -----------------------------------------------
77
+ // --- group by calendar date (local timezone) --------------------------------
66
78
  const byDate = groupByDate(result.items, 'timeStart');
79
+ // Remove entries outside the requested local date range (buffer cleanup)
80
+ const requestedStart = start.substring(0, 10);
81
+ const requestedEnd = end.substring(0, 10);
82
+ for (const key of byDate.keys()) {
83
+ if (key < requestedStart || key > requestedEnd)
84
+ byDate.delete(key);
85
+ }
67
86
  const sortedDates = [...byDate.keys()].sort();
68
87
  // --- accumulators for TOTALS row ------------------------------------------
69
88
  let grandTotal = 0;
@@ -125,7 +144,7 @@ reg('member_utilization', async (params) => {
125
144
  const id = String(params['identifier'] ?? '').trim();
126
145
  const days = num(params['days'], 30);
127
146
  const { start, end } = dateRange(days);
128
- const baseConditions = `timeStart>=[${start}] AND timeStart<[${end}]`;
147
+ const baseConditions = `timeStart>=[${queryStart(start)}] AND timeStart<[${queryEnd(end)}]`;
129
148
  const conditions = id ? `member/identifier='${id}' AND ${baseConditions}` : baseConditions;
130
149
  const fields = 'id,actualHours,billableOption,timeStart';
131
150
  const result = await api.paginatedFetch('/time/entries', conditions, fields, 2000);
@@ -170,7 +189,7 @@ reg('team_utilization_comparison', async (params) => {
170
189
  const { start, end } = dateRange(days);
171
190
  const [membersResult, entriesResult] = await Promise.all([
172
191
  api.paginatedFetch('/system/members', 'inactiveFlag=false', 'id,identifier,firstName,lastName', 500),
173
- api.paginatedFetch('/time/entries', `timeStart>=[${start}] AND timeStart<[${end}]`, 'id,actualHours,billableOption,member/identifier', 5000),
192
+ api.paginatedFetch('/time/entries', `timeStart>=[${queryStart(start)}] AND timeStart<[${queryEnd(end)}]`, 'id,actualHours,billableOption,member/identifier', 5000),
174
193
  ]);
175
194
  if (membersResult.items.length === 0)
176
195
  return 'No active members found.';
@@ -225,7 +244,7 @@ reg('timesheet_completeness', async (params) => {
225
244
  const api = getAPI();
226
245
  const start = String(params['start_date'] ?? daysAgo(7)).substring(0, 10);
227
246
  const end = String(params['end_date'] ?? new Date().toISOString().split('T')[0]);
228
- const conditions = `timeStart>=[${start}T00:00:00Z] AND timeStart<[${end}T23:59:59Z]`;
247
+ const conditions = `timeStart>=[${queryStart(start)}] AND timeStart<[${queryEnd(end)}]`;
229
248
  const fields = 'id,actualHours,member/identifier,timeStart';
230
249
  const result = await api.paginatedFetch('/time/entries', conditions, fields, 5000);
231
250
  if (result.items.length === 0) {
@@ -270,7 +289,7 @@ reg('overtime_detection', async (params) => {
270
289
  const api = getAPI();
271
290
  const days = num(params['days'], 14);
272
291
  const { start, end } = dateRange(days);
273
- const conditions = `timeStart>=[${start}] AND timeStart<[${end}]`;
292
+ const conditions = `timeStart>=[${queryStart(start)}] AND timeStart<[${queryEnd(end)}]`;
274
293
  const fields = 'id,actualHours,member/identifier,timeStart';
275
294
  const result = await api.paginatedFetch('/time/entries', conditions, fields, 5000);
276
295
  if (result.items.length === 0)
@@ -384,7 +403,7 @@ reg('charge_code_summary', async (params) => {
384
403
  const days = num(params['days'], 30);
385
404
  const id = String(params['identifier'] ?? '').trim();
386
405
  const { start, end } = dateRange(days);
387
- let conditions = `chargeToType='ChargeCode' AND timeStart>=[${start}] AND timeStart<[${end}]`;
406
+ let conditions = `chargeToType='ChargeCode' AND timeStart>=[${queryStart(start)}] AND timeStart<[${queryEnd(end)}]`;
388
407
  if (id)
389
408
  conditions = `member/identifier='${id}' AND ${conditions}`;
390
409
  const fields = 'id,actualHours,chargeToId,member/identifier';
@@ -423,7 +442,7 @@ reg('time_entry_gap_analysis', async (params) => {
423
442
  return 'Error: `identifier` parameter is required.';
424
443
  if (!date)
425
444
  return 'Error: `date` parameter is required (YYYY-MM-DD).';
426
- const conditions = `member/identifier='${id}' AND timeStart>=[${date}T00:00:00Z] AND timeStart<[${date}T23:59:59Z]`;
445
+ const conditions = `member/identifier='${id}' AND timeStart>=[${queryStart(date)}] AND timeStart<[${queryEnd(date)}]`;
427
446
  const fields = 'id,actualHours,timeStart,timeEnd,chargeToType,chargeToId';
428
447
  const result = await api.paginatedFetch('/time/entries', conditions, fields, 500);
429
448
  if (result.items.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"analytics-msp-time.js","sourceRoot":"","sources":["../../src/operations/analytics-msp-time.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analytics-msp-time.js","sourceRoot":"","sources":["../../src/operations/analytics-msp-time.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/operations/analytics.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAwB7D,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAkDtC;;;GAGG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBtF"}
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/operations/analytics.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AA0B7D,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAkDtC;;;GAGG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBtF"}
@@ -17,12 +17,14 @@ import { mspSalesHandlers } from './analytics-msp-sales.js';
17
17
  import { mspProcurementHandlers } from './analytics-msp-procurement.js';
18
18
  import { mspContractHandlers } from './analytics-msp-contracts.js';
19
19
  import { mspCommsHandlers } from './analytics-msp-comms.js';
20
+ import { mspTimeEntryHandlers } from './analytics-msp-time-entry.js';
20
21
  // Merged MSP handler map for O(1) lookup
21
22
  const mspHandlers = {
22
23
  ...mspTimeHandlers, ...mspTicketHandlers, ...mspFinancialHandlers,
23
24
  ...mspScheduleHandlers, ...mspClientHandlers, ...mspTeamHandlers,
24
25
  ...mspAssetHandlers, ...mspProjectHandlers, ...mspSalesHandlers,
25
26
  ...mspProcurementHandlers, ...mspContractHandlers, ...mspCommsHandlers,
27
+ ...mspTimeEntryHandlers,
26
28
  };
27
29
  // ---------------------------------------------------------------------------
28
30
  // Helpers