feat(tickets): deliver canonical operational lifecycle
This commit is contained in:
@@ -11,7 +11,11 @@ resolution.
|
||||
|
||||
Its runtime module ID is `tickets`.
|
||||
|
||||
This repository is initialized as a discoverable module seed. It exposes a module manifest, initial permissions, role templates, documentation metadata, Gitea workflow templates, and a focused manifest test. It intentionally does not yet add HTTP routes, database models, migrations, or WebUI navigation.
|
||||
The module now provides the first canonical vertical slice: tenant-safe ticket
|
||||
persistence, guarded lifecycle actions, distinct report/triage/assignment/
|
||||
resolution permissions, participants, typed links and attachment references,
|
||||
comments, immutable revision history, Search contributions, soft deletion, and
|
||||
optional Helpdesk-routing and Case-escalation capability boundaries.
|
||||
|
||||
## Initial Ownership
|
||||
|
||||
@@ -52,6 +56,24 @@ Expected optional integrations:
|
||||
- notifications
|
||||
- search
|
||||
|
||||
Optional providers are discovered through Core contracts. Tickets remains
|
||||
usable when they are absent: queue and service-target selection becomes manual,
|
||||
Case escalation is disabled, file attachments remain typed references, and
|
||||
global Search indexing is unavailable. The API and WebUI expose these
|
||||
consequences rather than silently hiding actions.
|
||||
|
||||
## Runtime Surface
|
||||
|
||||
- `/api/v1/tickets` for reporting, listing, and tenant-safe discovery
|
||||
- guarded triage, assignment, participant, link, comment, resolution, and
|
||||
Case-escalation actions
|
||||
- immutable `/history` evidence and optimistic revision checks
|
||||
- `/availability` diagnostics for optional integrations
|
||||
- `/tickets` queue/detail WebUI using shared workspace and dialog primitives
|
||||
- `tickets.registry` and `privacy.dsar.tickets` provider capabilities
|
||||
- `tickets.tickets` Search source with backfill, authorization rechecks, and
|
||||
idempotent event changes
|
||||
|
||||
## Development Install
|
||||
|
||||
From the core checkout:
|
||||
@@ -61,11 +83,12 @@ cd /mnt/DATA/git/govoplan-core
|
||||
./.venv/bin/python -m pip install -e ../govoplan-tickets
|
||||
```
|
||||
|
||||
Focused manifest verification:
|
||||
Focused verification:
|
||||
|
||||
```bash
|
||||
cd /mnt/DATA/git/govoplan-tickets
|
||||
PYTHONPATH=src:/mnt/DATA/git/govoplan-core/src /mnt/DATA/git/govoplan-core/.venv/bin/python -m unittest discover -s tests
|
||||
PYTHONPATH=src:/mnt/DATA/git/govoplan-core/src /mnt/DATA/git/govoplan/.venv/bin/python -m unittest discover -s tests
|
||||
cd webui && node scripts/test-interface-pattern.mjs
|
||||
```
|
||||
|
||||
## Gitea Workflow
|
||||
|
||||
Reference in New Issue
Block a user