Changeset 0.31.2 (#205)

This commit is contained in:
2026-03-19 13:29:27 +00:00
parent 8364440081
commit 6668e546fe
25 changed files with 1357 additions and 50 deletions

View File

@@ -41,9 +41,11 @@ v0.9.xv0.28.7 Foundation through Platform Polish ✅
v0.31.1 SDK Exercise ✅ │
v0.31.2 Team Workflows │
│ │
│ v0.35.0 Workflow Product
│ │
══════╪═══════════════════════════════╪══════
│ MVP v0.50.0 │
│ (v0.31.2 + v0.34.0 │
│ (v0.31.2 + v0.35.0 │
│ + mobile + deployment docs) │
══════╪═══════════════════════════════╪══════
@@ -309,29 +311,34 @@ Depends on: v0.31.0.
- [x] Layout-only CSS — zero references to SDK component classes
- [x] E2E tests: install, settings, export/import round-trip (7 tests)
### v0.31.2 — Team Workflow Self-Service
### v0.31.2 — Team Workflow Self-Service
Close the gap: team admins can create and manage workflows for their
team without requiring platform admin access. Backend routes exist
(`/workflows` with `team_id`), but no team-scoped routes or UI.
team without requiring platform admin access. Clean public URLs via
team slugs (`/w/engineering/intake`).
Depends on: v0.31.1.
**CS0 — Backend: Team-Scoped Workflow Routes:**
- [ ] `/teams/:teamId/workflows` route group behind `RequireTeamAdmin`
- [ ] CRUD: GET (list), POST (create, inject team_id), PATCH (update), DELETE
- [ ] Stage CRUD: GET, POST, PUT, DELETE, PATCH reorder — scoped to team workflows
- [ ] Publish: `POST /teams/:teamId/workflows/:id/publish`
- [ ] Ownership guard: all mutating ops verify `workflow.team_id == :teamId`
- [ ] Reuse existing `WorkflowHandler` methods — team ID injection, not new logic
**CS0 — Backend: Team-Scoped Workflow Routes + Team Slugs:**
- [x] `/teams/:teamId/workflows` route group behind `RequireTeamAdmin`
- [x] CRUD: GET (list), POST (create, inject team_id), PATCH (update), DELETE
- [x] Stage CRUD: GET, POST, PUT, DELETE, PATCH reorder — scoped to team workflows
- [x] Publish: `POST /teams/:teamId/workflows/:id/publish`
- [x] Ownership guard: all mutating ops verify `workflow.team_id == :teamId`
- [x] Reuse existing `WorkflowHandler` methods — team ID injection, not new logic
- [x] Team `slug` column — auto-generated from name, UNIQUE, `GetBySlug` store method
- [x] Workflow entry + page renderer resolve scope via team slug (UUID fallback)
- [x] Auth rate limiter burst 8→5
**CS1 — Frontend: Workflows Tab in Team Admin:**
- [ ] 9th tab "Workflows" in team admin modal
- [ ] List team workflows with status badge (active/inactive)
- [ ] Create/edit workflow form (name, slug, entry_mode, branding, retention)
- [ ] Stage builder (add/reorder/delete stages, persona picker, history_mode)
- [ ] Publish button with version display
- [ ] Adapted from platform admin workflow UI (`_loadAdminWorkflows` reference)
- [x] 9th tab "Workflows" in team admin modal
- [x] List team workflows with status badge (active/inactive)
- [x] Create/edit workflow form (name, slug, entry_mode, branding, retention)
- [x] Stage builder (add/reorder/delete stages, persona picker, history_mode)
- [x] Publish button with version display
- [x] Adapted from platform admin workflow UI (`_loadAdminWorkflows` reference)
- [x] Public URL display uses team slug (`/w/engineering/intake`)
- [x] ICD runner: team workflow CRUD tests, package settings fix, SSE reasoning_content fix
**Future (not blocking):**
- Team admin modal → full surface package (when tab count justifies it)
@@ -411,6 +418,64 @@ Depends on: v0.29.2 (DB extensions — extension data in exports).
- [ ] Backup/restore CronJob manifests for K8s
- [ ] Admin export: team/user config (excludes vault-encrypted keys)
### v0.35.0 — Workflow Product
Bridge from workflow infrastructure to real business process automation.
Visitors see forms (not just chat), collected data flows through Starlark
enrichment, stages branch conditionally, and team members review
structured data — not chat transcripts.
Depends on: v0.31.2 (team workflow self-service), v0.29.0 (Starlark sandbox).
**Form Rendering Surface:**
- [ ] Visitor form renderer — reads `form_template` from stage, renders
HTML inputs (text, email, select, date, textarea, checkbox, file),
validates client-side, submits via `/w/:id/form-submit`
- [ ] Progressive form — multi-step within a single stage (fieldsets)
- [ ] Conditional fields — show/hide based on previous answers
- [ ] File upload in forms — attach to stage_data via storage API
- [ ] Branded form page — uses workflow `branding` (colors, logo, tagline)
**Data Pipeline (between-stage processing):**
- [ ] `on_advance` hook — Starlark entry point fires after each stage
transition, receives `stage_data`, can enrich/transform/reject
- [ ] External data enrichment — Starlark `http.fetch` pulls from
external APIs, merges results into `stage_data` (reduce double entry)
- [ ] Data validation rules — Starlark `on_validate` can enforce
cross-field business rules beyond per-field type checks
- [ ] Stage data schema — typed `stage_data` with declared fields,
not opaque JSON blob. Enables structured review views
**Conditional Routing:**
- [ ] Branch expressions — `transition_rules.condition` evaluated against
`stage_data` to select next stage (not always ordinal+1)
- [ ] AI-triggered routing — persona calls `workflow_route` tool with
a target stage name based on conversation analysis
- [ ] Escalation pattern — "if AI confidence < threshold, route to
human review stage" (help desk use case)
- [ ] Loop stages — return to a previous stage for correction without
using reject (iterative data gathering)
**Structured Review:**
- [ ] Assignment review view — team member sees `stage_data` as a
structured card/form, not just chat history
- [ ] Approval/reject with comments — reviewer adds notes visible
to the next stage (not buried in chat)
- [ ] Side-by-side view — chat history + structured data together
- [ ] Bulk review — multiple assignments in a queue with keyboard nav
**Monitoring Dashboard:**
- [ ] Active instances list — workflow name, current stage, assignee,
age, last activity
- [ ] Stage funnel — how many instances at each stage, bottleneck detection
- [ ] SLA timers — configurable per-stage, visible in review + dashboard
- [ ] Stale instance alerts — notify team admins when instances age out
**Use case validation targets:**
- Help desk: AI + KB → escalation to human → resolution tracking
- Data intake: form → Starlark enrichment → human review → follow-up
- Onboarding: multi-stage form → conditional branching → team assignment
---
## MVP v0.50.0
@@ -424,6 +489,8 @@ reading Go source code. Team admins build workflows visually.
workflow builder, SDK-based surfaces, team workflow self-service)
- Operations track through v0.34.0 (multi-replica HA, observability,
data portability)
- Workflow product v0.35.0 (form rendering, data pipeline, conditional
routing, structured review, monitoring dashboard)
**Additionally requires:**
- [ ] Deployment guide: step-by-step for IT team (PG cluster,