placementt-core 1.400.1104 → 1.400.1105

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.
@@ -31,6 +31,31 @@ const timeOf = (value) => {
31
31
  const time = new Date(value).getTime();
32
32
  return Number.isNaN(time) ? undefined : time;
33
33
  };
34
+ /** A day with no time on it, e.g. "2026-09-20". */
35
+ const DATE_ONLY = /^\d{4}-\d{2}-\d{2}$/;
36
+ const DAY = 24 * 60 * 60 * 1000;
37
+ /**
38
+ * One piece of evidence as a moment to compare against the ask.
39
+ *
40
+ * Not every record carries a timestamp. An activity's `dateCreated` is written as a
41
+ * day, and a day read as midnight throws away the whole of the day the ask went out
42
+ * on: a pupil asked at 08:00 who logs something at 10:00 would go on being asked
43
+ * until tomorrow, which is exactly the nag the task exists to stop.
44
+ *
45
+ * So a day-stamped record counts at the END of its day. The cost is that something
46
+ * logged earlier on the morning of the ask counts too, which is the right way round
47
+ * to be wrong: it is the pupil's own day's work either way, and the alternative is
48
+ * telling them they have not done the thing they have just done.
49
+ *
50
+ * @param {string} [value] the stored date.
51
+ * @return {number|undefined} the moment to compare, or nothing when unparseable.
52
+ */
53
+ const evidenceTime = (value) => {
54
+ const time = timeOf(value);
55
+ if (time === undefined)
56
+ return undefined;
57
+ return DATE_ONLY.test(value) ? time + DAY - 1 : time;
58
+ };
34
59
  /**
35
60
  * The dates one source's evidence carries, unfiltered and unsorted.
36
61
  *
@@ -69,7 +94,7 @@ const evaluateSurveyEvidence = (args) => {
69
94
  const asked = Math.max(1, Math.floor(args.minimum ?? rule.minimum ?? 1));
70
95
  const from = timeOf(sentAt);
71
96
  const qualifying = (0, exports.surveyEvidenceDates)(rule.source, evidence)
72
- .map((date) => ({ date, time: timeOf(date) }))
97
+ .map((date) => ({ date, time: evidenceTime(date) }))
73
98
  .filter((e) => e.time !== undefined && (from === undefined || e.time >= from))
74
99
  .sort((a, b) => a.time - b.time);
75
100
  const satisfied = qualifying.length >= asked;
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/surveys/evidence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/surveys/evidence.ts"],"names":[],"mappings":"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"}
@@ -65,6 +65,36 @@ describe("evaluateSurveyEvidence", () => {
65
65
  });
66
66
  expect(result).toMatchObject({ count: 1, satisfied: true, satisfiedAt: SENT });
67
67
  });
68
+ /**
69
+ * An activity's `dateCreated` is a day, not a timestamp — see the web's
70
+ * CreateStudentActivity, which writes it through convertDate's "dbstring". Read
71
+ * as midnight it loses the day of the ask, and a pupil who logs something the
72
+ * same morning they are emailed goes on being chased until tomorrow.
73
+ */
74
+ it("counts a day-stamped record logged on the day of the ask", () => {
75
+ const result = (0, evidence_1.evaluateSurveyEvidence)({
76
+ rule: activitiesRule,
77
+ sentAt: SENT,
78
+ evidence: { activities: [{ dateCreated: "2026-10-01" }] },
79
+ });
80
+ expect(result).toMatchObject({ count: 1, satisfied: true, satisfiedAt: "2026-10-01" });
81
+ });
82
+ it("still ignores a day-stamped record from before the ask", () => {
83
+ expect((0, evidence_1.evaluateSurveyEvidence)({
84
+ rule: activitiesRule,
85
+ sentAt: SENT,
86
+ evidence: { activities: [{ dateCreated: "2026-09-30" }] },
87
+ })).toMatchObject({ count: 0, satisfied: false });
88
+ });
89
+ it("takes a timestamp on the day of the ask at its own time", () => {
90
+ // Only a date-only value is stretched across its day; something that says
91
+ // what time it happened is taken at its word.
92
+ expect((0, evidence_1.evaluateSurveyEvidence)({
93
+ rule: activitiesRule,
94
+ sentAt: SENT,
95
+ evidence: { activities: [{ dateCreated: "2026-10-01T07:00:00.000Z" }] },
96
+ })).toMatchObject({ count: 0, satisfied: false });
97
+ });
68
98
  it("honours a per-launch minimum over the kind's own", () => {
69
99
  const evidence = { savedNextSteps: entries(AFTER, LATER) };
70
100
  expect((0, evidence_1.evaluateSurveyEvidence)({ rule: nextStepsRule, sentAt: SENT, evidence }).satisfied).toBe(false);
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.test.js","sourceRoot":"","sources":["../../src/surveys/evidence.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evidence.test.js","sourceRoot":"","sources":["../../src/surveys/evidence.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "private": false,
3
3
  "name": "placementt-core",
4
4
  "author": "Placementt",
5
- "version": "1.400.1104",
5
+ "version": "1.400.1105",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
8
8
  "scripts": {
@@ -81,6 +81,39 @@ describe("evaluateSurveyEvidence", () => {
81
81
  expect(result).toMatchObject({count: 1, satisfied: true, satisfiedAt: SENT});
82
82
  });
83
83
 
84
+ /**
85
+ * An activity's `dateCreated` is a day, not a timestamp — see the web's
86
+ * CreateStudentActivity, which writes it through convertDate's "dbstring". Read
87
+ * as midnight it loses the day of the ask, and a pupil who logs something the
88
+ * same morning they are emailed goes on being chased until tomorrow.
89
+ */
90
+ it("counts a day-stamped record logged on the day of the ask", () => {
91
+ const result = evaluateSurveyEvidence({
92
+ rule: activitiesRule,
93
+ sentAt: SENT,
94
+ evidence: {activities: [{dateCreated: "2026-10-01"}]},
95
+ });
96
+ expect(result).toMatchObject({count: 1, satisfied: true, satisfiedAt: "2026-10-01"});
97
+ });
98
+
99
+ it("still ignores a day-stamped record from before the ask", () => {
100
+ expect(evaluateSurveyEvidence({
101
+ rule: activitiesRule,
102
+ sentAt: SENT,
103
+ evidence: {activities: [{dateCreated: "2026-09-30"}]},
104
+ })).toMatchObject({count: 0, satisfied: false});
105
+ });
106
+
107
+ it("takes a timestamp on the day of the ask at its own time", () => {
108
+ // Only a date-only value is stretched across its day; something that says
109
+ // what time it happened is taken at its word.
110
+ expect(evaluateSurveyEvidence({
111
+ rule: activitiesRule,
112
+ sentAt: SENT,
113
+ evidence: {activities: [{dateCreated: "2026-10-01T07:00:00.000Z"}]},
114
+ })).toMatchObject({count: 0, satisfied: false});
115
+ });
116
+
84
117
  it("honours a per-launch minimum over the kind's own", () => {
85
118
  const evidence = {savedNextSteps: entries(AFTER, LATER)};
86
119
  expect(evaluateSurveyEvidence({rule: nextStepsRule, sentAt: SENT, evidence}).satisfied).toBe(false);
@@ -58,6 +58,33 @@ const timeOf = (value?: string): number|undefined => {
58
58
  return Number.isNaN(time) ? undefined : time;
59
59
  };
60
60
 
61
+ /** A day with no time on it, e.g. "2026-09-20". */
62
+ const DATE_ONLY = /^\d{4}-\d{2}-\d{2}$/;
63
+
64
+ const DAY = 24 * 60 * 60 * 1000;
65
+
66
+ /**
67
+ * One piece of evidence as a moment to compare against the ask.
68
+ *
69
+ * Not every record carries a timestamp. An activity's `dateCreated` is written as a
70
+ * day, and a day read as midnight throws away the whole of the day the ask went out
71
+ * on: a pupil asked at 08:00 who logs something at 10:00 would go on being asked
72
+ * until tomorrow, which is exactly the nag the task exists to stop.
73
+ *
74
+ * So a day-stamped record counts at the END of its day. The cost is that something
75
+ * logged earlier on the morning of the ask counts too, which is the right way round
76
+ * to be wrong: it is the pupil's own day's work either way, and the alternative is
77
+ * telling them they have not done the thing they have just done.
78
+ *
79
+ * @param {string} [value] the stored date.
80
+ * @return {number|undefined} the moment to compare, or nothing when unparseable.
81
+ */
82
+ const evidenceTime = (value?: string): number|undefined => {
83
+ const time = timeOf(value);
84
+ if (time === undefined) return undefined;
85
+ return DATE_ONLY.test(value as string) ? time + DAY - 1 : time;
86
+ };
87
+
61
88
  /**
62
89
  * The dates one source's evidence carries, unfiltered and unsorted.
63
90
  *
@@ -107,7 +134,7 @@ export const evaluateSurveyEvidence = (args: {
107
134
  const from = timeOf(sentAt);
108
135
 
109
136
  const qualifying = surveyEvidenceDates(rule.source, evidence)
110
- .map((date) => ({date, time: timeOf(date)}))
137
+ .map((date) => ({date, time: evidenceTime(date)}))
111
138
  .filter((e): e is {date: string, time: number} =>
112
139
  e.time !== undefined && (from === undefined || e.time >= from))
113
140
  .sort((a, b) => a.time - b.time);