Commit Graph

189 Commits

Author SHA1 Message Date
saravanakumardb1
71cbb570ef feat(ai-diagnostics): add query parser and executor [3.1-3.2] 2026-03-03 11:53:59 -08:00
saravanakumardb1
44fa045ec5 feat(ab-testing): AI hypothesis generation and admin dashboard UI [3.1][3.2][3.3][4.1][4.2][4.3] 2026-03-03 11:53:48 -08:00
saravanakumardb1
97b3ffb21d feat(ai-diagnostics): add LLM analyzer with prompts and insight generation [2.1-2.2] 2026-03-03 11:52:12 -08:00
saravanakumardb1
1ff02934fa feat(ai-diagnostics): add telemetry linking and context enrichment [1.3] 2026-03-03 11:50:28 -08:00
saravanakumardb1
8951ab2c92 feat(ai-diagnostics): add HDBSCAN clustering algorithm [1.2.3] 2026-03-03 11:49:05 -08:00
saravanakumardb1
783067e17d feat(ab-testing): bucketing, statistics, guardrails, routes [1.2][2.1][2.2] 2026-03-03 11:48:50 -08:00
saravanakumardb1
917ea03af9 feat(ai-diagnostics): add vector search repository with cosmos integration [1.2.2] 2026-03-03 11:48:12 -08:00
saravanakumardb1
50b7e22985 feat(ai-diagnostics): add Azure OpenAI embedding pipeline [1.2.1] 2026-03-03 11:47:12 -08:00
saravanakumardb1
8cdddd7c23 feat(ai-diagnostics): implement error normalization and fingerprinting [1.1.3] 2026-03-03 11:45:52 -08:00
saravanakumardb1
a9b224749c feat(ab-testing): add experiment types and cosmos containers [1.1] 2026-03-03 11:44:33 -08:00
saravanakumardb1
4de01269b5 feat(ai-diagnostics): add error clustering types and cosmos containers [1.1.1-1.1.2] 2026-03-03 11:44:23 -08:00
saravanakumardb1
fcbae17866 feat(platform-service): implement P0-1 - Module generator script (pnpm gen:module)
- Add gen-module.ts with full CLI interface
- Generate types.ts, repository.ts, routes.ts, and test.ts
- Support field types: string, number, boolean, date, datetime, enum, string[], number[]
- Add --dry-run flag for preview
- Register script in package.json
2026-03-03 10:05:55 -08:00
saravanakumardb1
8e90358960 feat(platform): PII Redaction library (Appendix D.1)
- 8 PII patterns: email, SSN, credit card, phone, IP, password/token, JWT, API key
- redactPII() for string redaction
- redactObject() for recursive object redaction
- redactLogMessage() for log entries with context
- containsPII() and getPIITypes() detection helpers
- Custom pattern registration
- Preset configurations: minimal, standard, aggressive
2026-03-03 09:37:53 -08:00
saravanakumardb1
3efdd97057 feat(broadcasts): Rich media support in backend types
- BroadcastMedia interface for image/video/gif/audio
- Extended BroadcastMetrics with media engagement tracking
- Updated CreateBroadcastSchema with media array validation
2026-03-03 08:36:00 -08:00
saravanakumardb1
30583a1768 feat(diagnostics): implement Phase 1.5 — event bus, audit, rate limiting
1.5.2 Event Bus: Add warn to noopLog, update comments

1.5.3 Audit: Already implemented in all handlers

1.5.4 Rate Limiting: Add diagnostics keys (10/hr, 12/min, 100/min)

Delivery Templates: Add 4 diagnostics email templates (ready for wiring)

Tests: Update count to 12 templates (was 8)

All 839 tests passing
2026-03-03 08:19:41 -08:00
saravanakumardb1
4bf18f4d4f feat(platform-service): Phase 4.4 - Push notification wiring (FCM/APNS)
- push-notifications.ts: FCM and APNS delivery services
- Device token registration/management
- sendPushNotification() for bulk delivery
- Automatic token deactivation on APNS 410 responses
2026-03-03 08:05:21 -08:00
saravanakumardb1
8614e3f0f1 fix(feedback): address 6 bugs/gaps from systematic review
- Fix search icon positioning (add relative container)
- Fix toast variant from 'destructive' to 'error'
- Remove non-existent screenshotUrl fields from delete endpoint
- Fix misleading blob path comment (blob stays at initial location)
- Add download screenshot function and button
- Add pointer-events-none to search icon
2026-03-03 07:03:27 -08:00
saravanakumardb1
3ded5ad751 fix(diagnostics,test): fix flaky test and test configuration
- Add DB_PROVIDER=memory to vitest config for diagnostics tests
- Fix flaky timestamp comparison in 'should update a session' test
  - Add 10ms delay between create and update
  - Use toBeGreaterThanOrEqual instead of strict inequality
