@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.
- package/data/reports.json +29 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/operations/analytics-extended.d.ts.map +1 -1
- package/dist/operations/analytics-extended.js +15 -4
- package/dist/operations/analytics-extended.js.map +1 -1
- package/dist/operations/analytics-msp-schedule.js +12 -2
- package/dist/operations/analytics-msp-schedule.js.map +1 -1
- package/dist/operations/analytics-msp-time-entry.d.ts +68 -0
- package/dist/operations/analytics-msp-time-entry.d.ts.map +1 -0
- package/dist/operations/analytics-msp-time-entry.js +235 -0
- package/dist/operations/analytics-msp-time-entry.js.map +1 -0
- package/dist/operations/analytics-msp-time.js +27 -8
- package/dist/operations/analytics-msp-time.js.map +1 -1
- package/dist/operations/analytics.d.ts.map +1 -1
- package/dist/operations/analytics.js +2 -0
- package/dist/operations/analytics.js.map +1 -1
- package/dist/operations/registry.d.ts.map +1 -1
- package/dist/operations/registry.js +1 -0
- package/dist/operations/registry.js.map +1 -1
- package/dist/scrapers/index.d.ts +4 -0
- package/dist/scrapers/index.d.ts.map +1 -0
- package/dist/scrapers/index.js +10 -0
- package/dist/scrapers/index.js.map +1 -0
- package/dist/scrapers/reports.d.ts +3 -0
- package/dist/scrapers/reports.d.ts.map +1 -0
- package/dist/scrapers/reports.js +443 -0
- package/dist/scrapers/reports.js.map +1 -0
- package/dist/services/load-env.d.ts.map +1 -1
- package/dist/services/load-env.js +11 -1
- package/dist/services/load-env.js.map +1 -1
- package/dist/services/report-cache.d.ts +16 -0
- package/dist/services/report-cache.d.ts.map +1 -0
- package/dist/services/report-cache.js +230 -0
- package/dist/services/report-cache.js.map +1 -0
- package/dist/services/report-config.d.ts +28 -0
- package/dist/services/report-config.d.ts.map +1 -0
- package/dist/services/report-config.js +127 -0
- package/dist/services/report-config.js.map +1 -0
- package/dist/services/totp.d.ts +27 -0
- package/dist/services/totp.d.ts.map +1 -0
- package/dist/services/totp.js +76 -0
- package/dist/services/totp.js.map +1 -0
- package/dist/services/web-scraper.d.ts +76 -0
- package/dist/services/web-scraper.d.ts.map +1 -0
- package/dist/services/web-scraper.js +435 -0
- package/dist/services/web-scraper.js.map +1 -0
- package/dist/tools/reports.d.ts +9 -0
- package/dist/tools/reports.d.ts.map +1 -0
- package/dist/tools/reports.js +388 -0
- package/dist/tools/reports.js.map +1 -0
- package/dist/tools/validation.js +2 -2
- package/dist/tools/validation.js.map +1 -1
- package/dist/types/reports.d.ts +87 -0
- package/dist/types/reports.d.ts.map +1 -0
- package/dist/types/reports.js +3 -0
- package/dist/types/reports.js.map +1 -0
- 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}
|
|
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}
|
|
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;
|
|
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
|