76 lines
2.3 KiB
Markdown
76 lines
2.3 KiB
Markdown
# GovOPlaN Approvals
|
|
|
|
<!-- govoplan-repository-type:start -->
|
|
**Repository type:** module (domain).
|
|
<!-- govoplan-repository-type:end -->
|
|
|
|
`govoplan-approvals` owns generic approval and sign-off chains with trusted delegation, separation of duties, escalation, and signature references. It persists immutable request revisions, append-only decisions and lifecycle evidence, exposes a tenant-scoped API and WebUI, and provides the `approvals.requests` capability for exact-subject approval checks.
|
|
|
|
## Initial Ownership
|
|
|
|
- approval requests
|
|
- sign-off chains
|
|
- delegation and substitution facts
|
|
- four-eyes constraints
|
|
- escalation state
|
|
- signature references
|
|
|
|
## Boundaries
|
|
|
|
This module does not own:
|
|
|
|
- module-specific business decisions
|
|
- workflow orchestration engine
|
|
- identity and RBAC primitives
|
|
|
|
Detailed boundary notes are in [docs/APPROVALS_DOMAIN_BOUNDARY.md](docs/APPROVALS_DOMAIN_BOUNDARY.md).
|
|
|
|
Tenant approval administrators manage reusable chains under
|
|
`Admin > Tenant > Approval templates`. Template edits and publication create
|
|
immutable revisions with content hashes and actor provenance. The history API
|
|
and UI compare any two revisions as structured JSON-pointer changes. The
|
|
request workspace also exposes due-step escalation to approval administrators;
|
|
the server rechecks the due timestamp and request revision before recording the
|
|
transition.
|
|
|
|
Template API additions:
|
|
|
|
- `GET /api/v1/approvals/templates/{template_id}/history`
|
|
- `GET /api/v1/approvals/templates/{template_id}/compare`
|
|
|
|
## Integrations
|
|
|
|
Optional integrations:
|
|
|
|
- workflow engine
|
|
- audit
|
|
- files
|
|
- notifications
|
|
|
|
## Development Install
|
|
|
|
From the core checkout:
|
|
|
|
```bash
|
|
cd /mnt/DATA/git/govoplan-core
|
|
./.venv/bin/python -m pip install -e ../govoplan-approvals
|
|
```
|
|
|
|
Focused runtime verification:
|
|
|
|
```bash
|
|
cd /mnt/DATA/git/govoplan-approvals
|
|
PYTHONPATH=src:/mnt/DATA/git/govoplan-core/src /mnt/DATA/git/govoplan-core/.venv/bin/python -m unittest discover -s tests
|
|
```
|
|
|
|
## 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/approvals`.
|
|
|
|
From the core checkout, labels can be synced once a local `GITEA_TOKEN` is available:
|
|
|
|
```bash
|
|
cd /mnt/DATA/git/govoplan-core
|
|
/mnt/DATA/git/govoplan/tools/gitea/gitea-sync-labels.py --root /mnt/DATA/git/govoplan-approvals --apply
|
|
```
|