GovOPlaN Tickets
Repository type: module (domain).
govoplan-tickets is the generic GovOPlaN work-intake and service-ticket
module. It covers public and internal reports, requests, incidents, problems,
queues, triage, routing, assignment, service-level state, and auditable
resolution.
Its runtime module ID is tickets.
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
- ticket identity, type, priority, state, and queue
- public and internal intake profiles
- reporter/requester and affected-object references
- triage, routing, assignment, and service-level facts
- resolution evidence and escalation links
Boundaries
Tickets are operational work items. They may be resolved entirely within a queue or linked to a task, project, asset, facility, or formal case.
Cases are different: govoplan-cases owns the authoritative procedural record
for an administrative matter, including parties, evidence, decisions,
procedural deadlines, and retention. Escalating a ticket creates a stable link;
it does not rewrite the ticket as a case.
Detailed boundary notes are in docs/TICKETS_DOMAIN_BOUNDARY.md.
Integrations
Expected optional integrations:
- cases
- projects
- wiki
- assets
- facilities
- forms_runtime
- portal
- files
- workflow
- tasks
- 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/ticketsfor reporting, listing, and tenant-safe discovery- guarded triage, assignment, participant, link, comment, resolution, and Case-escalation actions
- immutable
/historyevidence and optimistic revision checks /availabilitydiagnostics for optional integrations/ticketsqueue/detail WebUI using shared workspace and dialog primitivestickets.registryandprivacy.dsar.ticketsprovider capabilitiestickets.ticketsSearch source with backfill, authorization rechecks, and idempotent event changes
Development Install
From the core checkout:
cd /mnt/DATA/git/govoplan-core
./.venv/bin/python -m pip install -e ../govoplan-tickets
Focused verification:
cd /mnt/DATA/git/govoplan-tickets
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
Issue templates are installed under .gitea/, and the shared label taxonomy is
copied to docs/gitea-labels.json with the module label module/tickets.
From the core checkout, labels can be synced once a local GITEA_TOKEN is available:
cd /mnt/DATA/git/govoplan-core
/mnt/DATA/git/govoplan/tools/gitea/gitea-sync-labels.py --root /mnt/DATA/git/govoplan-tickets --apply