Workflow Implementation Status
Current State: 10/10 Workflows Implemented, 4 Wired
Wired as Entry Points ✅
| Workflow | Entry Point | File Modified |
|---|---|---|
| AssetOnboardWorkflow | POST /api/assets | src/endpoints/assets.js |
| DomainOnboardWorkflow | triggerDomainOnboarding() | src/lib/domain-onboarding.js |
| SerpTrackingWorkflow | POST /api/keywords/track | src/endpoints/track-keyword.js |
| AppDetailsWorkflow | POST /api/apps/track | src/endpoints/track-app.js |
Implemented (Queue-Triggered) ⏳
| Workflow | File | Trigger |
|---|---|---|
| UrlClassifyWorkflow | src/workflows/url-classify.ts | backlink-classify-consumer |
| KeywordClassifyWorkflow | src/workflows/keyword-classify.ts | keyword-classify-consumer |
| DomainClassifyWorkflow | src/workflows/domain-classify.ts | domain-classify-consumer |
| LlmVerifyWorkflow | src/workflows/llm-verify.ts | llm-verify-consumer |
| SubscriptionDispatchWorkflow | src/workflows/subscription-dispatch.ts | Daily cron |
| CrawlRunWorkflow | src/workflows/crawl-run.ts | Manual |
Completed Work
Phase 1: Core Workflows ✅
- All 10 workflows implemented in
src/workflows/ - Queue signaling integration (all consumers)
- wrangler.toml configuration with all bindings
- Workflow exports in index.js
Phase 2: Entry Point Wiring ✅
- AssetOnboardWorkflow wired to
POST /api/assets - DomainOnboardWorkflow wired to
triggerDomainOnboarding() - SerpTrackingWorkflow wired to
POST /api/keywords/track - AppDetailsWorkflow wired to
POST /api/apps/track - Fallback to queue when workflow unavailable
Phase 3: Documentation ✅
- diagrams.md updated with workflow orchestration section
- Scorecard updated with wiring status
- Mermaid diagram shows workflow connections
Architecture Pattern
User Action → API Endpoint → Workflow.create() → Workflow Orchestrates → Queue Consumers Execute
↓
Returns workflow_id + status_url
Fallback: If workflow binding unavailable, endpoints fall back to direct queue messaging.
Future Work
Remaining Wiring (Optional)
These workflows work fine via queue consumers but could be wired as direct entry points for better observability:
- UrlClassifyWorkflow - Could wire to
/api/admin/classify/url - KeywordClassifyWorkflow - Could wire to
/api/admin/classify/keyword - DomainClassifyWorkflow - Could wire to
/api/admin/classify/domain
Console Integration
- Workflow monitoring API endpoints exist (
/api/admin/workflow/:type/:id) - Workflow dashboard UI (shows running/completed workflows)
- Cost tracking dashboard enhancement
Daily Subscriptions
- Wire SubscriptionDispatchWorkflow to daily cron
- Build domain-tracking-consumer for watchlist refresh