feat(tickets): deliver canonical operational lifecycle

This commit is contained in:
2026-08-22 11:41:45 +02:00
parent b4bb52d8b8
commit 7cbf3bed96
25 changed files with 4742 additions and 106 deletions
+26 -3
View File
@@ -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