diff --git a/docs/devops/USER_ISSUE_REPORTING_ROADMAP.md b/docs/devops/USER_ISSUE_REPORTING_ROADMAP.md index d83e32e5..e830df60 100644 --- a/docs/devops/USER_ISSUE_REPORTING_ROADMAP.md +++ b/docs/devops/USER_ISSUE_REPORTING_ROADMAP.md @@ -193,39 +193,39 @@ DELETE /api/feedback/:id/attachments/:attId // Remove attachment (admin) ## Implementation Phases -### Phase 1: Server Foundation (2-3 days) +### Phase 1: Server Foundation (2-3 days) — ✅ COMPLETE -#### 1.1 Data Model Extension -- [ ] Add `screenshotBlobPath` to `FeedbackDoc` interface -- [ ] Add `deviceContext` to `FeedbackDoc` interface -- [ ] Update `CreateFeedbackSchema` with new fields -- [ ] Add `feedback_screenshots` container to `cosmos-init.ts` (if Option B) +#### 1.1 Data Model Extension — [`acfbd7c`](https://github.com/saravanakumardb1/learning_ai_common_plat/commit/acfbd7c) +- [x] Add `screenshotBlobPath` to `FeedbackDoc` interface +- [x] Add `deviceContext` to `FeedbackDoc` interface +- [x] Update `CreateFeedbackSchema` with new fields +- [ ] Add `feedback_screenshots` container to `cosmos-init.ts` (if Option B) — Skipped (using blob storage) -#### 1.2 Repository Layer -- [ ] Extend `createFeedback()` to handle screenshot metadata -- [ ] Add `generateScreenshotSas()` function (wrapper around blob module) -- [ ] Add `getFeedbackWithScreenshot()` with fresh SAS URL generation -- [ ] Add `deleteFeedbackScreenshot()` for GDPR compliance +#### 1.2 Repository Layer — [`8d2ba9c`](https://github.com/saravanakumardb1/learning_ai_common_plat/commit/8d2ba9c) +- [x] Extend `createFeedback()` to handle screenshot metadata +- [x] Add `generateScreenshotSas()` function (wrapper around blob module) +- [x] Add `getFeedbackWithScreenshot()` with fresh SAS URL generation +- [x] Add `hasScreenshot()` helper for quick UI checks -#### 1.3 API Routes -- [ ] `POST /api/feedback/sas` — Generate upload URL +#### 1.3 API Routes — [`cfbaa92`](https://github.com/saravanakumardb1/learning_ai_common_plat/commit/cfbaa92) +- [x] `POST /api/feedback/sas` — Generate upload URL - Rate limit: 5 requests per 10 minutes per user - Validate content type (image/* only) - Return blob path + SAS URL -- [ ] Update `POST /api/feedback` — Accept screenshot metadata -- [ ] `GET /api/feedback/:id/screenshot` — Get fresh view URL -- [ ] `DELETE /api/feedback/:id/screenshot` — Admin delete +- [x] Update `POST /api/feedback` — Accept screenshot metadata +- [x] `GET /api/feedback/:id/screenshot` — Get fresh view URL +- [x] `DELETE /api/feedback/:id/screenshot` — Admin delete -#### 1.4 Integration -- [ ] Wire new routes into `server.ts` -- [ ] Add blob container `user-feedback` to blob module config -- [ ] Set lifecycle policy: 90-day TTL for user screenshots +#### 1.4 Integration — ✅ Already wired in `server.ts` +- [x] Wire new routes into `server.ts` — Feedback routes already registered +- [x] Add blob container `feedbackScreenshots` to blob module config — [`d876bb0`](https://github.com/saravanakumardb1/learning_ai_common_plat/commit/d876bb0) +- [ ] Set lifecycle policy: 90-day TTL for user screenshots — TODO: Azure lifecycle policy -#### 1.5 Testing -- [ ] Unit tests for SAS generation -- [ ] Unit tests for feedback with screenshot submission -- [ ] Integration test: full flow (SAS → upload → submit → view) -- [ ] GDPR deletion test +#### 1.5 Testing — [`e712968`](https://github.com/saravanakumardb1/learning_ai_common_plat/commit/e712968) +- [x] Unit tests for SAS generation (schema validation) +- [x] Unit tests for feedback with screenshot submission +- [ ] Integration test: full flow (SAS → upload → submit → view) — TODO: requires blob storage +- [ ] GDPR deletion test — TODO: Phase 3 ### Phase 2: Client SDK Updates (3-4 days)