Verification UI
Visual flow builder, reviewer panel & pending inbox
The Verification engine has three front-ends. VerificationFlowPage is a drag-and-drop graph builder for authoring approval flows; VerificationPanel shows where one record sits and lets an approver decide; PendingVerifications is the reviewer's inbox of everything awaiting them. Together they cover authoring, acting and triaging — all on top of the same generated verification actions.
The builder writes exactly the graph the VerificationService runs (step / verifier / notification nodes, edges, verifier configs and notification rules), so what an admin draws is what the backend executes.
VerificationFlowPage — the builder#
A node-graph editor for one entity's approval flows. Drag step, verifier and notification nodes onto a canvas, connect them, configure each, then save and publish. It also embeds the pending queue and per-entity status tabs.
node types'step' | 'verifier' | 'notification'Optionalstep nodes are ordered stages; verifier nodes attach an approver (a user or a role, with require_signature and all_must_approve); notification nodes fire messages on a trigger. Edges (default / conditional / success / failure) wire them together.
flow actionsflowList / flowGet / flowSave / flowPublish / flowDeleteOptionalCRUD over flow definitions. flowSave persists the whole FlowGraphData (steps, edges, verifier_configs, notification_rules, recipients, channels); flowPublish flips is_draft off so the flow can start. trigger_on (create / update / delete / manual) decides when a flow auto-starts.
verification actionspending / decide / start / status / entityStatusesOptionalPower the embedded tabs: the pending inbox, deciding on a step, manually starting a flow, and the per-entity status board (showPending / showEntityStatuses toggle these).
listUsers / listRolesdata sourcesOptionalOptional actions that populate the verifier and recipient pickers, so a verifier node can be bound to a real user or role and a notification rule to real recipients.
VerificationPanel — act on one record#
Embed this next to a record to show its approval state and let the current user decide. Variants suit a full page, a sidebar or an inline strip.
statusAction / decideActionrequiredOptionalstatusAction loads the instance, current step, progress and history for { entity_name, entity_id }; decideAction submits approve/reject for the current step (with a reason and, when required, a signature).
startAction + allowStartmanual startOptionalWhen a flow is triggered manually, allowStart shows a start button backed by startAction (optionally for a specific flowId).
variant / showProgress / showHistorydisplayOptional'default' | 'compact' | 'inline' layout; toggle the step progress bar and the decision history. onDecisionMade / onFlowStarted / onFlowCompleted fire for your side-effects.
PendingVerifications — the inbox#
A standalone list of every record awaiting the current user's decision — the fastest way to give reviewers a queue.
pendingActionVerificationPendingActionOptionalLists PendingItems (entity, flow name, step, whether a signature is required, when it arrived) scoped to the signed-in reviewer.
decideActionVerificationDecideActionOptionalApprove or reject straight from the row; onDecisionMade(entityName, entityId) lets you refresh the queue.
Related sections