Add shared automation and WebUI editing primitives
This commit is contained in:
@@ -29,6 +29,10 @@ of module capabilities.
|
||||
## Action Definition
|
||||
|
||||
An `ActionDefinition` describes something a human or system actor can request.
|
||||
The versioned runtime DTOs and provider protocol live in
|
||||
`govoplan_core.core.automation`; domain modules implement the protocol and
|
||||
Workflow resolves providers through module capabilities rather than importing
|
||||
their implementations.
|
||||
|
||||
Recommended fields:
|
||||
|
||||
@@ -110,6 +114,11 @@ Automation should use explicit failure states:
|
||||
|
||||
These states should be visible in workflow, task, and admin diagnostics.
|
||||
|
||||
The contract names these states explicitly as `ActionExecutionState`, alongside
|
||||
`pending`, `running`, and `completed`. A provider returns observed effects even
|
||||
for partial failures; the runner, not the provider, owns durable attempts,
|
||||
recovery decisions, and workflow advancement.
|
||||
|
||||
## Boundary
|
||||
|
||||
Core may own stable DTOs, registry contracts, and generic audit/event hooks.
|
||||
|
||||
@@ -189,6 +189,11 @@ python -m celery -A govoplan_core.celery_app:celery beat --loglevel INFO
|
||||
| `FILE_STORAGE_S3_ACCESS_KEY_ID` | empty | Secret; inject through deployment environment. |
|
||||
| `FILE_STORAGE_S3_SECRET_ACCESS_KEY` | empty | Secret; inject through deployment environment. |
|
||||
| `FILE_STORAGE_S3_BUCKET` | `files` | Managed-file object bucket. |
|
||||
| `FILE_STORAGE_S3_DEPLOYMENT_MANAGED` | `false` | Reserved for the installer-owned `http://garage:3900` service. It does not authorize arbitrary internal or external S3 endpoints. |
|
||||
| `FILE_ARCHIVE_MAX_ENTRIES` | `10000` | Maximum declared entries accepted during archive preview and confirmation. |
|
||||
| `FILE_ARCHIVE_MAX_EXPANDED_BYTES` | `2147483648` | Maximum actual expanded bytes across selected archive content. |
|
||||
| `FILE_ARCHIVE_MAX_EXPANSION_RATIO` | `100` | Maximum expanded-to-compressed archive ratio. |
|
||||
| `FILE_ARCHIVE_PREVIEW_TTL_SECONDS` | `1800` | Lifetime of the sealed actor/archive/destination-bound preview token. |
|
||||
|
||||
Legacy `S3_*` settings remain for older storage paths but new deployments should
|
||||
prefer `FILE_STORAGE_*`.
|
||||
|
||||
@@ -245,6 +245,25 @@ instead of reproducing their behavior.
|
||||
- Feedback and confirmation use `Dialog`, `ConfirmDialog`, or
|
||||
`DismissibleAlert`. They never fall back to `window.alert`.
|
||||
|
||||
### DUE-012: Rich HTML Editing Contract
|
||||
|
||||
Decision: modules that edit persisted HTML use the central
|
||||
`WysiwygEditor` exported from `@govoplan/core-webui/wysiwyg`.
|
||||
|
||||
- The dedicated subpath is intentional: the editor and its engine remain a
|
||||
shared Core contract without adding their code to module combinations that
|
||||
never consume rich-text editing.
|
||||
- Consumers provide controlled HTML and domain-specific token labels. The
|
||||
editor owns visual/source switching, formatting, links, images, safe URL
|
||||
handling, and atomic inline token rendering; it does not own template
|
||||
semantics or persistence.
|
||||
- Existing HTML outside the supported visual subset opens in source mode.
|
||||
Rendering the value must not rewrite it, and users receive an explicit
|
||||
warning before choosing the visual surface.
|
||||
- Domain placeholders remain their original serialized text. Atomic token
|
||||
presentation is an editing aid only, so backend renderers and existing
|
||||
templates do not need a new storage format.
|
||||
|
||||
#### FieldLabel Omission Register
|
||||
|
||||
Every Core field surface that intentionally does not render `FieldLabel` is
|
||||
|
||||
Reference in New Issue
Block a user