@peopl-health/nexus 5.67.3 → 5.67.4

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.
@@ -194,6 +194,7 @@ const escalationReviewSchema = new mongoose.Schema({
194
194
  followUpDecision: { type: Number, default: null },
195
195
  draftDueAt: { type: Date, default: null },
196
196
  draftAttempts: { type: Number, default: 0 },
197
+ draftFailedAt: { type: Date, default: null },
197
198
  doctorAlerts: { type: [doctorAlertSchema], default: [] },
198
199
  doctorAlertDueAt: { type: Date, default: null },
199
200
  doctorAlertKind: { type: String, enum: ['initial', 'realert', null], default: null },
@@ -1118,7 +1118,7 @@ async function generateBotDraft({ id, lease = null } = {}) {
1118
1118
  };
1119
1119
  const saved = await getEscalationReview().findOneAndUpdate(
1120
1120
  { _id: review._id, status: { $in: DOCUMENTING_STATUSES }, draftDueAt: lease, drafts: { $size: (review.drafts ?? []).length } },
1121
- { $push: { drafts: entry }, $set: { status: 'draft_ready', draftDueAt: null }, $unset: { identityBlock: '' } },
1121
+ { $push: { drafts: entry }, $set: { status: 'draft_ready', draftDueAt: null, draftFailedAt: null }, $unset: { identityBlock: '' } },
1122
1122
  { new: true },
1123
1123
  ).lean();
1124
1124
  if (saved) await audit(saved, DRAFT_OPERATOR, null, { action: 'draft_saved', draftNumber: saved.drafts.length });
@@ -1811,6 +1811,7 @@ async function syncEscalationReviewCase({ id, syncedBy, requestId = null } = {})
1811
1811
 
1812
1812
  module.exports = {
1813
1813
  BOOKKEEPING,
1814
+ DOCUMENTING_STATUSES,
1814
1815
  PRE_DECISION_STATUSES,
1815
1816
  _resetEscalationReviewIndexes,
1816
1817
  addCallLog,
@@ -3,7 +3,7 @@ const { createIntervalSweeper } = require('../utils/intervalSweeper');
3
3
  const { withTimeout } = require('../utils/timeoutUtils');
4
4
  const { getEscalationReview } = require('../models/escalationReviewModel');
5
5
 
6
- const { BOOKKEEPING, generateBotDraft } = require('./escalationReviewService');
6
+ const { BOOKKEEPING, DOCUMENTING_STATUSES, generateBotDraft } = require('./escalationReviewService');
7
7
 
8
8
  const SWEEP_LIMIT = 1;
9
9
  const DEFAULT_SWEEP_INTERVAL_MS = 30 * 1000;
@@ -34,6 +34,14 @@ async function draftReview(EscalationReview, { _id, draftDueAt, draftAttempts =
34
34
  escalationReviewId: String(_id), attempts: draftAttempts + 1,
35
35
  });
36
36
  }
37
+ if (retry && !willRetry) {
38
+ const marked = await EscalationReview.updateOne(
39
+ { _id, draftDueAt: lease, closedAt: null, status: { $in: DOCUMENTING_STATUSES } },
40
+ { $set: { draftDueAt: null, draftFailedAt: new Date() } },
41
+ BOOKKEEPING,
42
+ );
43
+ if (marked.matchedCount) return false;
44
+ }
37
45
  await EscalationReview.updateOne(
38
46
  { _id, draftDueAt: lease },
39
47
  willRetry
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peopl-health/nexus",
3
- "version": "5.67.3",
3
+ "version": "5.67.4",
4
4
  "description": "Core messaging and assistant library for WhatsApp communication platforms",
5
5
  "keywords": [
6
6
  "whatsapp",