Metadata-Version: 2.4
Name: govoplan-portal
Version: 0.1.17
Summary: GovOPlaN service discovery and public portal module.
Author: GovOPlaN
Requires-Python: >=3.12
Description-Content-Type: text/markdown
Requires-Dist: govoplan-core>=0.1.17

# govoplan-portal

<!-- govoplan-repository-type:start -->
**Repository type:** module (domain).
<!-- govoplan-repository-type:end -->

The service-directory route, state, blocker, and accessibility mapping is
recorded in
[`docs/INTERFACE_PATTERN_MIGRATION.md`](docs/INTERFACE_PATTERN_MIGRATION.md).

Portal owns service discovery, presentation, and channel entry. Its
`portal.service_directory` capability projects provider-owned, versioned
service definitions into available, explainably unavailable, or undiscoverable
entries. It does not persist the institutional service promise or import Cases,
Forms, Workflow, Access, or Policy tables.

The capability works in a reduced composition without a Services provider by
returning an empty directory. When a provider is present, provider-level access
filtering remains authoritative and Portal adds only presentation-oriented
availability checks for publication, effective time, audience, module, and
capability requirements.

The tenant-scoped `/api/v1/portal/services` endpoint and `/portal` WebUI expose
the projection. Audience visibility is derived from trusted principal and
active function-assignment state on the server.

`POST /api/v1/portal/services/{service_id}/launch` re-fetches and re-evaluates
the exact Service revision before any effect. URL entries return a validated
redirect. Case, form, and workflow bindings delegate through the optional
`cases.service_launcher`, `forms_runtime.service_launcher`, and
`workflow_engine.service_launcher` contracts; each is tenant-bound and
replay-safe. A missing owner launcher makes the entry explainably unavailable.
Form launch resolves an exact published `<form-id>/<revision>` and returns the
owner's Form-instance route rather than persisting values in Portal.

See [docs/SERVICE_DIRECTORY_CONCEPT.md](docs/SERVICE_DIRECTORY_CONCEPT.md).
