Files
git.stella-ops.org/docs/features/unchecked/web/policy-studio-ui.md

48 lines
3.1 KiB
Markdown

# Policy Studio UI (Monaco Editor, Simulation, Approvals)
## Module
Web
## Status
IMPLEMENTED
## Description
Full Policy Studio authoring environment with Monaco-based DSL editor (stella-dsl@1 syntax highlighting, IntelliSense), policy simulation panel with deterministic diff rendering, guided rule builder, YAML editor with schema validation, submit/review/approve workflow with two-person approval, run viewer dashboards, and explain view with evidence overlay exports.
## Implementation Details
- **Feature directory**: `src/Web/StellaOps.Web/src/app/features/policy-studio/`
- **Components**:
- `conflict-visualizer` (`src/Web/StellaOps.Web/src/app/features/policy-studio/ai/conflict-visualizer.component.ts`)
- `live-rule-preview` (`src/Web/StellaOps.Web/src/app/features/policy-studio/ai/live-rule-preview.component.ts`)
- `test-case-panel` (`src/Web/StellaOps.Web/src/app/features/policy-studio/ai/test-case-panel.component.ts`)
- `version-history` (`src/Web/StellaOps.Web/src/app/features/policy-studio/ai/version-history.component.ts`)
- `policy-approvals` (`src/Web/StellaOps.Web/src/app/features/policy-studio/approvals/policy-approvals.component.ts`)
- `policy-dashboard` (`src/Web/StellaOps.Web/src/app/features/policy-studio/dashboard/policy-dashboard.component.ts`)
- `policy-editor` (`src/Web/StellaOps.Web/src/app/features/policy-studio/editor/policy-editor.component.ts`)
- `policy-explain` (`src/Web/StellaOps.Web/src/app/features/policy-studio/explain/policy-explain.component.ts`)
- `policy-nl-input` (`src/Web/StellaOps.Web/src/app/features/policy-studio/nl-input/policy-nl-input.component.ts`)
- `policy-rule-builder` (`src/Web/StellaOps.Web/src/app/features/policy-studio/rule-builder/policy-rule-builder.component.ts`)
- `policy-simulation` (`src/Web/StellaOps.Web/src/app/features/policy-studio/simulation/policy-simulation.component.ts`)
- `policy-workspace` (`src/Web/StellaOps.Web/src/app/features/policy-studio/workspace/policy-workspace.component.ts`)
- `policy-yaml-editor` (`src/Web/StellaOps.Web/src/app/features/policy-studio/yaml/policy-yaml-editor.component.ts`)
- **Services**:
- `monaco-loader` (`src/Web/StellaOps.Web/src/app/features/policy-studio/editor/monaco-loader.service.ts`)
- `policy-api` (`src/Web/StellaOps.Web/src/app/features/policy-studio/services/policy-api.service.ts`)
- **Models**:
- `src/Web/StellaOps.Web/src/app/features/policy-studio/models/policy.models.ts`
- **Source**: SPRINT_0210_0001_0002_ui_ii.md
## E2E Test Plan
- **Setup**:
- [ ] Log in with a user that has appropriate permissions
- [ ] Navigate to `/policy-studio/packs`
- [ ] Ensure test data exists (scanned artifacts, SBOM data, or seed data as needed)
- **Core verification**:
- [ ] Verify the editor/studio loads with editable content or empty template
- [ ] Verify changes can be saved and persisted
- [ ] Verify validation errors are displayed for invalid input
- **Edge cases**:
- [ ] Verify graceful handling when backend API is unavailable (error state)
- [ ] Verify responsive layout at different viewport sizes
- [ ] Verify accessibility (keyboard navigation, screen reader labels, ARIA attributes)