Changeset 0.31.2 (#205)
This commit is contained in:
101
docs/ROADMAP.md
101
docs/ROADMAP.md
@@ -41,9 +41,11 @@ v0.9.x–v0.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,
|
||||
|
||||
Reference in New Issue
Block a user