feat(feedback): in-app feedback collection with roadmap & GitHub integration#355
Open
Asheeyah23 wants to merge 1 commit into
Open
feat(feedback): in-app feedback collection with roadmap & GitHub integration#355Asheeyah23 wants to merge 1 commit into
Asheeyah23 wants to merge 1 commit into
Conversation
…gration Implements an in-app feedback system for bug reports, feature requests, and general comments (Traqora#308). Backend (api): - POST /api/v1/feedback — create feedback (category, message, optional email + screenshot data URL); best-effort opens a GitHub issue when a token/repo are configured and stores its URL. - GET /api/v1/feedback — admin list with status/category filters + pagination. - PATCH /api/v1/feedback/{id} — admin status update (open/planned/ in_progress/completed/declined). - GET /api/v1/feedback/roadmap — public roadmap grouped by planned / in_progress / completed. - Feedback ORM model on Base.metadata; services/github.py issue creation (no-op without credentials, never fails the request). Frontend (web): - Feedback.tsx: category selection, message, optional email, optional screenshot attachment (read as a data URL), success state. Tests: 9 API tests (create, category/screenshot validation, list filter, status update + roadmap, 404/422) and 4 web tests (render, validation, submit with category, server error). Closes Traqora#308
|
@Asheeyah23 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds in-app feedback collection for user suggestions and bug reports.
Closes #308
Backend (
api)POST /api/v1/feedback— create feedback (category∈ bug/feature/general,message, optionalemail+screenshotdata URL). Best-effort opens a GitHub issue when a token/repo are configured and stores its URL.GET /api/v1/feedback— admin list withstatus/categoryfilters + pagination.PATCH /api/v1/feedback/{id}— admin status tracking (open / planned / in_progress / completed / declined).GET /api/v1/feedback/roadmap— public roadmap grouped by planned / in_progress / completed.FeedbackORM model onBase.metadata;services/github.pyissue creation is a no-op without credentials and never fails the request.Frontend (
web)Feedback.tsx— category selection, message, optional email, optional screenshot attachment (read as a data URL), and a success state.Requirements coverage
/feedback/roadmap+ status-driven grouping)Tests
clientfixture.Notes / scope decisions
Feedbackis registered onBase.metadatalike the other recent feature tables (FAQ, mentorship, notifications) — Alembic--autogeneratewill pick it up; no hand-written migration, consistent with those features.FeedbackOutintentionally omitsemail/screenshotto keep PII out of list responses.py_compileand written against theclientfixture; I couldn't runpytestlocally (importingapi.apppulls the full ML/OpenTelemetry stack). They run in CI. Web tests were executed and pass.