zemion 2be4a0c598
Module Package Release / publish-packages (push) Successful in 13s
perf(tickets): paginate scoped records in SQL
Release v0.1.23. Coordinated integrity review: GovOPlaN/govoplan-core#298.
2026-09-08 12:19:40 +02:00
2026-07-10 21:57:26 +02:00
2026-07-10 18:39:10 +02:00

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
  • mail
  • 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:

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
S
Description
GovOPlaN ticket module for reports, requests, incidents, triage, queues, routing, service work, and escalation into formal cases.
Readme AGPL-3.0
287 KiB
Languages
Python 72.4%
TypeScript 24.2%
CSS 2.6%
JavaScript 0.8%