- All 17 diagnostics tests now pass
2026-03-03 00:01:20 -08:00
saravanakumardb1
fdaffdb13c docs(feedback): fix 8 bugs/gaps identified in systematic review
- Fix inconsistent screenshotUrl fields (removed, SAS generated on-demand)
- Fix blob path pattern to match feedbackScreenshots container
- Clarify flow: direct upload to final container (no temp/move)
- Add rate limiting specs to endpoint table
- Clarify access control: users submit but cannot view (security)
- Remove sas.ts from appendix (not created)
- Align size limits to 5MB consistently
- Add missing screenshotContentType and screenshotSizeBytes
2026-03-03 00:00:14 -08:00
saravanakumardb1
6f9b799cc4 fix(jobs): add missing 'warn' method to logger type in runner.ts
The JobContext type requires log.warn but runner.ts loggers only
defined info/error. This caused TypeScript errors when passing log
to job handlers.

- Add warn: (...a: unknown[]) => void to startRunner log param
- Add warn: (...a: unknown[]) => void to tick log param
- Add warn: (...a: unknown[]) => void to executeJob log param
2026-03-02 23:57:21 -08:00
saravanakumardb1
e712968d3d test(feedback): Phase 1.5 - add screenshot and deviceContext schema tests 2026-03-02 23:56:59 -08:00
saravanakumardb1
ecb9f67c99 fix(broadcasts): Fix percentage rollout bucketing logic
- Use userId only as seed instead of userId + percentage
- Prevents users from being re-bucketed when rollout % increases
- Ensures deterministic assignment for phased rollouts
2026-03-02 23:56:42 -08:00
saravanakumardb1
e4681fbbb2 fix(broadcasts): Fix metrics increment bug in updateBroadcastMetrics
- Change from merge pattern to explicit increment pattern
- Each metric field is properly incremented instead of overwritten
- Prevents race condition data loss
2026-03-02 23:56:09 -08:00
saravanakumardb1
cfbaa92539 feat(feedback): Phase 1.3 - add SAS endpoint and screenshot view/delete routes 2026-03-02 23:55:47 -08:00
saravanakumardb1
b5fb2b683b fix(surveys): Create missing surveys module
- types.ts: Survey, Question, SurveyResponse, conditional logic, validation
- repository.ts: CRUD + analytics + CSV export with proper type casting
- routes.ts: Admin CRUD + public endpoints (13 routes)

Fixes missing module from Phase 1 implementation
2026-03-02 23:54:59 -08:00
saravanakumardb1
8d2ba9c1cc feat(feedback): Phase 1.2 - extend repository with screenshot support and blob path generation 2026-03-02 23:52:57 -08:00
saravanakumardb1
acfbd7c9d7 feat(feedback): Phase 1.1 - add screenshot fields and deviceContext to FeedbackDoc 2026-03-02 23:52:18 -08:00
saravanakumardb1
1b11db3f6f feat(broadcasts,surveys): Phase 1 complete - backend modules
- broadcasts/types.ts: Broadcast, BroadcastTarget, BroadcastMetrics, InAppMessage
- broadcasts/repository.ts: CRUD + delivery tracking + read receipts
- broadcasts/targeting.ts: evaluateTarget(), semver, FNV-1a hash
- broadcasts/routes.ts: Admin CRUD + public endpoints (14 routes)
- surveys/types.ts: Survey, Question, SurveyResponse, conditional logic
- surveys/repository.ts: CRUD + analytics + CSV export
- surveys/routes.ts: Admin CRUD + public endpoints (13 routes)
- cosmos-init.ts: 7 new containers with TTL policies
- server.ts: Register broadcastRoutes + surveyRoutes

