Implement unified work inbox module

This commit is contained in:
2026-08-06 16:06:17 +02:00
parent 2e89204a0c
commit 3cdab599ff
31 changed files with 3540 additions and 0 deletions
+65
View File
@@ -0,0 +1,65 @@
# Tasks Domain And Unified Work Inbox
## Boundary
Tasks owns explicit work items, their typed assignments, due dates, priorities,
state transitions, source references, and the unified work-inbox presentation.
It does not own the state of a Workflow instance, approval, notification,
Postbox message, Case, Campaign, record, or any other contributed object.
Modules contribute currently authorized `WorkItem` projections through Core's
versioned provider-registration contract. The projection links back to the
source owner, which remains responsible for commands, validation, concurrency,
audit, retention, and recovery. A failing provider is isolated and shown as an
unavailable work source; it cannot make other work disappear.
## Explicit Tasks
An explicit task has:
- a tenant and replay-safe idempotency key;
- title, optional summary, priority, due date, and required action;
- one or more account, group, role, function, function-assignment, or broad
tenant assignments;
- typed source references and provenance;
- an optimistic-concurrency revision and immutable transition evidence.
Function assignments are resolved at read time through the optional IDM
directory. This lets work assigned to an institutional function follow current
responsibility without turning an incumbent into the permanent owner. When IDM
is absent, account, group, role, and explicit assignment references continue to
work; unresolved function work fails closed.
## State And Recovery
Supported states are `open`, `in_progress`, `deferred`, `blocked`, `completed`,
and `cancelled`. Consequential transitions require a strong `If-Match`
precondition and compare-and-set the revision. Replaying task creation with the
same idempotency key returns the same task only when the canonical request is
identical.
Task changes emit Core change-sequence events so optional Notifications,
Workflow Engine, Search, Audit, or reporting consumers can react transactionally.
Database backup and restore is the recovery unit. Domain effects linked from a
task remain subject to the recovery rules of their owner.
## Permissions
- `tasks:item:read`: discover assigned explicit and contributed work;
- `tasks:item:write`: create explicit tasks and advance visible task state;
- `tasks:item:admin`: inspect and recover tenant-wide explicit work.
Current authorization is always rechecked, including for historical or deferred
work. The inbox never widens the permissions of its sources.
## User And Administrator Guidance
Users open **Work**, filter the current inbox, inspect the responsible source,
and either open the source-owned action or advance an explicit task. Completed
and cancelled work is hidden from the default view but remains available through
the history filter.
Administrators assign the Work participant or Work supervisor role and ensure
that IDM is enabled when function-bound work is required. Disabling Tasks
preserves explicit task state. Contributed source work remains with each source
module and becomes visible again when Tasks is re-enabled.