placementt-core 1.400.1253 → 1.400.1254
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/lib/bulkEngagement.d.ts +10 -2
- package/lib/bulkEngagement.js +20 -25
- package/lib/bulkEngagement.js.map +1 -1
- package/lib/bulkEngagement.test.js +29 -24
- package/lib/bulkEngagement.test.js.map +1 -1
- package/lib/callables/engagement.d.ts +27 -0
- package/lib/callables/engagement.js +2 -0
- package/lib/callables/engagement.js.map +1 -1
- package/lib/callables/registry.d.ts +52 -0
- package/lib/constants.d.ts +7 -0
- package/lib/constants.js +14 -46
- package/lib/constants.js.map +1 -1
- package/lib/onboardingPathways.test.js +1 -1
- package/lib/onboardingPathways.test.js.map +1 -1
- package/lib/renewals.d.ts +3 -3
- package/lib/renewals.js +5 -11
- package/lib/renewals.js.map +1 -1
- package/lib/util.js +3 -3
- package/lib/util.js.map +1 -1
- package/package.json +1 -1
- package/src/bulkEngagement.test.ts +34 -26
- package/src/bulkEngagement.ts +19 -23
- package/src/callables/engagement.ts +2 -0
- package/src/constants.ts +12 -44
- package/src/onboardingPathways.test.ts +1 -1
- package/src/renewals.ts +5 -11
- package/src/util.ts +4 -4
package/lib/bulkEngagement.d.ts
CHANGED
|
@@ -54,8 +54,8 @@ export type BulkEngagementSuggestion = {
|
|
|
54
54
|
/**
|
|
55
55
|
* Whether one email suits one school, and what is missing for it.
|
|
56
56
|
*
|
|
57
|
-
* Renewal emails are suggested
|
|
58
|
-
* to schools whose next onboarding step it is. Neither is suggested to a
|
|
57
|
+
* Renewal emails are suggested to every paying school, and any other admin
|
|
58
|
+
* email to schools whose next onboarding step it is. Neither is suggested to a
|
|
59
59
|
* school that had it in the last 60 days.
|
|
60
60
|
*
|
|
61
61
|
* @param {string} templateKey the admin email template.
|
|
@@ -76,3 +76,11 @@ export declare const matchesBulkFilters: (school: {
|
|
|
76
76
|
package: string;
|
|
77
77
|
products: string[];
|
|
78
78
|
}, { packages, products }: BulkEngagementFilters) => boolean;
|
|
79
|
+
/**
|
|
80
|
+
* How long ago an email went, for the send popup's chips.
|
|
81
|
+
*
|
|
82
|
+
* @param {string} day the day it went, YYYY-MM-DD.
|
|
83
|
+
* @param {Date} now the current time.
|
|
84
|
+
* @return {string} "Today", "1 day ago" or "12 days ago".
|
|
85
|
+
*/
|
|
86
|
+
export declare const bulkSentAgo: (day: string, now: Date) => string;
|
package/lib/bulkEngagement.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.matchesBulkFilters = exports.bulkEngagementSuggestion = exports.RECENTLY_SENT_DAYS = exports.BULK_TEST_SCHOOLS = exports.BULK_TEST_RECIPIENT = exports.BULK_ENGAGEMENT_PRODUCT_LABELS = exports.BULK_ENGAGEMENT_PRODUCTS = exports.BULK_ENGAGEMENT_PACKAGE_LABELS = exports.BULK_ENGAGEMENT_BLOCKING_FLAGS = exports.BULK_ENGAGEMENT_FLAG_LABELS = void 0;
|
|
3
|
+
exports.bulkSentAgo = exports.matchesBulkFilters = exports.bulkEngagementSuggestion = exports.RECENTLY_SENT_DAYS = exports.BULK_TEST_SCHOOLS = exports.BULK_TEST_RECIPIENT = exports.BULK_ENGAGEMENT_PRODUCT_LABELS = exports.BULK_ENGAGEMENT_PRODUCTS = exports.BULK_ENGAGEMENT_PACKAGE_LABELS = exports.BULK_ENGAGEMENT_BLOCKING_FLAGS = exports.BULK_ENGAGEMENT_FLAG_LABELS = void 0;
|
|
4
4
|
const renewals_1 = require("./renewals");
|
|
5
5
|
const constants_1 = require("./constants");
|
|
6
|
+
const outreachRules_1 = require("./outreachRules");
|
|
6
7
|
exports.BULK_ENGAGEMENT_FLAG_LABELS = {
|
|
7
8
|
noContacts: "No one to send to",
|
|
8
9
|
noRenewalDate: "No renewal date",
|
|
@@ -31,23 +32,11 @@ exports.BULK_TEST_RECIPIENT = "tom@careerthread.co.uk";
|
|
|
31
32
|
exports.BULK_TEST_SCHOOLS = 3;
|
|
32
33
|
/** A school that had this email this recently isn't suggested it again. */
|
|
33
34
|
exports.RECENTLY_SENT_DAYS = 60;
|
|
34
|
-
/**
|
|
35
|
-
* Days to renewal each renewal email is suggested for, inclusive. "paying"
|
|
36
|
-
* suggests it to every paying school, date or not.
|
|
37
|
-
*/
|
|
38
|
-
const RENEWAL_SUGGEST_DAYS = {
|
|
39
|
-
engagementRenewalPrice: [61, 365],
|
|
40
|
-
engagementRenewalReview: "paying",
|
|
41
|
-
engagementRenewalDue: [31, 90],
|
|
42
|
-
engagementRenewalInvoice: [0, 45],
|
|
43
|
-
// A date this far off has most likely just moved on a year.
|
|
44
|
-
engagementRenewalThanks: [300, 400],
|
|
45
|
-
};
|
|
46
35
|
/**
|
|
47
36
|
* Whether one email suits one school, and what is missing for it.
|
|
48
37
|
*
|
|
49
|
-
* Renewal emails are suggested
|
|
50
|
-
* to schools whose next onboarding step it is. Neither is suggested to a
|
|
38
|
+
* Renewal emails are suggested to every paying school, and any other admin
|
|
39
|
+
* email to schools whose next onboarding step it is. Neither is suggested to a
|
|
51
40
|
* school that had it in the last 60 days.
|
|
52
41
|
*
|
|
53
42
|
* @param {string} templateKey the admin email template.
|
|
@@ -73,17 +62,9 @@ const bulkEngagementSuggestion = (templateKey, school) => {
|
|
|
73
62
|
const none = { suggested: false, flags };
|
|
74
63
|
if (recent || flags.some((f) => exports.BULK_ENGAGEMENT_BLOCKING_FLAGS.includes(f)))
|
|
75
64
|
return none;
|
|
76
|
-
|
|
77
|
-
if (!window)
|
|
65
|
+
if (!renewals_1.RENEWAL_EMAIL_TEMPLATES.includes(templateKey))
|
|
78
66
|
return nextOnboardingTemplate === templateKey ? { suggested: true, reason: "Their next onboarding step", flags } : none;
|
|
79
|
-
|
|
80
|
-
return none;
|
|
81
|
-
if (window === "paying")
|
|
82
|
-
return { suggested: true, reason: "Paying customer", flags };
|
|
83
|
-
const days = renewal.daysToRenewal;
|
|
84
|
-
if (days === undefined || days < window[0] || days > window[1])
|
|
85
|
-
return none;
|
|
86
|
-
return { suggested: true, reason: `Renews in ${days} days`, flags };
|
|
67
|
+
return renewal.applies ? { suggested: true, reason: "Paying customer", flags } : none;
|
|
87
68
|
};
|
|
88
69
|
exports.bulkEngagementSuggestion = bulkEngagementSuggestion;
|
|
89
70
|
/**
|
|
@@ -98,4 +79,18 @@ exports.bulkEngagementSuggestion = bulkEngagementSuggestion;
|
|
|
98
79
|
const matchesBulkFilters = (school, { packages, products }) => (!packages.length || packages.includes(school.package)) &&
|
|
99
80
|
(!products.length || products.some((p) => school.products.includes(p)));
|
|
100
81
|
exports.matchesBulkFilters = matchesBulkFilters;
|
|
82
|
+
/**
|
|
83
|
+
* How long ago an email went, for the send popup's chips.
|
|
84
|
+
*
|
|
85
|
+
* @param {string} day the day it went, YYYY-MM-DD.
|
|
86
|
+
* @param {Date} now the current time.
|
|
87
|
+
* @return {string} "Today", "1 day ago" or "12 days ago".
|
|
88
|
+
*/
|
|
89
|
+
const bulkSentAgo = (day, now) => {
|
|
90
|
+
const days = Math.round((Date.parse(`${(0, outreachRules_1.londonYmd)(now)}T00:00:00Z`) - Date.parse(`${day.slice(0, 10)}T00:00:00Z`)) / 86400000);
|
|
91
|
+
if (days <= 0)
|
|
92
|
+
return "Today";
|
|
93
|
+
return days === 1 ? "1 day ago" : `${days} days ago`;
|
|
94
|
+
};
|
|
95
|
+
exports.bulkSentAgo = bulkSentAgo;
|
|
101
96
|
//# sourceMappingURL=bulkEngagement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulkEngagement.js","sourceRoot":"","sources":["../src/bulkEngagement.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"bulkEngagement.js","sourceRoot":"","sources":["../src/bulkEngagement.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ jest.mock("./firebase/firebaseQuery", () => ({ __esModule: true, default: class
|
|
|
6
6
|
const productResolver_1 = require("./productResolver");
|
|
7
7
|
const bulkEngagement_1 = require("./bulkEngagement");
|
|
8
8
|
const engagement_1 = require("./callables/engagement");
|
|
9
|
+
const constants_1 = require("./constants");
|
|
9
10
|
const school = (renewalDate, overrides = {}) => ({
|
|
10
11
|
name: "Calder Park Academy",
|
|
11
12
|
package: "institutes-one",
|
|
@@ -23,37 +24,23 @@ const suggest = (templateKey, institute, date, extra = {}) => (0, bulkEngagement
|
|
|
23
24
|
lastSent: extra.lastSent,
|
|
24
25
|
});
|
|
25
26
|
describe("bulk engagement suggestions", () => {
|
|
26
|
-
it("suggests the
|
|
27
|
-
expect(suggest("
|
|
28
|
-
expect(suggest("
|
|
29
|
-
expect(suggest("engagementRenewalDue", school("2026-11-20"), "2026-11-04").suggested).toBe(false);
|
|
30
|
-
});
|
|
31
|
-
it("suggests the invoice email inside 45 days, and next year's price further out", () => {
|
|
32
|
-
expect(suggest("engagementRenewalInvoice", school("2026-11-20"), "2026-11-04").suggested).toBe(true);
|
|
33
|
-
expect(suggest("engagementRenewalPrice", school("2027-06-10"), "2026-11-04").suggested).toBe(true);
|
|
34
|
-
expect(suggest("engagementRenewalPrice", school("2026-11-20"), "2026-11-04").suggested).toBe(false);
|
|
35
|
-
});
|
|
36
|
-
it("suggests the year in review to every paying school, and thanks to those just renewed", () => {
|
|
37
|
-
expect(suggest("engagementRenewalReview", school(), "2026-11-04").suggested).toBe(true);
|
|
38
|
-
expect(suggest("engagementRenewalThanks", school("2027-10-20"), "2026-11-04").suggested).toBe(true);
|
|
39
|
-
expect(suggest("engagementRenewalThanks", school("2027-01-10"), "2026-11-04").suggested).toBe(false);
|
|
27
|
+
it("suggests the check-in to every paying school, date or not", () => {
|
|
28
|
+
expect(suggest("engagementRenewalCheckIn", school("2027-06-10"), "2026-11-04")).toMatchObject({ suggested: true, reason: "Paying customer" });
|
|
29
|
+
expect(suggest("engagementRenewalCheckIn", school(), "2026-11-04").suggested).toBe(true);
|
|
40
30
|
});
|
|
41
31
|
it("leaves out hub schools", () => {
|
|
42
|
-
expect(suggest("
|
|
32
|
+
expect(suggest("engagementRenewalCheckIn", school("2027-01-10", { package: "careersSchool" }), "2026-11-04").suggested).toBe(false);
|
|
43
33
|
});
|
|
44
34
|
it("doesn't suggest an email the school had in the last 60 days", () => {
|
|
45
|
-
const recent = suggest("
|
|
35
|
+
const recent = suggest("engagementRenewalCheckIn", school("2027-01-10"), "2026-11-04", { lastSent: "2026-10-01T09:00:00Z" });
|
|
46
36
|
expect(recent).toMatchObject({ suggested: false, flags: expect.arrayContaining(["sentRecently"]) });
|
|
47
|
-
expect(suggest("
|
|
37
|
+
expect(suggest("engagementRenewalCheckIn", school("2027-01-10"), "2026-11-04", { lastSent: "2026-06-01T09:00:00Z" }).suggested).toBe(true);
|
|
48
38
|
});
|
|
49
|
-
it("
|
|
50
|
-
expect(suggest("
|
|
51
|
-
.toEqual(["noRenewalDate", "noQuote", "noFinanceContact"]);
|
|
52
|
-
const withFinance = school("2027-01-10", { financeContact: { name: "Pat Lee", email: "pat@school.org" } });
|
|
53
|
-
expect(suggest("engagementRenewalDue", withFinance, "2026-11-04").flags).toEqual([]);
|
|
39
|
+
it("needs no renewal date, quote or finance contact for the check-in", () => {
|
|
40
|
+
expect(suggest("engagementRenewalCheckIn", school(), "2026-11-04", { hasQuote: false }).flags).toEqual([]);
|
|
54
41
|
});
|
|
55
42
|
it("never suggests a school with no one to send to", () => {
|
|
56
|
-
expect(suggest("
|
|
43
|
+
expect(suggest("engagementRenewalCheckIn", school(), "2026-11-04", { contactCount: 0 })).toMatchObject({ suggested: false, flags: ["noContacts"] });
|
|
57
44
|
});
|
|
58
45
|
it("suggests an onboarding email to schools whose next step it is", () => {
|
|
59
46
|
expect(suggest("engagementPickFeatures", school(), "2026-11-04", { nextOnboardingTemplate: "engagementPickFeatures" }))
|
|
@@ -102,7 +89,7 @@ describe("matchesBulkFilters", () => {
|
|
|
102
89
|
});
|
|
103
90
|
describe("sendBulkEngagementTest contract", () => {
|
|
104
91
|
const request = (count) => ({
|
|
105
|
-
templateKey: "
|
|
92
|
+
templateKey: "engagementRenewalCheckIn",
|
|
106
93
|
oIds: Array.from({ length: count }, (_, i) => `school-${i}`),
|
|
107
94
|
subject: "Renewing",
|
|
108
95
|
body: [{ type: "paragraph" }],
|
|
@@ -116,4 +103,22 @@ describe("sendBulkEngagementTest contract", () => {
|
|
|
116
103
|
expect(contract.parse({ ...request(1), to: "someone@school.sch.uk" })).not.toHaveProperty("to");
|
|
117
104
|
});
|
|
118
105
|
});
|
|
106
|
+
describe("bulkSentAgo", () => {
|
|
107
|
+
const now = new Date("2026-11-04T09:00:00Z");
|
|
108
|
+
it("counts whole days, from a day or a full date", () => {
|
|
109
|
+
expect((0, bulkEngagement_1.bulkSentAgo)("2026-11-04", now)).toBe("Today");
|
|
110
|
+
expect((0, bulkEngagement_1.bulkSentAgo)("2026-11-03", now)).toBe("1 day ago");
|
|
111
|
+
expect((0, bulkEngagement_1.bulkSentAgo)("2026-10-23", now)).toBe("12 days ago");
|
|
112
|
+
expect((0, bulkEngagement_1.bulkSentAgo)("2026-10-23T15:00:00Z", now)).toBe("12 days ago");
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
describe("the check-in's button", () => {
|
|
116
|
+
it("goes to the Calendly link, not a page on CareerThread", () => {
|
|
117
|
+
const link = constants_1.emailTemplates.engagementRenewalCheckIn.button?.link;
|
|
118
|
+
expect((0, constants_1.emailButtonUrl)(link)).toBe("https://calendly.com/tom-careerthread/30min");
|
|
119
|
+
});
|
|
120
|
+
it("still puts ordinary links on CareerThread", () => {
|
|
121
|
+
expect((0, constants_1.emailButtonUrl)("/institutes/home")).toBe("https://careerthread.co.uk/institutes/home");
|
|
122
|
+
});
|
|
123
|
+
});
|
|
119
124
|
//# sourceMappingURL=bulkEngagement.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulkEngagement.test.js","sourceRoot":"","sources":["../src/bulkEngagement.test.ts"],"names":[],"mappings":";;AAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC;AAC5D,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;KAAQ,EAAC,CAAC,CAAC,CAAC;AAGrF,uDAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"bulkEngagement.test.js","sourceRoot":"","sources":["../src/bulkEngagement.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,17 @@ export declare const engagementCallables: {
|
|
|
23
23
|
contacts: z.ZodNumber;
|
|
24
24
|
/** ISO date this email last went to the school, if it has. */
|
|
25
25
|
lastSent: z.ZodOptional<z.ZodString>;
|
|
26
|
+
/** The last engagement email of any kind that went to the school, if one has. */
|
|
27
|
+
lastEmail: z.ZodOptional<z.ZodObject<{
|
|
28
|
+
title: z.ZodString;
|
|
29
|
+
sentDay: z.ZodString;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
title: string;
|
|
32
|
+
sentDay: string;
|
|
33
|
+
}, {
|
|
34
|
+
title: string;
|
|
35
|
+
sentDay: string;
|
|
36
|
+
}>>;
|
|
26
37
|
/** The school's params, for previewing the email as they'd get it. */
|
|
27
38
|
params: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
28
39
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -36,6 +47,10 @@ export declare const engagementCallables: {
|
|
|
36
47
|
suggested: boolean;
|
|
37
48
|
reason?: string | undefined;
|
|
38
49
|
lastSent?: string | undefined;
|
|
50
|
+
lastEmail?: {
|
|
51
|
+
title: string;
|
|
52
|
+
sentDay: string;
|
|
53
|
+
} | undefined;
|
|
39
54
|
}, {
|
|
40
55
|
name: string;
|
|
41
56
|
oId: string;
|
|
@@ -47,6 +62,10 @@ export declare const engagementCallables: {
|
|
|
47
62
|
suggested: boolean;
|
|
48
63
|
reason?: string | undefined;
|
|
49
64
|
lastSent?: string | undefined;
|
|
65
|
+
lastEmail?: {
|
|
66
|
+
title: string;
|
|
67
|
+
sentDay: string;
|
|
68
|
+
} | undefined;
|
|
50
69
|
}>, "many">;
|
|
51
70
|
}, "strip", z.ZodTypeAny, {
|
|
52
71
|
schools: {
|
|
@@ -60,6 +79,10 @@ export declare const engagementCallables: {
|
|
|
60
79
|
suggested: boolean;
|
|
61
80
|
reason?: string | undefined;
|
|
62
81
|
lastSent?: string | undefined;
|
|
82
|
+
lastEmail?: {
|
|
83
|
+
title: string;
|
|
84
|
+
sentDay: string;
|
|
85
|
+
} | undefined;
|
|
63
86
|
}[];
|
|
64
87
|
}, {
|
|
65
88
|
schools: {
|
|
@@ -73,6 +96,10 @@ export declare const engagementCallables: {
|
|
|
73
96
|
suggested: boolean;
|
|
74
97
|
reason?: string | undefined;
|
|
75
98
|
lastSent?: string | undefined;
|
|
99
|
+
lastEmail?: {
|
|
100
|
+
title: string;
|
|
101
|
+
sentDay: string;
|
|
102
|
+
} | undefined;
|
|
76
103
|
}[];
|
|
77
104
|
}>;
|
|
78
105
|
};
|
|
@@ -33,6 +33,8 @@ exports.engagementCallables = {
|
|
|
33
33
|
contacts: zod_1.z.number(),
|
|
34
34
|
/** ISO date this email last went to the school, if it has. */
|
|
35
35
|
lastSent: zod_1.z.string().optional(),
|
|
36
|
+
/** The last engagement email of any kind that went to the school, if one has. */
|
|
37
|
+
lastEmail: zod_1.z.object({ title: zod_1.z.string(), sentDay: zod_1.z.string() }).optional(),
|
|
36
38
|
/** The school's params, for previewing the email as they'd get it. */
|
|
37
39
|
params: zod_1.z.record(zod_1.z.string(), zod_1.z.string()),
|
|
38
40
|
})),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engagement.js","sourceRoot":"","sources":["../../src/callables/engagement.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engagement.js","sourceRoot":"","sources":["../../src/callables/engagement.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,16 @@ export declare const allCallables: {
|
|
|
30
30
|
flags: z.ZodArray<z.ZodEnum<["noContacts", "noRenewalDate", "noQuote", "noFinanceContact", "sentRecently"]>, "many">;
|
|
31
31
|
contacts: z.ZodNumber;
|
|
32
32
|
lastSent: z.ZodOptional<z.ZodString>;
|
|
33
|
+
lastEmail: z.ZodOptional<z.ZodObject<{
|
|
34
|
+
title: z.ZodString;
|
|
35
|
+
sentDay: z.ZodString;
|
|
36
|
+
}, "strip", z.ZodTypeAny, {
|
|
37
|
+
title: string;
|
|
38
|
+
sentDay: string;
|
|
39
|
+
}, {
|
|
40
|
+
title: string;
|
|
41
|
+
sentDay: string;
|
|
42
|
+
}>>;
|
|
33
43
|
params: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
34
44
|
}, "strip", z.ZodTypeAny, {
|
|
35
45
|
name: string;
|
|
@@ -42,6 +52,10 @@ export declare const allCallables: {
|
|
|
42
52
|
suggested: boolean;
|
|
43
53
|
reason?: string | undefined;
|
|
44
54
|
lastSent?: string | undefined;
|
|
55
|
+
lastEmail?: {
|
|
56
|
+
title: string;
|
|
57
|
+
sentDay: string;
|
|
58
|
+
} | undefined;
|
|
45
59
|
}, {
|
|
46
60
|
name: string;
|
|
47
61
|
oId: string;
|
|
@@ -53,6 +67,10 @@ export declare const allCallables: {
|
|
|
53
67
|
suggested: boolean;
|
|
54
68
|
reason?: string | undefined;
|
|
55
69
|
lastSent?: string | undefined;
|
|
70
|
+
lastEmail?: {
|
|
71
|
+
title: string;
|
|
72
|
+
sentDay: string;
|
|
73
|
+
} | undefined;
|
|
56
74
|
}>, "many">;
|
|
57
75
|
}, "strip", z.ZodTypeAny, {
|
|
58
76
|
schools: {
|
|
@@ -66,6 +84,10 @@ export declare const allCallables: {
|
|
|
66
84
|
suggested: boolean;
|
|
67
85
|
reason?: string | undefined;
|
|
68
86
|
lastSent?: string | undefined;
|
|
87
|
+
lastEmail?: {
|
|
88
|
+
title: string;
|
|
89
|
+
sentDay: string;
|
|
90
|
+
} | undefined;
|
|
69
91
|
}[];
|
|
70
92
|
}, {
|
|
71
93
|
schools: {
|
|
@@ -79,6 +101,10 @@ export declare const allCallables: {
|
|
|
79
101
|
suggested: boolean;
|
|
80
102
|
reason?: string | undefined;
|
|
81
103
|
lastSent?: string | undefined;
|
|
104
|
+
lastEmail?: {
|
|
105
|
+
title: string;
|
|
106
|
+
sentDay: string;
|
|
107
|
+
} | undefined;
|
|
82
108
|
}[];
|
|
83
109
|
}>;
|
|
84
110
|
};
|
|
@@ -8053,6 +8079,16 @@ export declare const callableGroups: {
|
|
|
8053
8079
|
flags: z.ZodArray<z.ZodEnum<["noContacts", "noRenewalDate", "noQuote", "noFinanceContact", "sentRecently"]>, "many">;
|
|
8054
8080
|
contacts: z.ZodNumber;
|
|
8055
8081
|
lastSent: z.ZodOptional<z.ZodString>;
|
|
8082
|
+
lastEmail: z.ZodOptional<z.ZodObject<{
|
|
8083
|
+
title: z.ZodString;
|
|
8084
|
+
sentDay: z.ZodString;
|
|
8085
|
+
}, "strip", z.ZodTypeAny, {
|
|
8086
|
+
title: string;
|
|
8087
|
+
sentDay: string;
|
|
8088
|
+
}, {
|
|
8089
|
+
title: string;
|
|
8090
|
+
sentDay: string;
|
|
8091
|
+
}>>;
|
|
8056
8092
|
params: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
8057
8093
|
}, "strip", z.ZodTypeAny, {
|
|
8058
8094
|
name: string;
|
|
@@ -8065,6 +8101,10 @@ export declare const callableGroups: {
|
|
|
8065
8101
|
suggested: boolean;
|
|
8066
8102
|
reason?: string | undefined;
|
|
8067
8103
|
lastSent?: string | undefined;
|
|
8104
|
+
lastEmail?: {
|
|
8105
|
+
title: string;
|
|
8106
|
+
sentDay: string;
|
|
8107
|
+
} | undefined;
|
|
8068
8108
|
}, {
|
|
8069
8109
|
name: string;
|
|
8070
8110
|
oId: string;
|
|
@@ -8076,6 +8116,10 @@ export declare const callableGroups: {
|
|
|
8076
8116
|
suggested: boolean;
|
|
8077
8117
|
reason?: string | undefined;
|
|
8078
8118
|
lastSent?: string | undefined;
|
|
8119
|
+
lastEmail?: {
|
|
8120
|
+
title: string;
|
|
8121
|
+
sentDay: string;
|
|
8122
|
+
} | undefined;
|
|
8079
8123
|
}>, "many">;
|
|
8080
8124
|
}, "strip", z.ZodTypeAny, {
|
|
8081
8125
|
schools: {
|
|
@@ -8089,6 +8133,10 @@ export declare const callableGroups: {
|
|
|
8089
8133
|
suggested: boolean;
|
|
8090
8134
|
reason?: string | undefined;
|
|
8091
8135
|
lastSent?: string | undefined;
|
|
8136
|
+
lastEmail?: {
|
|
8137
|
+
title: string;
|
|
8138
|
+
sentDay: string;
|
|
8139
|
+
} | undefined;
|
|
8092
8140
|
}[];
|
|
8093
8141
|
}, {
|
|
8094
8142
|
schools: {
|
|
@@ -8102,6 +8150,10 @@ export declare const callableGroups: {
|
|
|
8102
8150
|
suggested: boolean;
|
|
8103
8151
|
reason?: string | undefined;
|
|
8104
8152
|
lastSent?: string | undefined;
|
|
8153
|
+
lastEmail?: {
|
|
8154
|
+
title: string;
|
|
8155
|
+
sentDay: string;
|
|
8156
|
+
} | undefined;
|
|
8105
8157
|
}[];
|
|
8106
8158
|
}>;
|
|
8107
8159
|
};
|
package/lib/constants.d.ts
CHANGED
|
@@ -208,6 +208,13 @@ export declare const defaultApplicantWorkflow: ApplicantStage[];
|
|
|
208
208
|
export declare const emailTemplates: {
|
|
209
209
|
[key: string]: EmailTemplateConfig;
|
|
210
210
|
};
|
|
211
|
+
/**
|
|
212
|
+
* Where an email button goes: a page on CareerThread, or a full link as it is.
|
|
213
|
+
*
|
|
214
|
+
* @param {string} link the button's link from its template.
|
|
215
|
+
* @return {string} the full URL.
|
|
216
|
+
*/
|
|
217
|
+
export declare const emailButtonUrl: (link: string) => string;
|
|
211
218
|
export declare function productTagAvailable(tag: ProductTag | undefined, products?: ResolvedProducts): boolean;
|
|
212
219
|
export declare function emailTemplateAvailable(templateKey: string | undefined, products?: ResolvedProducts): boolean;
|
|
213
220
|
export declare const productTagLabels: {
|
package/lib/constants.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.DFE_CONTACT_UPLOAD_COLUMNS = exports.OUTREACH_DEFAULT_DEFER_MONTHS = exports.outreachDeliverabilityLabels = exports.outreachStatusColours = exports.outreachStatusLabels = exports.outreachStatusOrder = exports.SCHEDULED_CHECK_REMINDER_LEAD_DAYS = exports.SCHEDULED_CHECK_MISSED_AFTER_DAYS = exports.STUDENT_YEAR_FIELD = exports.JOB_VALUES = exports.CAREER_INTEREST_CATEGORIES = exports.SIC_SECTIONS = exports.SOC_MAJOR_GROUPS = exports.DESTINATION_CODES = exports.careersHubSchoolOnboardingEmailTemplates = exports.emailCampaignFullStatuses = exports.emailCampaignSummaryStatuses = exports.leadStageOrder = exports.leadStageSchema = exports.commSchema = exports.DEFAULT_YEAR_GROUPS = exports.DEFAULT_SURVEY_RULE = exports.surveyRuleLabel = exports.SURVEY_MONTHS = exports.SURVEY_WEEKDAYS = exports.SURVEY_ORDINALS = exports.skillAssessmentSchedule = exports.skillLabelColours = exports.equalexLearningOutcomes = exports.gatsbyBenchmarks = exports.externalActivityTypes = void 0;
|
|
3
|
+
exports.emailTemplateExampleData = exports.emailTemplateProductLabels = exports.productTagLabels = exports.emailButtonUrl = exports.emailTemplates = exports.defaultApplicantWorkflow = exports.mobileCountryCodes = exports.ERROR_COLOR = exports.SUCCESS_COLOR = exports.WARNING_COLOR = exports.INFO_COLOR = exports.INFOBACKGROUNDCOLOR = exports.INFOTEXTCOLOR = exports.WARNINGBACKGROUNDCOLOR = exports.WARNINGTEXTCOLOR = exports.SUCCESSBACKGROUNDCOLOR = exports.SUCCESSTEXTCOLOR = exports.ERRORBACKGROUNDCOLOR = exports.ERRORTEXTCOLOR = exports.STUDENT_COLOUR = exports.PROVIDER_COLOUR = exports.INSTITUTE_COLOUR = exports.SECONDARY_COLOUR = exports.LOGO_TERTIARY_COLOUR = exports.LOGO_SECONDARY_COLOUR = exports.EMAIL_HERO_SIZE = exports.PRIMARY_COLOUR = exports.MICROSOFT_SSO_GUIDE_URL = exports.MICROSOFT_ISSUER_HOST = exports.MICROSOFT_AUTHORITY = exports.MICROSOFT_CLIENT_ID = exports.DEFAULT_ACTIVITY_REFLECTION_FORM = exports.studentActivityCategory = exports.ACTIVITY_SCHEMAS = exports.DEFAULT_ACTIVITY_DESCRIPTION = exports.ACTIVITY_TYPE_DESCRIPTION = exports.ACTIVITY_TYPE_ORGANISATION = exports.activityProfile = exports.ACTIVITY_TYPE_PROFILE = exports.ACTIVITY_PROFILES = exports.ACTIVITY_TYPE_TITLE = exports.ACTIVITY_TYPES_BY_CATEGORY = exports.STUDENT_ACTIVITY_CATEGORIES = exports.DEFAULT_ACTIVITY_REFLECTION_FORM_ID = exports.sampleTargets = exports.flagCodes = exports.defaultStudentWorkflow = exports.defaultInstituteWorkflow = exports.countryList = exports.providerCodes = void 0;
|
|
4
|
+
exports.DFE_CONTACT_UPLOAD_COLUMNS = exports.OUTREACH_DEFAULT_DEFER_MONTHS = exports.outreachDeliverabilityLabels = exports.outreachStatusColours = exports.outreachStatusLabels = exports.outreachStatusOrder = exports.SCHEDULED_CHECK_REMINDER_LEAD_DAYS = exports.SCHEDULED_CHECK_MISSED_AFTER_DAYS = exports.STUDENT_YEAR_FIELD = exports.JOB_VALUES = exports.CAREER_INTEREST_CATEGORIES = exports.SIC_SECTIONS = exports.SOC_MAJOR_GROUPS = exports.DESTINATION_CODES = exports.careersHubSchoolOnboardingEmailTemplates = exports.emailCampaignFullStatuses = exports.emailCampaignSummaryStatuses = exports.leadStageOrder = exports.leadStageSchema = exports.commSchema = exports.DEFAULT_YEAR_GROUPS = exports.DEFAULT_SURVEY_RULE = exports.surveyRuleLabel = exports.SURVEY_MONTHS = exports.SURVEY_WEEKDAYS = exports.SURVEY_ORDINALS = exports.skillAssessmentSchedule = exports.skillLabelColours = exports.equalexLearningOutcomes = exports.gatsbyBenchmarks = exports.externalActivityTypes = exports.MISQueryParams = void 0;
|
|
5
5
|
exports.productTagAvailable = productTagAvailable;
|
|
6
6
|
exports.emailTemplateAvailable = emailTemplateAvailable;
|
|
7
7
|
exports.skillColour = skillColour;
|
|
@@ -1837,53 +1837,13 @@ exports.emailTemplates = {
|
|
|
1837
1837
|
recipient: "staff",
|
|
1838
1838
|
group: "Reminders",
|
|
1839
1839
|
},
|
|
1840
|
-
|
|
1840
|
+
engagementRenewalCheckIn: {
|
|
1841
1841
|
product: "admin",
|
|
1842
|
-
description: "
|
|
1843
|
-
params: [...engagementEmailParams, "renewalDate", "quote"],
|
|
1844
|
-
button: { text: "See plan and invoices", link: "/institutes/organisation/billing" },
|
|
1845
|
-
type: "engagement",
|
|
1846
|
-
name: "Next year's price",
|
|
1847
|
-
recipient: "staff",
|
|
1848
|
-
group: "Renewals",
|
|
1849
|
-
},
|
|
1850
|
-
engagementRenewalReview: {
|
|
1851
|
-
product: "admin",
|
|
1852
|
-
description: "Before the summer: thanks the school and points to the impact report.",
|
|
1853
|
-
params: [...engagementEmailParams],
|
|
1854
|
-
button: { text: "Get your impact report", link: "/institutes/organisation/overview" },
|
|
1855
|
-
type: "engagement",
|
|
1856
|
-
name: "Year in review",
|
|
1857
|
-
recipient: "staff",
|
|
1858
|
-
group: "Renewals",
|
|
1859
|
-
},
|
|
1860
|
-
engagementRenewalDue: {
|
|
1861
|
-
product: "admin",
|
|
1862
|
-
description: "60 days before renewal: the date and next year's price.",
|
|
1863
|
-
params: [...engagementEmailParams, "renewalDate", "quote"],
|
|
1864
|
-
button: { text: "See your plan", link: "/institutes/organisation/billing" },
|
|
1865
|
-
type: "engagement",
|
|
1866
|
-
name: "60 days out",
|
|
1867
|
-
recipient: "staff",
|
|
1868
|
-
group: "Renewals",
|
|
1869
|
-
},
|
|
1870
|
-
engagementRenewalInvoice: {
|
|
1871
|
-
product: "admin",
|
|
1872
|
-
description: "Asks whether the renewal invoice needs a purchase order number.",
|
|
1873
|
-
params: [...engagementEmailParams, "renewalDate", "quote"],
|
|
1874
|
-
button: { text: "See your invoices", link: "/institutes/organisation/billing" },
|
|
1875
|
-
type: "engagement",
|
|
1876
|
-
name: "Invoice or PO",
|
|
1877
|
-
recipient: "staff",
|
|
1878
|
-
group: "Renewals",
|
|
1879
|
-
},
|
|
1880
|
-
engagementRenewalThanks: {
|
|
1881
|
-
product: "admin",
|
|
1882
|
-
description: "Sent once the school has renewed.",
|
|
1842
|
+
description: "Tom getting back in touch with a paying school for the new school year, with a link to book a call.",
|
|
1883
1843
|
params: [...engagementEmailParams],
|
|
1884
|
-
button: { text: "
|
|
1844
|
+
button: { text: "Book a call", link: "https://calendly.com/tom-careerthread/30min" },
|
|
1885
1845
|
type: "engagement",
|
|
1886
|
-
name: "
|
|
1846
|
+
name: "New school year check-in",
|
|
1887
1847
|
recipient: "staff",
|
|
1888
1848
|
group: "Renewals",
|
|
1889
1849
|
},
|
|
@@ -1899,6 +1859,14 @@ exports.emailTemplates = {
|
|
|
1899
1859
|
group: "Invoices",
|
|
1900
1860
|
},
|
|
1901
1861
|
};
|
|
1862
|
+
/**
|
|
1863
|
+
* Where an email button goes: a page on CareerThread, or a full link as it is.
|
|
1864
|
+
*
|
|
1865
|
+
* @param {string} link the button's link from its template.
|
|
1866
|
+
* @return {string} the full URL.
|
|
1867
|
+
*/
|
|
1868
|
+
const emailButtonUrl = (link) => /^https?:\/\//.test(link) ? link : `https://careerthread.co.uk${link}`;
|
|
1869
|
+
exports.emailButtonUrl = emailButtonUrl;
|
|
1902
1870
|
// Whether a resource tagged with a product belongs to a product this organisation has. Untagged, or no product info, shows.
|
|
1903
1871
|
function productTagAvailable(tag, products) {
|
|
1904
1872
|
if (!tag || !products)
|