Implements Phase 1 of platform_BROADCAST_SURVEY_ROADMAP.md
2026-03-02 23:51:23 -08:00
saravanakumardb1
6a23a02cd4 fix(diagnostics): BUG-4, BUG-5, BUG-7, BUG-8 - race condition, transactions, test isolation, auth validation
- BUG-4: Add optimistic concurrency control with retry to updateSessionStats
- BUG-5: Document transaction limitations in batch operations
- BUG-7: Fix test isolation with unique productIds per test run
- BUG-8: Add session ownership validation to ingest endpoints
2026-03-02 23:47:14 -08:00
saravanakumardb1
4ffb28d8d2 fix(diagnostics): BUG-3 - add authentication check to /diagnostics/config endpoint 2026-03-02 23:45:36 -08:00
saravanakumardb1
4cb8b499af fix(diagnostics): BUG-1, BUG-2 - DRY violation - centralize generateId and buildPk in types.ts 2026-03-02 23:43:11 -08:00
saravanakumardb1
fb71981e53 test(diagnostics): add diagnostics.test.ts with 14+ tests for Phase 1 2026-03-02 23:38:21 -08:00
saravanakumardb1
d444a8dfea feat(diagnostics): wire routes into server.ts 2026-03-02 23:37:34 -08:00
saravanakumardb1
a66a689d7d feat(diagnostics): Phase 1 complete - types, repository, routes
- types.ts: Session, Trace, Log, Screenshot schemas with Zod validation
- repository.ts: CRUD operations with composite partition keys
- routes.ts: REST endpoints for session management and data ingest

TODOs for Phase 2:
- TODO-1: Event bus integration
- TODO-2: PII redaction implementation
- TODO-6: PII redaction in log ingest
- TODO-7: Fatal log alerting
- TODO-8: Blob SAS token generation
2026-03-02 23:36:59 -08:00
saravanakumardb1
f272a44bbe feat(diagnostics): add repository.ts with session, trace, log, screenshot CRUD 2026-03-02 23:34:35 -08:00
saravanakumardb1
dea1521dd5 feat(diagnostics): add 4 Cosmos containers (sessions, traces, logs, screenshots) with TTL 2026-03-02 23:32:49 -08:00
saravanakumardb1
f51c352452 feat(diagnostics): add types.ts with session, trace, log, screenshot schemas 2026-03-02 23:32:27 -08:00
saravanakumardb1
038cf30aca fix(jobs): implement stub job handlers with actual functionality 2026-03-02 10:19:15 -08:00
saravanakumardb1
41b32a840f fix(extraction-service): export rate limit cleanup functions for graceful shutdown 2026-03-02 10:16:24 -08:00
saravanakumardb1
aeae62027f fix(telemetry): remove redundant event.userId check in cluster affected users dedup 2026-03-02 10:13:47 -08:00
saravanakumardb1
e943f14608 fix(marketplace): prevent duplicate votes with vote tracking collection
- Add marketplace_votes container to cosmos-init.ts
- Add MarketplaceVoteDoc type and vote repository functions
- Fix vote endpoint to toggle votes (prevent unlimited voting)
- Fix listMyReports to filter by productId for data isolation
- Update report routes to pass productId to listMyReports
2026-03-02 10:12:33 -08:00
saravanakumardb1
770bc5ae51 feat(referrals): partition key migration to /referrerId with dual-write backfill 2026-03-02 10:04:57 -08:00
saravanakumardb1
3e05260a6f feat(marketplace): generic template marketplace with listings, reviews, installs, certification 2026-03-02 10:02:54 -08:00
saravanakumardb1
ee9d4b358d feat(cloud-agnostic): complete Sprints 4-6 — secrets consumer migration, @bytelyst/speech package, push verified 2026-03-02 09:46:24 -08:00
saravanakumardb1
7ca2139418 refactor(storage): migrate to storage abstraction 2026-03-02 09:07:33 -08:00
saravanakumardb1
5401fad419 refactor(platform-service): migrate webhooks/routes and migrations/runner from cosmos.js to datastore 2026-03-02 02:02:47 -08:00
saravanakumardb1
b69abf44c7 refactor(platform-service): migrate remaining 14 repositories to @bytelyst/datastore
Migrated modules: audit, auth, invitations, items, jobs, licenses,
maintenance, notifications, subscriptions, telemetry, tokens, usage,
waitlist, webhooks.

Updated 4 test files (notifications, subscriptions, tokens, usage) from
Cosmos SDK mocks to MemoryDatastoreProvider.

Zero cosmos.js imports remain in modules/. All 66 test files pass (746 tests).
2026-03-02 01:06:24 -08:00
saravanakumardb1
e355cb0c1b feat(platform-service): migrate 7 more repositories to @bytelyst/datastore (exports, plans, status, sessions, referrals, ip-rules, delivery) — 753/753 tests pass 2026-03-02 00:54:55 -08:00
saravanakumardb1
4d126cb051 feat(platform-service): migrate 6 repositories to @bytelyst/datastore (flags, settings, comments, votes, products, themes) — 756/756 tests pass 2026-03-02 00:51:03 -08:00
saravanakumardb1
b33d3cf2b3 feat(platform): add webhook subscriptions module, DB migration runner, Swagger UI — complete 23/25 roadmap items 2026-03-01 23:38:48 -08:00