- Gate both Redis ingestion paths (canonical + legacy) behind separate
default-off flags (GROW_EVENTS_REDIS_ENABLED, LEGACY_SERVICE_REDIS_ENABLED).
The redis module is never imported when both flags are off.
- Sever legacy URL cascade: interview/roleplay/resume/courses Redis URLs
resolve ONLY from their own explicit env vars, never from REDIS_URL or
GROW_EVENTS_REDIS_URL.
- Export resolveRedisConfig() pure resolver for testability.
- Fix onboarding signal ID from 'onboarding.completed_baseline' to
'onboarding.completed' (registry-valid in all v2 formula JSONs).
- Ensure interview/roleplay completed events emit at least a single
completion signal when session_count/scenario_count is absent (default 1).
- Extract computeStreakFromDays() into streak-utils.ts (pure, no DB dep)
with defensive dedup so duplicate days never inflate streaks.
- Add focused tests: redis-gating, signal-registry membership, count
fallback, streak policy (current/longest/duplicate/gap/recovery/7-day),
service-ingest projector behavior.
- typecheck: 80 pre-existing errors unchanged, 0 new.
## Summary
This PR updates backend service-session orchestration so
interview, roleplay, resume, and matchmaking flows integrate with
the shipped `workflows--dashboard` frontend instead of the old
GrowQR app demo UI.
## Changes
- Added `WORKFLOWS_DASHBOARD_URL` config with fallback to
`FRONTEND_ORIGIN`.
- Updated service session URL generation to point to dashboard-
owned routes:
- `/v2/service-sessions/interview`
- `/v2/service-sessions/roleplay`
- `/v2/service-sessions/resume`
- Preserved session query params, including `session_id`, service
id, and user-facing metadata.
- Updated chat route handling so returned service cards include
dashboard session URLs.
- Added/updated matchmaking service integration wiring.
- Documented the dashboard-owned session route behavior in
## Validation
- `npm run build` passed for `growqr-backend`.
Reviewed-on: puter/growqr-backend#4
Co-authored-by: NinjasPyajamas <divyansh242805@gmail.com>
Co-committed-by: NinjasPyajamas <divyansh242805@gmail.com>