docs: reorganize roadmaps — broadcast/survey to completed, 10 scaffolded roadmaps to new dir
- Move platform_BROADCAST_SURVEY_ROADMAP.md to completed/ (modules + 43 tests built) - Create docs/roadmaps/scaffolded/ for roadmaps with modules built but full execution pending - Move 10 roadmaps from not-started/ to scaffolded/: ORG_WORKSPACE_RBAC, AGENT_REGISTRY, AGENT_RUNTIME, AI_BUDGET, AI_GOVERNANCE_EVALS, HUMAN_REVIEW, KNOWLEDGE_RAG, SCIM, SUPPORT_CASE, DURABLE_EVENT_BUS - Update WORKSPACE_REVIEW: 17 completed roadmaps, 10 scaffolded, 1 not-started (index) - Only platform_AGENT_PLATFORM_GAP_ROADMAP_INDEX.md remains in not-started/
This commit is contained in:
parent
a8bef2ea08
commit
8c3d54048a
@ -220,10 +220,10 @@
|
|||||||
|
|
||||||
## 3. Roadmaps Inventory
|
## 3. Roadmaps Inventory
|
||||||
|
|
||||||
### Completed (16 Roadmaps)
|
### Completed (17 Roadmaps) — in `docs/roadmaps/completed/`
|
||||||
|
|
||||||
| Roadmap | Date | Key Achievement |
|
| Roadmap | Date | Key Achievement |
|
||||||
| ------------------------------------------ | ---------- | ----------------------------------- |
|
| ------------------------------------------ | ---------- | --------------------------------------- |
|
||||||
| diagnostics_REMOTE_DIAGNOSTICS_ROADMAP.md | 2026-03-03 | Phases 1-3 complete |
|
| diagnostics_REMOTE_DIAGNOSTICS_ROADMAP.md | 2026-03-03 | Phases 1-3 complete |
|
||||||
| platform_COMPONENTS_ROADMAP.md | 2026-02 | 23/25 gap items built |
|
| platform_COMPONENTS_ROADMAP.md | 2026-02 | 23/25 gap items built |
|
||||||
| platform_BACKEND_MIGRATION.md | 2026-02 | All 6 backends migrated |
|
| platform_BACKEND_MIGRATION.md | 2026-02 | All 6 backends migrated |
|
||||||
@ -240,12 +240,12 @@
|
|||||||
| product_PRE_LAUNCH_SIGNUP_SYSTEM.md | 2026-02 | Pre-launch system |
|
| product_PRE_LAUNCH_SIGNUP_SYSTEM.md | 2026-02 | Pre-launch system |
|
||||||
| SHARED_CLIENT_PACKAGES_ROADMAP.md | 2026-03-19 | 9 packages + all product migrations |
|
| SHARED_CLIENT_PACKAGES_ROADMAP.md | 2026-03-19 | 9 packages + all product migrations |
|
||||||
| platform_ACCELERATION_ROADMAP.md | 2026-03-19 | All 4 phases complete |
|
| platform_ACCELERATION_ROADMAP.md | 2026-03-19 | All 4 phases complete |
|
||||||
|
| platform_BROADCAST_SURVEY_ROADMAP.md | 2026-03-20 | Broadcasts + surveys modules + 43 tests |
|
||||||
|
|
||||||
### Scaffolded (11 Roadmaps — modules exist, full roadmap execution pending)
|
### Scaffolded (10 Roadmaps — in `docs/roadmaps/scaffolded/`, modules exist, full roadmap execution pending)
|
||||||
|
|
||||||
| Roadmap | Module(s) | Files | Tests |
|
| Roadmap | Module(s) | Files | Tests |
|
||||||
| --------------------------------------------- | ----------------------- | ----- | ----- |
|
| --------------------------------------------- | ----------------------- | ----- | ----- |
|
||||||
| platform_BROADCAST_SURVEY_ROADMAP.md | broadcasts, surveys | 9 | 43 |
|
|
||||||
| platform_ORG_WORKSPACE_RBAC_ROADMAP.md | orgs | 5 | ✅ |
|
| platform_ORG_WORKSPACE_RBAC_ROADMAP.md | orgs | 5 | ✅ |
|
||||||
| platform_AGENT_REGISTRY_PROMPT_VERSIONING | agents | 5 | ✅ |
|
| platform_AGENT_REGISTRY_PROMPT_VERSIONING | agents | 5 | ✅ |
|
||||||
| platform_AGENT_RUNTIME_ORCHESTRATION | runs | 7 | ✅ |
|
| platform_AGENT_RUNTIME_ORCHESTRATION | runs | 7 | ✅ |
|
||||||
|
|||||||
@ -26,7 +26,7 @@
|
|||||||
### Two New Systems
|
### Two New Systems
|
||||||
|
|
||||||
| System | Purpose | Key Features |
|
| System | Purpose | Key Features |
|
||||||
|--------|---------|--------------|
|
| ----------------------- | --------------------------------------- | ------------------------------------------------------------------------------------- |
|
||||||
| **Broadcast Messaging** | Targeted announcements to user segments | Push, in-app, email channels; scheduling; A/B testing; geo/platform/version targeting |
|
| **Broadcast Messaging** | Targeted announcements to user segments | Push, in-app, email channels; scheduling; A/B testing; geo/platform/version targeting |
|
||||||
| **Surveys & Polls** | In-app user research | Multiple question types; conditional logic; targeting; real-time results; CSV export |
|
| **Surveys & Polls** | In-app user research | Multiple question types; conditional logic; targeting; real-time results; CSV export |
|
||||||
|
|
||||||
@ -103,7 +103,7 @@ Admin creates broadcast/survey
|
|||||||
**Location:** `services/platform-service/src/modules/broadcasts/`
|
**Location:** `services/platform-service/src/modules/broadcasts/`
|
||||||
|
|
||||||
| File | Purpose |
|
| File | Purpose |
|
||||||
|------|---------|
|
| --------------- | --------------------------------------------------------------------- |
|
||||||
| `types.ts` | `Broadcast`, `BroadcastStatus`, `BroadcastTarget`, `BroadcastChannel` |
|
| `types.ts` | `Broadcast`, `BroadcastStatus`, `BroadcastTarget`, `BroadcastChannel` |
|
||||||
| `repository.ts` | CRUD + targeting query builder |
|
| `repository.ts` | CRUD + targeting query builder |
|
||||||
| `routes.ts` | Admin CRUD + public "mark as read" |
|
| `routes.ts` | Admin CRUD + public "mark as read" |
|
||||||
@ -188,7 +188,7 @@ export interface BroadcastMetrics {
|
|||||||
**Endpoints:**
|
**Endpoints:**
|
||||||
|
|
||||||
| Method | Endpoint | Auth | Purpose |
|
| Method | Endpoint | Auth | Purpose |
|
||||||
|--------|----------|------|---------|
|
| -------- | ------------------------------- | ----- | --------------------------------------------------------- |
|
||||||
| `POST` | `/admin/broadcasts` | Admin | Create broadcast |
|
| `POST` | `/admin/broadcasts` | Admin | Create broadcast |
|
||||||
| `GET` | `/admin/broadcasts` | Admin | List all broadcasts |
|
| `GET` | `/admin/broadcasts` | Admin | List all broadcasts |
|
||||||
| `GET` | `/admin/broadcasts/:id` | Admin | Get single broadcast |
|
| `GET` | `/admin/broadcasts/:id` | Admin | Get single broadcast |
|
||||||
@ -210,7 +210,7 @@ export interface BroadcastMetrics {
|
|||||||
**Location:** `services/platform-service/src/modules/surveys/`
|
**Location:** `services/platform-service/src/modules/surveys/`
|
||||||
|
|
||||||
| File | Purpose |
|
| File | Purpose |
|
||||||
|------|---------|
|
| --------------- | ------------------------------------------------------ |
|
||||||
| `types.ts` | `Survey`, `Question`, `QuestionType`, `SurveyResponse` |
|
| `types.ts` | `Survey`, `Question`, `QuestionType`, `SurveyResponse` |
|
||||||
| `repository.ts` | CRUD + response aggregation |
|
| `repository.ts` | CRUD + response aggregation |
|
||||||
| `routes.ts` | Admin CRUD + public response submission |
|
| `routes.ts` | Admin CRUD + public response submission |
|
||||||
@ -354,7 +354,7 @@ export function computeCompletionRate(metrics: SurveyMetrics): number {
|
|||||||
**Endpoints:**
|
**Endpoints:**
|
||||||
|
|
||||||
| Method | Endpoint | Auth | Purpose |
|
| Method | Endpoint | Auth | Purpose |
|
||||||
|--------|----------|------|---------|
|
| -------- | -------------------------------- | ----- | --------------------------------------------------- |
|
||||||
| `POST` | `/admin/surveys` | Admin | Create survey |
|
| `POST` | `/admin/surveys` | Admin | Create survey |
|
||||||
| `GET` | `/admin/surveys` | Admin | List all surveys |
|
| `GET` | `/admin/surveys` | Admin | List all surveys |
|
||||||
| `GET` | `/admin/surveys/:id` | Admin | Get survey with questions |
|
| `GET` | `/admin/surveys/:id` | Admin | Get survey with questions |
|
||||||
@ -420,7 +420,7 @@ export async function evaluateTarget(
|
|||||||
|
|
||||||
if (target.percentageRollout !== undefined) {
|
if (target.percentageRollout !== undefined) {
|
||||||
const hash = fnv1a32(`${context.userId}:${target.percentageRollout}`);
|
const hash = fnv1a32(`${context.userId}:${target.percentageRollout}`);
|
||||||
if ((hash % 100) >= target.percentageRollout) {
|
if (hash % 100 >= target.percentageRollout) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -627,7 +627,7 @@ class BLSurveyClient {
|
|||||||
**Location:** `dashboards/admin-web/src/app/(dashboard)/broadcasts/`
|
**Location:** `dashboards/admin-web/src/app/(dashboard)/broadcasts/`
|
||||||
|
|
||||||
| Page | Features |
|
| Page | Features |
|
||||||
|------|----------|
|
| ----------------------- | --------------------------------------------------------- |
|
||||||
| `page.tsx` | List all broadcasts with status chips |
|
| `page.tsx` | List all broadcasts with status chips |
|
||||||
| `new/page.tsx` | Create wizard: content → targeting → scheduling → preview |
|
| `new/page.tsx` | Create wizard: content → targeting → scheduling → preview |
|
||||||
| `[id]/page.tsx` | Edit + metrics dashboard |
|
| `[id]/page.tsx` | Edit + metrics dashboard |
|
||||||
@ -671,7 +671,7 @@ interface TargetingBuilderProps {
|
|||||||
**Location:** `dashboards/admin-web/src/app/(dashboard)/surveys/`
|
**Location:** `dashboards/admin-web/src/app/(dashboard)/surveys/`
|
||||||
|
|
||||||
| Page | Features |
|
| Page | Features |
|
||||||
|------|----------|
|
| ------------------------- | ----------------------------------------------------- |
|
||||||
| `page.tsx` | List surveys with completion rates |
|
| `page.tsx` | List surveys with completion rates |
|
||||||
| `new/page.tsx` | Survey builder: questions → targeting → display rules |
|
| `new/page.tsx` | Survey builder: questions → targeting → display rules |
|
||||||
| `[id]/page.tsx` | Edit + live preview |
|
| `[id]/page.tsx` | Edit + live preview |
|
||||||
@ -812,7 +812,7 @@ class BroadcastClient:
|
|||||||
**Commit:** `1b11db3` — feat(broadcasts,surveys): Phase 1 complete - backend modules
|
**Commit:** `1b11db3` — feat(broadcasts,surveys): Phase 1 complete - backend modules
|
||||||
|
|
||||||
| Day | Task | Deliverable | Status |
|
| Day | Task | Deliverable | Status |
|
||||||
|-----|------|-------------|--------|
|
| --- | ------------------------------------------ | --------------------------------- | ------ |
|
||||||
| 1 | `broadcasts` module scaffold + types | `types.ts`, `repository.ts` tests | ✅ |
|
| 1 | `broadcasts` module scaffold + types | `types.ts`, `repository.ts` tests | ✅ |
|
||||||
| 2 | `broadcasts` routes + targeting engine | 9 endpoints, targeting.ts | ✅ |
|
| 2 | `broadcasts` routes + targeting engine | 9 endpoints, targeting.ts | ✅ |
|
||||||
| 3 | `surveys` module scaffold + types | `types.ts`, `repository.ts` tests | ✅ |
|
| 3 | `surveys` module scaffold + types | `types.ts`, `repository.ts` tests | ✅ |
|
||||||
@ -824,12 +824,13 @@ class BroadcastClient:
|
|||||||
### Phase 2: Admin Dashboard (Week 2) ✅ **COMPLETED**
|
### Phase 2: Admin Dashboard (Week 2) ✅ **COMPLETED**
|
||||||
|
|
||||||
**Commits:**
|
**Commits:**
|
||||||
|
|
||||||
- `...` — feat(admin): Phase 2.1 - Broadcast and Survey list pages
|
- `...` — feat(admin): Phase 2.1 - Broadcast and Survey list pages
|
||||||
- `...` — feat(admin): Phase 2.2 - Broadcast create/edit wizard
|
- `...` — feat(admin): Phase 2.2 - Broadcast create/edit wizard
|
||||||
- `...` — feat(admin): Phase 2.3 - Survey builder UI
|
- `...` — feat(admin): Phase 2.3 - Survey builder UI
|
||||||
|
|
||||||
| Day | Task | Deliverable | Status |
|
| Day | Task | Deliverable | Status |
|
||||||
|-----|------|-------------|--------|
|
| --- | ---------------------------- | ---------------------------------- | ------ |
|
||||||
| 6 | Broadcast list UI | List, filter, actions | ✅ |
|
| 6 | Broadcast list UI | List, filter, actions | ✅ |
|
||||||
| 7 | Broadcast create/edit wizard | Targeting builder, reach estimator | ✅ |
|
| 7 | Broadcast create/edit wizard | Targeting builder, reach estimator | ✅ |
|
||||||
| 8 | Survey builder UI | Question builder, 9 question types | ✅ |
|
| 8 | Survey builder UI | Question builder, 9 question types | ✅ |
|
||||||
@ -839,11 +840,12 @@ class BroadcastClient:
|
|||||||
### Phase 3: Client SDKs (Week 3) ✅ **COMPLETED**
|
### Phase 3: Client SDKs (Week 3) ✅ **COMPLETED**
|
||||||
|
|
||||||
**Commits:**
|
**Commits:**
|
||||||
|
|
||||||
- `...` — feat(packages): @bytelyst/broadcast-client package
|
- `...` — feat(packages): @bytelyst/broadcast-client package
|
||||||
- `...` — feat(packages): @bytelyst/survey-client package with offline cache
|
- `...` — feat(packages): @bytelyst/survey-client package with offline cache
|
||||||
|
|
||||||
| Day | Task | Deliverable | Status |
|
| Day | Task | Deliverable | Status |
|
||||||
|-----|------|-------------|--------|
|
| --- | ---------------------------- | ------------------------------------- | --------- |
|
||||||
| 11 | `@bytelyst/broadcast-client` | Package + types + polling | ✅ |
|
| 11 | `@bytelyst/broadcast-client` | Package + types + polling | ✅ |
|
||||||
| 12 | `@bytelyst/survey-client` | Package + validation + offline cache | ✅ |
|
| 12 | `@bytelyst/survey-client` | Package + validation + offline cache | ✅ |
|
||||||
| 13 | Swift SDK extensions | `BLBroadcastClient`, `BLSurveyClient` | ✅ |
|
| 13 | Swift SDK extensions | `BLBroadcastClient`, `BLSurveyClient` | ✅ |
|
||||||
@ -853,11 +855,12 @@ class BroadcastClient:
|
|||||||
### Phase 4: Platform Integration (Week 4) ✅ **COMPLETED**
|
### Phase 4: Platform Integration (Week 4) ✅ **COMPLETED**
|
||||||
|
|
||||||
**Commits:**
|
**Commits:**
|
||||||
|
|
||||||
- `4bf18f4` — feat(user-dashboard): Phase 4.1 - Web integration components
|
- `4bf18f4` — feat(user-dashboard): Phase 4.1 - Web integration components
|
||||||
- `...` — feat(platform-service): Phase 4.4 - Push notification wiring (FCM/APNS)
|
- `...` — feat(platform-service): Phase 4.4 - Push notification wiring (FCM/APNS)
|
||||||
|
|
||||||
| Day | Task | Deliverable | Status |
|
| Day | Task | Deliverable | Status |
|
||||||
|-----|------|-------------|--------|
|
| --- | -------------------------------- | -------------------------- | --------- |
|
||||||
| 16 | Web integration (user-dashboard) | Banner, modal, survey flow | ✅ |
|
| 16 | Web integration (user-dashboard) | Banner, modal, survey flow | ✅ |
|
||||||
| 17 | iOS integration | SwiftUI components | ✅ |
|
| 17 | iOS integration | SwiftUI components | ✅ |
|
||||||
| 18 | Android integration | Compose components | ✅ |
|
| 18 | Android integration | Compose components | ✅ |
|
||||||
@ -883,7 +886,7 @@ The Broadcast and Survey platform is now **MVP complete** with:
|
|||||||
## 8. Cosmos Containers
|
## 8. Cosmos Containers
|
||||||
|
|
||||||
| Container | Partition Key | Purpose | Est. Size | TTL |
|
| Container | Partition Key | Purpose | Est. Size | TTL |
|
||||||
|-----------|---------------|---------|-----------|-----|
|
| ---------------------- | ------------- | ------------------------------------------------ | --------- | ------- |
|
||||||
| `broadcasts` | `/productId` | Broadcast definitions + targeting | Small | — |
|
| `broadcasts` | `/productId` | Broadcast definitions + targeting | Small | — |
|
||||||
| `broadcast_deliveries` | `/userId` | Per-user delivery status (avoids hot partitions) | Large | 90 days |
|
| `broadcast_deliveries` | `/userId` | Per-user delivery status (avoids hot partitions) | Large | 90 days |
|
||||||
| `broadcast_reads` | `/userId` | User read receipts | Large | 90 days |
|
| `broadcast_reads` | `/userId` | User read receipts | Large | 90 days |
|
||||||
@ -969,7 +972,7 @@ The Broadcast and Survey platform is now **MVP complete** with:
|
|||||||
## Appendix A: DRY Checklist
|
## Appendix A: DRY Checklist
|
||||||
|
|
||||||
| Component | Reused From | Notes |
|
| Component | Reused From | Notes |
|
||||||
|-----------|-------------|-------|
|
| ------------------------- | -------------------------- | ------------------------------------------ |
|
||||||
| Targeting engine | `flags/` module | Same FNV-1a hash, same segment logic |
|
| Targeting engine | `flags/` module | Same FNV-1a hash, same segment logic |
|
||||||
| Storage adapters | Existing SDK patterns | `BLTelemetryClient` storage pattern |
|
| Storage adapters | Existing SDK patterns | `BLTelemetryClient` storage pattern |
|
||||||
| Admin UI components | `flags/page.tsx` | Copy table, filters, pagination |
|
| Admin UI components | `flags/page.tsx` | Copy table, filters, pagination |
|
||||||
Loading…
Reference in New Issue
Block a user