/* Plain-English names for audit ops, and the ops worth a mark in a list of hundreds. Moved here from * the old /app/activity page. */ export const LABELS: Record = { "issue.create": "Issued garments", "issue.return": "Recorded a return", "issue.exchange": "Exchanged a size", "handback.commit": "Recorded a hand back", "issue.delete": "Deleted an issue", "issue.receipt": "Attached a signed receipt", "stocktake.apply": "Committed a stocktake", "stock.reorder": "Changed a par level", "stock.moves": "Adjusted stock", "stock.orderFlagged": "Raised an order from low stock", "stock.orderLine": "Added a line to the draft order", "catalog.add": "Added a garment", "catalog.update": "Edited a garment", "catalog.delete": "Deleted a garment", "catalog.duplicate": "Duplicated a garment", "catalog.bulk": "Bulk-changed the catalogue", "catalog.variantAdd": "Added a size", "catalog.removeSize": "Removed a size", "barcode.bind": "Bound a barcode", "barcode.unbind": "Unbound a barcode", "order.create": "Created an order", "order.receive": "Received an order", "order.status": "Changed an order’s status", "order.update": "Edited an order", "order.duplicate": "Duplicated an order", "order.lineAdd": "Added an order line", "order.lineQty": "Changed an order quantity", "order.lineRemove": "Removed an order line", "staff.save": "Added or edited a staff record", "staff.patch": "Edited a staff record", "staff.delete": "Deleted a staff record", "dept.save": "Edited a department", "dept.delete": "Deleted a department", "supplier.add": "Added a supplier", "supplier.update": "Edited a supplier", "supplier.remove": "Removed a supplier", "location.save": "Added or edited a location", "location.delete": "Deleted a location", "location.place": "Placed stock on a shelf", "approval.add": "Recorded a manager's approval", "approval.remove": "Removed a manager's approval", "alteration.add": "Logged an alteration", "alteration.advance": "Advanced an alteration", "alteration.remove": "Removed an alteration", "handin.add": "Recorded a hand-in", "pickup.contacted": "Marked a pickup contacted", "pickup.pickedUp": "Marked a pickup collected", "pickup.deliver": "Delivered to a ward", "pickup.deliverWard": "Delivered a ward round", "request.raise": "Raised a request for somebody", "request.pick": "Started picking a request", "request.hold": "Held a request at the counter", "request.round": "Put a request on the ward round", "request.collected": "Handed a request over", "request.reply": "Wrote back about a request", "request.reassign": "Sent a request to a different approver", "request.withdraw": "Withdrew a request", "damage.handedIn": "Took a damaged garment back", "dispute.resolve": "Closed a record query", "notice.set": "Changed the ward notice", "kitcheck.open": "Started a kit check", "kitcheck.close": "Closed a kit check", "waitlist.offer": "Offered a waiting size", "staff.selfCode": "Made a staff-app activation code", "staff.selfClear": "Cancelled an activation code", "staff.selfUnlink": "Removed somebody’s staff-app access", "users.add": "Invited a user", "users.update": "Changed a user", "users.remove": "Removed a user", "settings.update": "Changed settings", "import.rows": "Imported data", "backup.restore": "Restored a backup", "data.reset": "Reset facility data", "data.wipeActivity": "Wiped activity history", "me.password": "Changed their own password", "me.profile": "Edited their own profile", "me.deleteAccount": "Deleted their own account", /* Signing in and out, and the second factor. * * The page promises "every change made in this facility", and who reached the account is part of * that — a stock adjustment nobody disputes reads differently next to a run of failed sign-ins * from an address nobody recognises. Without these lines the trail rendered the raw op names. */ "auth:signin": "Signed in", "auth:signin.failed": "A failed sign-in", "auth:signin.refused": "Sign-in refused (deactivated)", "auth:signout": "Signed out", "auth:signup": "Created the facility", "auth:password.reset": "Set a new password from a reset link", "2fa:setup": "Started two-factor setup", "2fa:enable": "Turned two-factor on", "2fa:disable": "Turned two-factor OFF", "2fa:regenerate": "Made new recovery codes", /* The staff app. Every one of these is somebody on a ward changing something the linen room has * to live with, so they belong in the same trail rather than a second one nobody opens. */ "staff:signin": "Signed in to the staff app", "staff:signin.failed": "A failed staff-app sign-in", "staff:signin.refused": "Staff-app sign-in refused (deactivated)", "staff:signout": "Signed out of the staff app", "staff:activate": "Claimed their own record", "staff:request.create": "Raised a uniform request", "staff:request.approve": "Approved a request (in the app)", "staff:request.decline": "Declined a request (in the app)", "staff:request.approve.email": "Approved a request (email link)", "staff:request.decline.email": "Declined a request (email link)", "staff:request.message": "Wrote about a request", "staff:round.sign": "Signed for a ward delivery", "staff:round.claim": "Confirmed a ward bag was collected", "staff:damage.report": "Reported damage", "staff:dispute.raise": "Said their record is wrong", "staff:waitlist.join": "Joined a waiting list", "staff:waitlist.leave": "Left a waiting list", "staff:waitlist.accept": "Took up a waitlist offer", "staff:kit.answer": "Answered a kit check", "staff:account.password": "Changed their own staff-app password", }; /** Operations worth noticing in a list of hundreds. */ export const NOTABLE = new Set([ "catalog.delete", "catalog.removeSize", "staff.delete", "dept.delete", "location.delete", "supplier.remove", "users.add", "users.remove", "users.update", "settings.update", "backup.restore", "data.reset", "data.wipeActivity", "me.deleteAccount", "catalog.bulk", // Turning the second factor off weakens every account in the facility, and a refused sign-in is // somebody with a password trying to get in after their access was taken away. Both are worth // catching an eye in a list of hundreds. "2fa:disable", "auth:signin.refused", "staff:signin.refused", // The two ends of staff-app access: selfCode mints a credential that opens somebody's record, // selfUnlink takes their account away. Both are the linen room reaching into a person's access // rather than into stock, which is exactly what an admin is looking for when they open this. "staff.selfCode", "staff.selfUnlink", ]);