70 lines
2.7 KiB
Markdown
70 lines
2.7 KiB
Markdown
# Task: Backend feedback foundation
|
|
|
|
## Goal
|
|
|
|
Add the backend foundation for product feedback reports.
|
|
|
|
## Feature Spec
|
|
|
|
- `docs/FEATURES/product-feedback.md`
|
|
|
|
## Scope
|
|
|
|
- Add a new `Developer` identity role and seed it with the existing role setup.
|
|
- Add a new FastEndpoints module under `backend/src/Socialize.Api/Modules/Feedback`.
|
|
- Add feedback report data entities and EF Core model configuration.
|
|
- Add feedback enum/value support for:
|
|
- type: `Bug`, `Suggestion`, `Request`
|
|
- status: `New`, `Planned`, `Resolved`, `Won't Do`, `Cancelled`
|
|
- Add `DbSet` entries and module configuration to `AppDbContext`.
|
|
- Capture reporter id, reporter display fields, submitted route, browser metadata, viewport size, app version if available, and optional workspace/client/project/content context.
|
|
- Add API endpoints for:
|
|
- submit feedback
|
|
- list current user's feedback
|
|
- get current user's feedback detail
|
|
- list all feedback for `Developer`
|
|
- get feedback detail for `Developer`
|
|
- update feedback type/status/tags for `Developer`
|
|
- cancel own feedback with optional reason
|
|
- list previously used tags for `Developer`
|
|
- Enforce access rules:
|
|
- authenticated users can submit feedback
|
|
- reporters can view only their own feedback
|
|
- developers can view all feedback
|
|
- only developers can update type/status/tags
|
|
- reporters can only move their own non-final report to `Cancelled`
|
|
- Keep assignment, priority, severity, duplicate linking, and deletion out of scope.
|
|
|
|
## Likely Files
|
|
|
|
- `backend/src/Socialize.Api/Modules/Identity/Contracts/KnownRoles.cs`
|
|
- `backend/src/Socialize.Api/Modules/Identity/DependencyInjection.cs`
|
|
- `backend/src/Socialize.Api/Data/AppDbContext.cs`
|
|
- `backend/src/Socialize.Api/Modules/Feedback/**`
|
|
- `backend/tests/Socialize.Tests/**`
|
|
|
|
## Notes
|
|
|
|
- Use FastEndpoints handlers and keep request/response records near their handlers unless local module patterns suggest otherwise.
|
|
- Use FluentValidation for non-trivial inputs.
|
|
- Treat feedback as global SaaS operator data, not workspace-owned workflow data.
|
|
- Tags are free-form but should be normalized enough to support search/filter suggestions later.
|
|
|
|
## Validation
|
|
|
|
```bash
|
|
dotnet build backend/Socialize.slnx
|
|
dotnet test backend/Socialize.slnx
|
|
```
|
|
|
|
## Done When
|
|
|
|
- [ ] `Developer` role exists and is seeded.
|
|
- [ ] Feedback reports can be submitted by authenticated users.
|
|
- [ ] Reporters can list and view only their own feedback.
|
|
- [ ] Developers can list and view all feedback.
|
|
- [ ] Developers can update type, status, and tags.
|
|
- [ ] Reporters can cancel their own feedback with an optional reason.
|
|
- [ ] Backend validation rejects invalid type/status transitions and missing descriptions.
|
|
- [ ] Backend tests cover access rules and core transitions.
|