diff --git a/src/api/config.js b/src/api/config.js index ccd341c..1a1ecd4 100644 --- a/src/api/config.js +++ b/src/api/config.js @@ -154,7 +154,11 @@ const STATE_ACTIVITIES = { ], 'zk-state-payment': [ { uid: 'zk-act-realise', label: 'Confirm premium received', by: 'you', role: 'do' }, - { uid: 'zk-act-nudge', label: 'Chase the payment', by: 'Engage AI', role: 'again' }, + // Not offered: the chase is a SCHEDULED activity now (86), booked 24h + // out by Request Premium and re-booked at 48h to a cap of three. It + // carries zero roles so the scheduler can perform it at all, which means + // a button here would 403 for everyone. To actually reach the customer, + // use Reply to the customer — that sends something. { uid: 'zk-act-payment', label: 'Request Premium', by: 'Engage AI', role: 'force' }, ], 'zk-state-issued': [ diff --git a/src/api/permissions.js b/src/api/permissions.js index c1c260c..d35525d 100644 --- a/src/api/permissions.js +++ b/src/api/permissions.js @@ -49,7 +49,10 @@ export const ACTIVITY_ROLES = { 'zk-act-uw-decline': ['sme_underwriter'], 'zk-act-payment': ['ops_admin', 'ai_engage'], - 'zk-act-nudge': ['ops_admin', 'ai_engage'], + // Zero roles in the workflow since 86 — the scheduler performs it, and a + // scheduled activity with any role list fails silently. Left here as an + // empty list so the mirror still records that the activity exists. + 'zk-act-nudge': [], 'zk-act-realise': ['ops_admin'], 'zk-act-onboard': ['ops_admin', 'ai_engage'], 'zk-act-resume': ['ops_admin', 'partner_agent', 'bank_rm', 'csr_direct'],